Azure Lei Zhang的博客

weibo: LeiZhang的微博/QQ: 185165016/QQ群:319036205/邮箱:leizhang1984@outlook.com/TeL:139-161-22926

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  390 随笔 :: 0 文章 :: 394 评论 :: 0 引用

  Windows Azure Platform 系列文章目录

   

  Update: 2015-03-24

  如果用户基于某个地缘组,创建了虚拟机网络。那么加入这个虚拟网络的所有虚拟机,都不支持Reserved Virtual IP Address(固定公网IP)。

  At this moment, Microsoft Azure doesn’t support deploying a Cloud Service or Virtual Machine associated with a Reserved IP into an ‘Affinity Group based Virtual Network’. The following snippet shows a sample error message that you will get when to try to deploy a Virtual Machine deployment with Reserved IP into an ‘Affinity Group based VNET’.

  New-AzureVM : BadRequest : The deployment contains VirtualNetwork DemoVNET that belongs to an Affinity Group and ReservedIP that belongs to a region. This combination is not allowed.

  http://azure.microsoft.com/blog/2014/05/14/reserved-ip-addresses/

 

  笔者建议大家最近在使用Azure的时候,都不要使用地缘组(Affinity Groups)

  如果读者已经使用了地缘组创建了Virtual Network虚拟网络,可以参考我另外写的blog:

  Windows Azure Affinity Groups (3) 修改虚拟网络地缘组(Affinity Group)的配置

 

 

  今天在和同事一起聊天的时候,谈到了Windows Azure Affinity Groups (地缘组)的一些问题。

  原本我一直以为Windows Azure Affinity Groups只是给数据中心的区域,起一个别名而已。比如我选择"东亚"的数据中心,我可以给这个数据中心创建地缘组,比如起名叫"Hong Kong"。那将来我在创建其他托管服务的时候,就直接用Hong Kong来替代(不需要再选择"东亚"这个数据中心)。

  但是我同事严肃地指出:我的这一认识是完全错误的!!!想到网上有那么多朋友看过我的博文,我想有必要再写一篇关于Windows Azure Affinity Groups的文章,来详细阐述微软为什么要创建这一机制。

  我们知道微软在全世界有8大数据中心(美国4个,欧洲2个,亚洲2个)。每一个数据中心都由若干个"容器"组成,"容器"的内部是集群(cluster)和机架(rack)。每一个容器都有特定的服务,比如计算和存储,SQL Azure和服务总线(Service Bus),访问控制服务(Access Control Service)等等。这些"容器"遍布在Windows Azure数据中心,每一次我们创建/更新托管服务的时候,Fabric Controller可以将我们的解决方案部署到整个数据中心上。

  但是,我们在创建托管服务时候,要注意到这一点:如果我们首先在"North Central US"创建一个新的托管服务,然后在"East Asia"(东亚)创建Storage Account(存储账户)。那这个Azure托管服务会遇到如下问题:

  • 服务响应慢:因为运算在美国,数据则放在东亚。网络传输会有延时。
  • 额外的费用:因为在两个不同的DataCenter之间会有数据传输,这会产生额外的费用。

  我们能想到是,在同一个数据中心创建托管服务和存储账户。

  但是,即使我们选择了同一个数据中心,也会出现另外一个问题:可能托管服务所在的物理位置是整个数据中心的靠中心的机器上,而存储账户则在数据中心的外围。在数据中心内部还是存在着网络延时。最好的情况是,我们将托管服务和存储账户放在同一个集群/机架上,这样可以让网络延时最小。如何实现这一功能呢?你可以使用Windows Azure Affinity Groups。

  Affinity Groups是告诉Windows Azure Fabric Controller,Compute(计算)和Storage(存储)应该屋里位置上是非常接近,并且放在一起的。这样Fabric Controller就可以在Container里搜索,让两者放在同一个集群(Cluster)上,使他们尽可能接近,并且减少延时,提高了性能。

  总的来说,Affinity Groups可以提供以下功能:

  • 聚集:因为Affinity Groups可以聚集我们的Compute和Storage。让Fabric Controller将两者放在同一个数据中心比较接近的位置上,甚至是同一集群上。
  • 减少延时:因为放在比较接近的位置上,当计算节点需要访问存储的时候,就可以得到更好的延迟,提高了性能。
  • 降低了成本:因为我们使用了Affinity Groups,就会避免随意选择数据中心部署的情况。而且因为部署的Compute和Storage都在同一数据中心,就无需为跨DataCenter产生的流量付额外的费用了。

  基于以上三个原因,我们要记得在刚开始使用Windows Azure,就应该使用Affinity Groups。因为一旦我们在没有采用Affinity Groups,部署完托管服务和存储账户之后,回过头来再想重新使用Affinity Groups就不可能了。

 

  

posted on 2012-07-09 17:47 Lei Zhang的博客 阅读(...) 评论(...) 编辑 收藏