深入了解 Windows Azure

规模化运行任何的工作量

Bruno Terkaly
Ricardo Villalobos

 

我从未想过在微软工作时会写一篇关于 Linux 的文章。“永不言弃”之箴言已得到实践证明,在此我要让您知道,运行云端和基于 Linux 的工作量提供了一些强大功能。

术语

在开始之前,我们来谈谈术语。Windows Azure 虚拟机是一台您可进行控制和管理的云服务器。在 Windows Azure 中创建一台虚拟机后,您可以在需要时删除和重新创建,也可像对办公室服务器一样访问这台虚拟机。使用虚拟硬盘(VHD)文件创建虚拟机。在本月专栏中,我创建的服务器是一台 Linux 服务器。Linux 服务器的虚拟机通常简称 VM。

价值主张:运行任何工作量

理解“能够部署基于 Linux 的应用程序”的价值主张很重要。这意味着您现在能在微软八个全球数据中心的任何一个中心运行世界上几乎所有的工作量。微软有四个数据中心在美国,两个在欧洲,两个在亚洲。在云端运行基于 Linux 的工作量还提供按需扩展,让您能随意增加(减小)所部署的工作量实例数量。通过利用门户创建另一实例可再次使用您先前创建的虚拟机。您可用 Windows PowerShell 和其他脚本工具自动完成这一过程。

支持 IaaS

云端托管虚拟机是支持“基础架构即服务(IaaS)”的基石。云计算的这一“分支”使开发人员几乎能部署一切。灵活性几无限制,开发人员可以直接连接到一个基于 Linux 的虚拟机并向虚拟机配置本地所有的一切。

选择分布版本

Microsoft 的 IaaS 产品支持 Linux 和 Windows。Windows Azure 直接支持多种 Linux 操作系统,如 CentOS、SUSE、openSUSE 和 Ubuntu,请参见 图 1。在这些版本基础上,您还可以创建自定义图像并在需要另外扩展时再次使用。您也可以下载这些虚拟机并在本地运行(如适用)。虚拟机便于携带,独立配置。运行 SUSE 的另一个优点是,它可以用安全补丁、bug 修复和新特性自动更新已部署的虚拟机。

Linux distributions supported by Windows Azure
图1 Windows Azure 支持的 Linux 分布

持久虚拟机

一旦部署完成,这些虚拟机则为持久型,意味着您可以添加重启后仍存在的软件和功能。这一功能非常重要,可以允许您从本地或云端或同时从本地和云端优化和调整 Linux 部署并进行扩展运行。您可以自由添加任何开源软件。例如,您可以对中间件使用 JBoss,若需要通讯录管理系统,您也可以选择 WordPress 或 Drupal。可能您当前支持用 Tomcat (类似 Servlets) 或 MySQL 进行数据存储。我已记录了在 Azure 安装 Linux (openSUSE) 操作系统的整个过程,包括 Apache、MySQL 和 Drupal,可浏览 我的博客

登录

创建一台虚拟机,然后登录。PuTTY 之类的开源包允许您从 Windows 或 Mac 设备远程登录到您的 Linux 服务器,并执行任何需要进行的任务。您可以从 这里下载用于 Windows 的 PuTTY。如果您正在使用一台运行 Linux 操作系统的计算机,您可能要使用 SSH (Secure Shell) 客户端 (OpenSSH) 远程登录到 Microsoft 数据中心虚拟机。

责任和限制

作为开发人员,您对 IaaS 肩负更多责任,必须安装所有必要的组件,如 Web 服务器、数据库、编程运行时环境 (Java, .NET) 等。与“平台即服务(PaaS)”和“软件即服务(SaaS)”相比,配置构成“基础架构即服务(IaaS)”安装的虚拟机耗时更长,但在虚拟机配置和部署方式上灵活性更大。

有若干限制。例如,暴露的端点数量被限制在最多 25 个,每次云端服务的虚拟机数量最多 20 台。首次进行 Linux 安装时,已将连接限制到 Management Portal 规定的端口。唯一允许端口默认是 SSH。可通过在 Management Portal 添加规则打开 Linux VM 其它端口的通道。

openSUSE

openSUSE 分布可向基础操作系统轻松添加各种功能。内置实用工具 YAST (另一种安装工具) 提供基于文本的用户界面,可让您部署Apache、PHP(超文本预处理器)、MySQL、Drupal 等。如果您想为整个过程编写脚本,它甚至可提供命令行版 YAST。

硬件

您也可以从几种硬件配置中选择,从单核 1-GHz CPU 到配备 14 GB RAM的 8 通道 1.6-GHz CPU。当然,价格根据您需要的硬件性能决定。一般情况下,横向扩展优于纵向扩展,即通常托管几台小型虚拟机比托管一两台大型虚拟机要好。横向扩展时应用程序的容错能力更大。Windows Azure 承诺几乎无限制的扩展,让您能同时托管多达 20 台虚拟机。

基于 Linux 的 IDE 支持

基于 Linux 的部分 IDE 开始直接支持 Windows Azure。您可以直接从 SUSE Studio IDE 部署到 Windows Azure。开发人员不必担忧虚拟机图像或与 Windows Azure Portal 一起使用。相反,在将应用程序部署到 Windows Azure 云之前,您可以在 SUSE Studio IDE 输入 Windows Azure ID,让 SUSE Studio IDE 执行部署或升级。

弥合与 Hyper-V 的差距

用于需要弥合本地和云部署之间差距的企业,Hyper-V 是基于 Windows 的监督程序,目前与 Linux 协作得非常好。Hyper-V 是允许多个操作系统同时运行在本地或微软数据中心同一硬件上的虚拟机管理器 (VMM)。

Hyper-V 极大地简化了连接所有这些不同平台和技术的能力,使 Windows Azure 成为运行应用程序(不论平台或技术)的最佳场所。企业越来越多地运用 Windows Azure 和云计算,解决互操作性问题的需求也日渐增加。Hyper-V 对运行混源 IT 环境的公司来说是一大福音。

了解更多

若要了解更多关于配置 Linux 系统的 Windows Azure,有大量资源提供。如前所述,可登录我的博客 文章,其中我提供了安装 openSUSE、Apache、PHP、MySQL 和 Drupal 的详细指导说明。

我也推荐下载 Windows Azure Platform Training Kit,下载地址是 这里。培训工具包有很多使用 Windows Azure 和 Linux 的详细说明。例如,其中一个培训包实验室指导您在 Windows Azure 上运行的 Linux 虚拟机上安装和配置 MongoDB 服务器全过程。MongoDB 是一个面向文档的 NoSQL 数据库,便于开发和扩展,特别强调互联网应用和基础架构。该实验室还指导您创建一个 Node.js Web 应用程序,连接到 Linux 虚拟机上运行的 MongoDB 服务器。您可通过使用 Git 将 Node.js Web 应用程序发布到云端。最后,您可在 这里 下载 GitHub,其中有大量内容描述了增强对 Linux 和 Mac 桌面的支持。

采用 Windows Azure,Microsoft 拥有了最全面的可用云产品。Windows Azure平台正变得强大、灵活和易于使用。

Bruno Terkaly*  *是 Microsoft 的开发推广人员。他的知识深度来源于多年来相关领域以及使用大量平台、语言、框架、SDK、库和 API 编写代码的经验。他不辞辛苦,就有关构建基于云的应用程序(特别是使用 Windows Azure 平台)编写代码、发布博客并给予现场演示。

Ricardo Villalobos 是一名资深的软件设计师,具有 15 年为供应链管理行业设计和创建应用程序的经验。他持有多个技术证书,并获得了达拉斯大学供应链管理专业的 MBA 学位。他现任 Microsoft Windows Azure 开发推广人员。