日期:2014-05-16  浏览次数:20697 次

将您的 Linux 应用程序迁移到 Amazon 云,第 1 部分: 初始迁移

如何将您的应用程序迁移到云中

Sean A. Walberg, 高级网络工程师

?

简介:?云计算和基础设施即服务(Infrastructure as a Service,IaaS)的相关文档非常丰富,但关于如何将一个正在运行的应用程序迁移到一个云环境的讨论却凤毛麟角。本文将讨论如何将一个应用程序迁移到云中,以及如何利用这个设置提供的特性。

<!-- <p class="ibm-no-print"> <div id="dw-tag-this" class="ibm-no-print"></div> <div id="interestShow" class="ibm-no-print"></div> </p> -->

?

标记本文!

?

发布日期:?2010 年 8 月 02 日
级别:?中级 其他语言版本:?英文
访问情况?4837 次浏览
建议:?0?(添加评论) <!-- Rating_Area_Begin --><!-- Ensure that div id is based on input id and ends with -widget -->

1 star2 stars3 stars4 stars5 stars 平均分 (共 10 个评分 )

?

基础设施即服务(Infrastructure as a Service,IaaS)是一个极好的概念:您使用计算资源并支付费用。需要的资源越多,支付的费用也就越高。这个模式的不足之处在于,您看不到正在使用的计算机,您对那些计算机真的知之甚少。但一旦克服这一点,使用 IaaS 可以带来很多好处。

由于 IaaS 模式与传统的购买服务器的模式差别很大,因此您管理您的虚拟计算机的方法也随之发生改变。这还意味着,您在云中运行应用程序的方式也发生了改变。以前想当然的东西,比如服务器之间无足轻重的延迟,现在不再理所当然。

本系列文章将跟随一个 Web 应用程序从一个单一物理服务器到 Amazon Elastic Compute Cloud (Amazon EC2) 的迁移过程。途中,您将了解如何调整您的应用程序以适应云环境,以及如何利用云提供的特性。首先,您将看到从一个物理服务器到一个云服务器的直接迁移。

使用 Amazon EC2

Amazon EC2 允许拥有信用卡的任何人按小时支付服务器费用,通过一个应用程序编程接口(API)来打开和关闭服务器。您可以选择各种各样的服务器 — 取决于您的主要考虑因素是内存、磁盘还是 CPU — 以及从永久性磁盘到负载平衡器的一套附件。您只需为使用的资源付费,这使得 Amazon 服务成为您的应用程序的一个颇具吸引力的选择。

与 Amazon EC2 产品一起提供的还有其他一些服务,它们向您提供付款处理、数据库和消息排队等功能。在本文中,您将使用 Amazon Simple Storage Service (Amazon S3),该服务基于即用即付模式提供磁盘空间访问。


应用程序

本系列用作示例的 Web 应用程序是一个称为 SmallPayroll.ca 的工资表服务,使用 Ruby on Rails 框架和一个 PostgreSQL 后端编写。它是一个典型的 Web 应用程序:拥有一个数据库层、一个应用程序层、以及一组静态文件,比如层叠样式表(CSS)和 JavaScript 文件。用户导航各种表单以输入和操作数据,这些表单将用于生成报告。

使用的各种组件是:

  • Nginx。静态文件和中间层的平衡器的前端 Web 服务器。
  • Mongrel。应用程序服务器本身。
  • Ruby。用于编写应用程序的语言。
  • Gems。您将使用第三方插件和库完成从数据库加密到应用程序级别监控的所有任务。
  • PostgreSQL。Structured Query Language 数据库引擎。

站点的使用已经超越了现在托管该站点的单个服务器的能力。因此,需要迁移到一个新环境,这是迁移到云的最好时机。

理想的改进

从一个服务器迁移到基于云的少量服务器不能自动利用云的功能,也不会达到令人兴奋的读取效果。在迁移过程中,您需要进行一些改进,有些改进只有在云环境中才可能实现:

  • 提高的可靠性。由于可以选择在云中运行的服务器的大小,因此可运行多个小服务器以留取冗余空间。
  • 上下缩放能力。随着服务增长,服务器也逐渐被添加到池。但是,服务器的数量也可以增加以应对短期流量剧增,或在一定的间歇期间减少。
  • 云存储。应用程序数据备份将使用 Amazon S3 完成,消除了磁带存储的必要性。
  • 自动化。Amazon 环境中任何事物 — 从服务器到存储再到负载平衡器 — 都可以自动化。管理应用程序需要的时间更少,这意味着可以花费在其他生产力更高的任务上的时间更多。

在本系列中,您将逐渐实现这些改进。