云计算里AWS和Azure的探究(4)
——Amazon EC2 和 Windows Azure Virtual Machine
接下来我们来看看Azure VM的创建。Azure里面虚拟机的创建跟AWS比就要简单许多了,配置的东西比较少,创建的过程也相对短一些。
创建虚拟机
首先进入Azure的Management Portal
点击下面的新建按钮,选择计算->虚拟机->从库中创建
这里创建的方式和Amazon一样,也是向导。向导的界面更显得现代化一点。第一步是选择操作系统,主要包含Windows Server 2008/2012,OpenLogic CentOS, SUSE Linux和Ubuntu,当然还有BizTalk Server 2013和SQL Server 2012。
我们这里选择Windows Server 2012。下一步是输入虚拟机的机器名,用户名在Windows下默认就是Administrator,输入机器的密码。最后是选择实例的类型,也就是超小,小,中,大和超大。我们和AWS一样选择中等。
接下去是选择机器的类型,是单独的虚拟机,还是连接到一个已经存在的虚拟机。在windows azure里面,有一个Cloud Service的概念,一个cloud service有一个公共的dns名字,你可以为每一台虚拟机创建一个新的cloud service,也可以把多个虚拟机放在同一个cloud service里面,通过负载均衡来访问。DNS名字是这个cloud service公开的名字,可以用于全局的访问,当然也必须是唯一的。存储账户可以创建新的,也可以用现存的,它是用于存放虚拟机的系统盘镜像盘的文件,也就是vhd文件的位置。存储账户的概念我们会在以后比较S3和Azure Storage Account的时候进一步描述。接下来是区域/地缘组/和虚拟网络。这里有几个概念,首先区域就是我们之前讨论过的Azure的数据中心的区域,主要现在有六个,很快在*会有第七个。地缘组Affinity Group和AWS里面的Available Zone想类似,也是保证机器在某一个相同的机房里。所不同的是AWS预先定义了所有的AZ,而Azure的AG名字是可以自己定义的,能保证在同一个机房但是不保证在什么位置。最后是虚拟网络,虚拟网络是Azure中网络配置的一个概念,能够将不同的虚拟机放在不同的子网定义中,还可以通过VPN来构造混合云。所以这里也可以定义把这台虚拟机放到哪个虚拟网络中。如果选择虚拟网络,还需要选择相应的子网,选择区域和地缘组则不需要。如下图
最后一步是创建一个新的地缘组,或者选择已有的地缘组。这里我们选择None。
最后点击完成,Azure就会自动帮你创建这台机器了。这个时候下方会出现创建的状态,等待10分钟左右,机器就会自动创建完成。
创建完成之后,选中这台机器,下面就会有各种操作的按钮,例如连接,启动,关闭,附加新磁盘,捕获镜像,删除等等。对于连接,启动,添加新磁盘等我们接下去会讨论,而捕获镜像我们会在以后的章节中说明。
机器
首先,第一个按钮就是连接,当点击connect的时候,同样会自动下载一个rdp文件远程连接服务器,所不同的是由于刚才手工设置了密码,所以不需要像amaozn一样通过一个pem文件来解密私钥。这台机器的名字是hotcanazuresample.cloudapp.net。azure并没有通过一个公共ip来设置DNS名字,而是让用户自己选了一个dns名字来访问,这个名字是不会变的,也不需要使用Elastic IP来绑定到这台服务器上。如果需要用自己的域名,可以直接用一个CName记录来链接到这个自定义的全局dns。
我们可以看到相类似的,右边也有一个公共的ip,这个公共的ip也可能会出现变化,所以千万不要把自己域名的a记录绑定到这个ip。
连接上机器以后,我们同样来看看这台机器的硬件配置:
类似的,这台机器是AMD Opteron处理器4171HE,2.1GHz, 3.5G内存。和AWS不同,在存储上,它有一个30G的系统盘,还有一个134G的临时存储的盘,这个临时存储的盘可以用于存放一些临时的数据。千万要注意,这个盘上的数据不是持久化的,所以如果需要对这个盘上的数据进行持久保存,还需要挂一个新的磁盘上去,而不是放在这个D盘上。
有趣的是,这台机器还带一个软盘和一个光驱,不过这个软件和光驱怎么用,我就不是很清楚了,莫非要冲到Azure的机房里面去塞光盘?不知道Azure是不是支持这个服务。
创建新卷
为了让系统有持久化的存储,我们可以点击管理界面里的Attach按钮,挂载一块新的磁盘到Windows上。
首先这个vhd文件会自动被放在和这台机器的系统盘在同一个storage account下面,文件名也会自动生成好,大小可以从1 – 1023GB之间选择。最后的Host Cache定义了这个磁盘的缓存特性,包括没有缓存,只读缓存或者读写缓存。默认是没有,要注意如果那个读写缓存,容易导致磁盘上数据的丢失。这是因为如果数据只写入到磁盘缓存而没有真正写到磁盘中的时候,如果恰巧那台机器所在的物理机出现问题被关机,或者需要升级被关机,这些还没有写入的数据就会丢失。但是如果一直不使用缓存,又会出现性能的问题。
在这一点上AWS就做得更好一些,AWS支持设置IOPS来解决磁盘的性能问题,会把磁盘的读写分配在不同的存储设备上,而Azure在这里还不支持。
当创建完磁盘之后,windows里面相应地也会出现新的磁盘,用户可以直接使用。这里和AWS稍微有点区别的是,在磁盘刚创建好的时候,AWS是offline的,而Azure是直接online的。
由于F盘存放在storage account里面,所以这些数据是持久耐用的。所有需要的数据都可以放在F盘上。
端点(Endpoint)
在创建Azure虚拟机的时候,我不知道大家有没有注意到我们并没有直接在向导中配置防火墙,这是因为这一步并没有被直接包含在Azure VM创建向导中,但是我们仍然需要对这台机器创建端点,让外面的机器可以访问。默认地,Azure为Windows也创建了一个用于远程连接的3389端口。
我们点击Endpoint标签,添加一个新的Endpoint
点击添加Endpoint:
这里主要有2个选项,一个是普通的endpoint,另外一个叫负载均衡endpoint,呆会我们会来讲解,首先选择添加端点。这里要输入名字,选择协议,定义外部端口和内部端口,我们应为是要打开80端口,所以选择tcp,内外都是80。
点击完成,当创建完了之后,我们就有了一个80端口可以访问了。要注意,这里的端点相当于是路由器上的端口映射,有的时候在Windows机器里还需要打开相应的防火墙。
负载均衡端点
和AWS不同的是,Azure是使用一个叫做负载均衡端点的东西来实现负载均衡的。但是首先,我们需要在同一个Cloud Service里面创建一台新的机器。在创建的时候,选择连接到一个已经存在的虚拟机。
我们这里选择连接到刚才的那台机器,等待机器创建完成以后,依然是到Endpoint这个tab上去添加一个新的端点。这次我们选择的是负载均衡端点,选择刚才的http-80。
给这个endpoint再起个名字,是http2,内部端口还是80。这里我们可以看出,对于load balance endpoint,外部只有一个端口,而内部可以配置不同的端口。但是这只是一个非常简单的负载均衡,和AWS提供的配置比起来,这个负载均衡非常简单。
注意这里有个management portal的小bug,这个负载均衡的名字不要和刚才的负载均衡名字相同,否则会创建不出来,也不报错。
我们打开endpoint的属性,可以看到这是一个load balance的endpoint,虚拟机有2台,包括了我刚才创建的两台机器,而在整体的界面上,也有Load-Balanced = Yes的显示。
在Azure上创建虚拟机的配置和AWS大体相同,向导更简单一些,也更易用一些。但是提供的功能局限,尤其是Load balance,在使用和配置上非常简单。如果对于通常的使用基本足够,但是要配置高级的LB,还显得远远不足。当然Azure的虚拟机现在还在preview阶段,希望在正式发布的时候,LB的功能可以获得增强。