微信号:infoqchina

介绍:有内容的技术社区媒体

【官方教程】使用Windows Azure的十大注意事项

2015-01-25 11:32 InfoQ


项目在本地运行, 与发布到云端相比, 肯定存在一些区别. 那应该防止出现一些不必要的问题呢?


1. 费用


在使用Windows Azure 服务期间,您预留的联系人邮箱将每周收到剩余金额及有效期的提醒邮件。您也可以随时登陆计费网站查看剩余金额及有效期,建议您根据实际使用量进行评估,预留充足的余额。


2. 虚拟机中的数据存储


Azure上的虚拟机上有两种磁盘,一种是存储在Blob存储,是永久性稳定的存储空间,一种是存储在虚拟机所在物理机磁盘上,是临时存储空间。前一种由于使用了Blob存储,其数据会按照Blob的存储策略在本地存3份,并在异地保持一份镜像,其数据的可用性和可靠性都很高,虚拟机通过网络访问这些Blob存储,不依赖于特定一台物理机。后一种依赖于物理机,如果物理机故障或进行维护,这个存储可能会被清空。那么,如果使用虚拟机的时候不分清楚磁盘类型,就会导致数据丢失。于此,强烈建议不要将任何重要数据存在D盘。因为D盘是临时存储,虚拟机重启时D盘数据将被清除且不可恢复。如果需要将数据存储到虚拟机上,建议附加一个数据盘,将数据存在数据盘上。


Azure不同类型的虚拟机的磁盘类型如下:


Windows虚拟机:C盘(系统盘)是Blob盘,D盘是临时盘


Linux磁盘:sda1(根目录)是Blob盘,sdb1(/mnt/resource)是临时盘


3. Load balance 环境


Azure网站、云服务和虚拟机都具有负载均衡功能。对负载均衡,需要注意的方面之一是它对Session的处理。传统的负载均衡器有具有Session sticky的机制,会根据用户的session信息将用户请求转发到固定的一台机器上,当应用程序在服务器端存储session信息,客户端与服务器交互就会顺畅,如果没有这个机制,就会发生用户session丢失和应用逻辑异常。然而在Azure中,云服务和虚拟机的负载均衡器是纯网络层面,其负载均衡机制是通过类似轮询将请求发送给后端的服务器,这就要求后台服务器是无状态的,也就是说, 期望的结果是无论将客户请求发给任何一台服务器,都可以得到正确的处理。如果现有的应用是有状态的,有两种解决方案:


将session信息在所有服务器间共享。具体实现方式包括:分布式缓存,session持久化(.NET和Java都支持用数据库存储session信息,而Azure还支持用Cache和Azure存储持久化.NET session信息


在虚拟机上自行配置负载均衡集群。微软的MSOpenTech团队提供了一个自动配置IIS ARR的方法,可参考该文档 


网站服务的负载均衡稍有不同,它的负载均衡是由IIS ARR实现,因此它原生支持session粘滞。其实现原理是,在每个响应里面添加ARRAffinity这个cookie,下次同一个用户的请求就会被识别,然后发送到上次的服务器上。可以理解为无论应用是否主动写入cookie或是存取session,IIS都会为每个用户保持服务器的绑定关系。


4.请问SSD存储有什么突出优势?


微软发布了一个新的虚拟机系列,称为D-系列。它提供了更好的内存、CPU及更快的I/O。在云上运行像OLTP和NoSQL数据库这种I/O密集型工作负载时,客户经常会发现性能限制。与基于磁性介质的传统存储相比,SSD存储提供了更高的IOPS。新的D-系列虚拟机比A-系列虚拟机快60%。这个系列的虚拟机提供了高性能和高可扩展性。


5.公共IP和实例级别IP的区别?


公共IP(VIP)

这种IP是针对VM所在的云服务的公共IP。在Azure中,每个VM包含在云服务(Cloud Service)中,而Cloud Service存在load balance (负载均衡)。对于一个云服务中的虚拟机来说,当使用VIP去访问云服务时,负载均衡器会根据端口将我们导向不同的虚拟机 (如果想访问其中的虚拟机, 使用vip+port即可)。可以通过MSDN文档了解更多详情(http://msdn.microsoft.com/zh-cn/library/azure/dn690120.aspx )。

实例级IP

这种IP(http://msdn.microsoft.com/zh-cn/library/azure/dn690118.aspx)是直接指派给虚拟机,可以直接通过这种IP连接至VM,同时可以开启多个端口和使用动态端口。


6. 针对保留 IP 地址的计费时钟何时开始和停止?


针对保留IP地址的计费时钟将从获取保留IP地址后的第2个小时开始,以便留出时间来相应分配IP地址。在删除保留IP地址后计费时钟将停止。


7. 如何保证SLA?


当在不同的故障域和升级域中部署两个或更多角色实例时,面向 Internet 的角色将至少在 99.95% 的时间内能够建立外部连接。详情参考SLA详情(http://www.windowsazure.cn/zh-cn/support/legal/sla/)和Azure的更新域和故障域的详细信息(http://msdn.microsoft.com/zh-cn/magazine/hh781019.aspx )。


8. 关于Azure Storage


在构建应用程序的过程中,常常也要考虑存储成本,以下是大家会感兴趣的关于存储服务的带宽、事务和容量这三种存储成本以及收费方式( http://blog.csdn.net/azurechina/article/details/40377091)。


9.有效的诊断信息


当发布在云端的应用程序出现问题时, 项目的诊断信息和托管服务器上的诊断信息将有助于了解问题出现的原因, 详情可以参考:http://msdn.microsoft.com/zh-cn/magazine/ff714589.aspx


10.各种服务的最佳实践


请点击“阅读原文”,访问我们的Windows Azure专区,查看更多最佳实践的案例。


 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 杭州是个什么样的城市 美国居然有一家不烧钱的视频网站 《近匠》环信:标准化即时通讯与未来社交构想 Android相机开发那些坑 Python工具分析风险数据【岂安低调分享】