Azure部署基于开源软件的应用系统指南

前言

Microsoft Azure 是微软公有云解决方案。目前,Azure支持IaaS、PaaS到SaaS服务,让用户可以选择最合适的方式来部署和发布应用。其中Azure对IaaS的支持主要是虚拟机,PaaS的支持则包括云服务、SQL数据库等,同时提供了诸如虚拟网络、存储服务等多种的云端基础服务。

Azure一个开放的平台,除了对于微软自身的解决方案,如Windows服务器和SQL Server的支持外,Azure也支持应用开源软件和框架来构建云端应用系统,本文将讨论如何基于Azure的服务将一个基于开源软件的系统迁移到Microsoft Azure平台。

在Azure中部署Linux服务器

Azure通过虚拟机服务的方式提供对基于Linux的服务器支持,目前支持以下四种主流类型的Linux操作系统:UBUNTU Server、COREOS、CENTOS及SUSE。见下图:

在Azure中部署Linux服务器的步骤简单明了,只要选择从库中创建,并选择相应的Linux服务器镜像进行部署即可。通过Azure Powershell,可以方便的管理虚拟机,同时,Azure也提供通过SSH直接连接至Linux服务器对服务器进行管理。

在部署Linux服务器时,有以下两点需要注意:

1. Linux虚拟机的临时磁盘

在Azure中部署的每台虚拟机都会附带一块用于临时存储的磁盘,该磁盘读写速度很高,它在虚拟机的宿主机上而不是位于Azure的永久存储设备。该磁盘可以用于存储临时的数据,虚拟机重启后,数据将会丢失,因此用户一定要注意永久存储的数据不能存到该磁盘。在Linux的虚拟机中,该磁盘为/dev/sdb1,挂载在/mnt目录下:

2. Linux的交换分区

在Linux中配置Swap分区可用用于内存分页内容转移,为系统腾出更多物理内存空间。但是在Azure上通过镜像库创建的Linux虚拟机默认情况下是不分配任何交换分区的,见下图:

通常情况下,Swap分区的位置及大小根据客户的应用场景决定,因此Azure并没有自动创建Swap分区。用户需要自主创建该分区。

在Azure中应用Tomcat

在Azure上部署Tomcat可以通过创建Linux虚机,并把Tomcat安装到该虚机中;或者使用Azure提供的Tomcat部署工具,将网站应用部署为云服务。Azure提供了在Eclipse中进行Azure开发的工具:Azure Toolkit for Eclipse,利用该工具可以在Eclipse开发环境中很方便的创建、开发、测试和部署基于Azure的应用服务。Azure Toolkit for Eclipse是开源的,托管在Github上:https://github.com/MSOpenTech/WindowsAzureToolkitForEclipseWithJava

关于如何应用Azure Toolkit for Eclipse,请参考这个系列的文档:https://msdn.microsoft.com/library/azure/hh694271.aspx ,在此不再详细叙述。

在Azure中使用My SQL

目前在全球版及中国版的Azure中均提供了使用My SQL的两种方式:IaaS和PaaS。IaaS可以通过创建Linux的虚拟机,在虚拟机直接安装MySQL服务器。在虚拟机中执行命令“chkconfig –list mysql”可以将MySQL进程添加至虚机的启动进程中,这样在虚机重启时,MySQL服务会自动启动。

对于PaaS的方式,Azure提供了类似SQL Database的MySQL云数据库服务,客户可以直接使用,无需通过虚机的方式来部署,减少了许多开发和维护的成本。可以通过这个文档了解更多:https://www.windowsazure.cn/home/features/mysql/

使用Azure虚拟网络提高系统联网性能

在Azure中利用开源系统构建应用服务时,会更多的使用IaaS的方式,这时就需要在各个虚拟机之间达到高速的互联互通,以及需要与本地应用系统的连接。例如,安装了Apache服务器的Linux虚拟机需要与安装了MySQL服务器的Linux虚拟机进行联网,在这种情况下,我们更希望通过Azure提供的内部网络进行连接,而不用通过Internet。Azure提供了虚拟网络服务,通过将虚拟机部署到同一个虚拟网络中,可以实现虚拟机之间的无缝连接,并且提供了Point-to-Site和Site-to-Site的VPN连接设置,可以方便的将本地应用服务与云端系统进行连接。

部署在同一个虚拟网络中的所有虚拟机走的都是内网IP,关于虚拟网络的更多信息,可以参考这篇文档:https://www.windowsazure.cn/home/features/networking/

总结

本文提供在Azure中部署基于开源系统的应用服务的概率性描述,更多细节可通过微软Azure提供的文档。

 

Microsoft China Partner Team