玩转Windows Azure, 您可能不知道的秘密
将项目运行在本地, 相对将项目发布到云端, 必定存在一些区别. 那么我们需要注意哪些方面来防止一些不必要的问题出现呢?
1. 费用
https://www.windowsazure.cn/zh-cn/offers/ms-mc-azr-44p/
https://www.windowsazure.cn/pricing/overview/
在使用Windows Azure** 服务期间,您预留的联系人邮箱将每周收到剩余金额及有效期的提醒邮件。您也可以随时登陆计费网站查看剩余金额及有效期,建议您根据实际使用量进行评估,预留充足的余额。
2. 虚拟机中的数据存储
Azure上的虚拟机上有两种磁盘,一种是存储在Blob存储,是永久性稳定的存储空间,一种是存储在虚拟机所在物理机磁盘上,是临时存储空间。前一种由于使用了Blob存储,其数据会按照Blob的存储策略在本地存3份,并在异地保持一份镜像,其数据的可用性和可靠性都很高,虚拟机通过网络访问这些Blob存储,不依赖于特定一台物理机。后一种依赖于物理机,如果物理机故障或进行维护,这个存储可能会被清空。那么,如果我们使用虚拟机的时候不分清楚磁盘类型,就会导致数据丢失。于此,强烈建议不要将任何重要数据存在D盘。因为D盘是临时存储,虚拟机重启时D盘数据将被清除且不可恢复。 如果你需要将数据存储到虚拟机上,建议您附加一个数据盘,将数据存在数据盘上。
详情请参考:
https://msdn.microsoft.com/zh-cn/library/azure/dn790303.aspx
https://blog.csdn.net/azurechina/article/details/38664673
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信息(https://blogs.msdn.com/b/cie/archive/2013/05/17/session-state-management-in-windows-azure-web-roles.aspx )。
- 在虚拟机上自行配置负载均衡集群。微软的MSOpenTech团队提供了一个自动配置IIS ARR的方法,可参考该文档 ( Https://github.com/MSOpenTech/WindowsAzureToolkitForEclipseWithJava/tree/master/Utils/ARRConfigurationAgent)。
网站服务的负载均衡稍有不同,它的负载均衡是由IIS ARR实现,因此它原生支持session粘滞。其实现原理是,在每个响应里面添加ARRAffinity这个cookie,下次同一个用户的请求就会被识别,然后发送到上次的服务器上。可以理解为无论应用是否主动写入cookie或是存取session,IIS都会为每个用户保持服务器的绑定关系。您可以查阅以下文章获得详细内容
https://azure.microsoft.com/zh-cn/documentation/articles/web-sites-dotnet-session-state-caching/
4. 请问SSD存储有什么突出优势 ?
微软发布了一个新的虚拟机系列,称为D-系列。它提供了更好的内存、CPU及更快的I/O。在云上运行像OLTP和NoSQL数据库这种I/O密集型工作负载时,客户经常会发现性能限制。与基于磁性介质的传统存储相比,SSD存储提供了更高的IOPS。新的D-系列虚拟机比A-系列虚拟机快60%.这个系列的虚拟机提供了高性能和高可扩展性。
5. 公共IP和实例级别IP的区别?
1.公共IP(VIP)
这种IP是针对VM所在的云服务的公共IP。在Azure中,每个VM包含在云服务(Cloud Service)中,而Cloud Service存在load balance (负载均衡)。对于一个云服务中的虚拟机来说,当我们使用VIP去访问云服务时,负载均衡器会根据端口将我们导向不同的虚拟机 (如果我们想访问其中的虚拟机, 使用vip+port即可)。
您可以通过MSDN文档了解更多详情(https://msdn.microsoft.com/zh-cn/library/azure/dn690120.aspx )。
2.实例级IP
这种IP(https://msdn.microsoft.com/zh-cn/library/azure/dn690118.aspx)是直接指派给虚拟机,我们可以直接通过这种IP连接至VM,同时可以开启多个端口和使用动态端口。
6. 针对保留 IP 地址的计费时钟何时开始和停止?
针对保留 IP 地址的计费时钟将从您获取保留 IP 地址后的第 2 个小时开始,以便留出时间来相应分配 IP 地址。在您删除保留 IP 地址后计费时钟将停止。
7. 如何保证SLA ?
当您在不同的故障域和升级域中部署两个或更多角色实例时,面向 Internet 的角色将至少在 99.95% 的时间内能够建立外部连接。详情参考SLA详情(https://www.windowsazure.cn/zh-cn/support/legal/sla/)和Azure的更新域和故障域的详细信息(https://msdn.microsoft.com/zh-cn/magazine/hh781019.aspx )。
8. 关于Azure Storage
在构建我们的应用程序过程中,我们也常常考虑存储成本,以下是大家感兴趣的关于存储服务的带宽、事务和容量这三种存储成本以及收费方式( https://blog.csdn.net/azurechina/article/details/40377091 )。
9. 有效的诊断信息
当发布在云端的应用程序有问题出现, 项目的诊断信息和托管服务器上的诊断信息将帮助我们了解问题出现的原因, 详情请参考
https://msdn.microsoft.com/zh-cn/magazine/ff714589.aspx
10. 各种服务的最佳实践
云服务Cloud service的最佳实践案例:
https://technet.microsoft.com/zh-cn/magazine/jj717232.aspx
https://msdn.microsoft.com/library/azure/jj717232.aspx/
Azure website的最佳实践案例:
https://channel9.msdn.com/Shows/Azure-Friday/Azure-WebSites-Best-Practices
https://azure.microsoft.com/blog/2014/02/10/best-practices-windows-azure-websites-waws/
VM的最佳实践案例:
Azure storage的最佳实践案例:
https://channel9.msdn.com/Events/Build/2014/3-628
SQL Azure的最佳实践案例:
https://blogs.msdn.com/b/sqlcat/archive/2010/05/28/sql-azure-customer-best-practices.aspx
如果你有任何疑问, 欢迎访问MSDN社区,由专家来为您解答Windows Azure各种技术问题,或者拨打世纪互联客户服务热线 400-089-0365/010-84563652咨询各类服务信息。