《Windows Azure Platform 系列文章目录》

  这里有两个非常重要的概念:故障域(Fault Domain)和更新域(Update Domain)。

  http://blogs.technet.com/b/yungchou/archive/2011/05/16/window-azure-fault-domain-and-update-domain-explained-for-it-pros.aspx

  我们先说说故障域。先举个例子,笔者的书房有一个插线板,插线板上接了我的笔记本电脑,手机充电器,电视机等电器。如果这个插线板断电了,那这个插线板上的所有电器都会断电。这个插线板和上面的电器组成了一个故障域。

  Microsoft Azure数据中心基础设施由很多的RACK组成,每一个RACK都被称为故障域。当RACK出现硬件故障时候,在RACK上的服务,不管是 Azure的计算服务、存储服务等等都会宕机。

  当客户部署了2台 Azure Virtual Machine,但是没有设置可用性集的时候,Microsoft Azure可能会把这2个Azure Virtual Machine部署在同一个RACK上,这样就可能会出现单点故障。因为这1个RACK宕机了,上面运行的2个Azure Virtual Machine都会宕机。两个Azure Virtual Machine宕机的概率和一个Azure Virtual Machine的概率是一样。

  而设置了可用性集的情况下,Microsoft Azure就会把这2台Azure Virtual Machine部署在2个不同的RACK上。微软从数据中心底层设计上,可以保证这2个不同的RACK不会同时宕机。

  

  ===================================我是分隔符===========================================

  我这里模拟一下场景:

  Contoso公司已经采购了Azure服务,计划把现有托管在IDC的企业官网迁移到Azure云平台。该企业官网面向的用户群主要是华东地区的用户。

  该企业官网部署需要服务器列表如下:
  1. 1台AD服务器
  2. 1台Web服务器
  3. 1台SQL Server服务器

  在Microsoft Azure虚拟机中,用户也可以选择使用一台Azure Virtual Machine部署AD Server,一台Azure Virtual Machine部署Web Application,使用另一台Virtual Machine部署SQL Server。但是这样的场景是没有SLA保障的

  Microsoft Azure Virtual Machine承诺的99.95%的SLA是需要2台或者2台以上的Azure Virtual Machine同时运行,且所有的Virtual Machine都需要在同一个可用性集中。对于上面实例,用户如果想在Azure中实现99.95%的SLA,需要同时部署:
  1. 两台AD Server虚拟机,放在同一个可用性集A中。
  2. 两台Web Server虚拟机,放在另外一个可用性集B中。
  3. 两台SQL Server 虚拟机,采用SQL Server 2012 Enterprise提供的Always-On功能,实现High Availability。且SQL Server所在的Virtual Machine需要在另外一个可用性集C中。
  4. 将具有相同功能的多台VM放置在同一个可用性集下。

  这边还需要强调一下:
  1. 可用性集A中的两台AD Server中的内容配置必须完全一致,并且需要进行AD的同步。
  2. 可用性集B中的两台Web Server中的网站在部署的时候,内容必须完全一致。
  3. 可用性集C中的两台SQL Server必须配置SQL Server Always-On或者SQL Mirroring,保证数据库之间的日志同步

  

  对于DB Server,比如SQL Server或者MySQL,需要在两台DB Server进行日志同步:
  1. SQL Server需要在两台VM配置Always-On或者SQL Mirroring,使用日志同步
  2. My SQL可以配置Master-Slave,使用Replication进行复制。
  3. 这样的目的是保证在其中一台Server宕机的情况下,另外一台Server可以正常运行,因为配置了日志同步,可以保证日志不会丢。
  4. 另外还要强调一下,客户端如果调用SQL Server服务的时候,需要正确配置AG Listener,这样保证在一台SQL Server宕机的情况下,AG Listener可以将请求自动发送到另外一台SQL Server上。

  

  然后我们谈谈更新域。比如我有2台Azure Virtual Machine做了负载均衡,名称为VM1和VM2,都部署了我的Web Application,版本为1.0,他们部署在不同的更新域Update Domain中。将来我的软件版本做了更新,升级到了2.0版本,有两种选择:

-      用户同时更新这2台Azure Virtual Machine的软件版本。但是这样如果有客户端发起请求,会造成服务器端的无法响应。

-      Azure Fabric Controller监控这2台Azure Virtual Machine。首先更新Update Domain 0中的虚拟机软件。更新完毕后再更新Update Domain 1中的虚拟机软件,一直到所有的Azure Virtual Machine中的Web Application更新完毕,这样保证在同一时刻至少有1台Azure Virtual Machine能够响应客户端的请求。

  以下是故障域(Fault Domain)和更新域(Update Domain)的截图:

  以下是虚拟机可用性集的截图:

  

转载于:https://www.cnblogs.com/threestone/archive/2012/01/18/2553272.html

Windows Azure Cloud Service (4) Windows Azure 平台高可用性的实现相关推荐

  1. Windows Azure Cloud Service (39) 如何将现有Web应用迁移到Azure PaaS平台

    <Windows Azure Platform 系列文章目录> 本文将简单介绍,如何将企业内现有的ASP.NET应用程序迁移到Azure PaaS平台. 因为在迁移过程中,可能需要对现有的 ...

  2. [New Portal]Windows Azure Cloud Service (33) 使用Visual Studio 2012 部署Cloud Service

    <Windows Azure Platform 系列文章目录> 笔者已经将工作用的笔记本电脑升级到Windows 8很长一段时间了,开发工具也从Visual Studio 2010升级到了 ...

  3. Windows Azure Cloud Service (17) Role Endpoint

    <Windows Azure Platform 系列文章目录> 在Windows Azure平台中,用户最多可以对以个Role指定5个Endpoint.而一个Hosted Service最 ...

  4. Windows Azure Cloud Service (23) 使用Full IIS模式部署多站点和虚拟目录

    <Windows Azure Platform 系列文章目录> 本章我们将介绍如何使用Windows Azure的Full IIS模式部署多站点和虚拟目录. 首先我们先新建一个Window ...

  5. 在Azure Cloud Service中部署Java Web App(1)

    Microsoft Azure是一个开放的,灵活的云平台,除了对自家的.Net平台有良好的支持外,对于各种开源的软件,语言,工具,框架都有着良好的支持,比如Java,Php,Python等等,你可以使 ...

  6. Windows Azure Cloud Service (41) 修改云服务IIS托管管道模式为4.0经典模式

    <Windows Azure Platform 系列文章目录> 这是笔者在之前的项目中遇到的问题,做一下总结,给网友做参考. 在一般情况下,Visual Studio开发的Cloud Se ...

  7. Windows Azure Cloud Service (1) 用户手册

    <Windows Azure Platform 系列文章目录> 下载地址 Cloud Service用户手册

  8. [New Portal]Windows Azure Cloud Service (34) TechEd 2013 North America关于Azure的最新消息

    <Windows Azure Platform 系列文章目录> 话说TechEd 2013 US上个月3-6日在美国举办了,笔者的文章又有点姗姗来迟了. 需要了解相关视频的网友,请浏览ht ...

  9. Windows Azure Cloud Service (19) 动态指定WCF的发布地址

    <Windows Azure Platform 系列文章目录> 在刚才的例子中,服务端和客户端都是通过配置文件明确指定了WCF的地址,而如果现在需要将此服务发布到别的Hosted Serv ...

最新文章

  1. 基于Pyhton的图像隐写术--如何隐藏图像中的数据
  2. Idea 封装Java代码片段 快速提示
  3. getchar(),putchar()用法
  4. 面试:Java线程有哪几种状态,它们之间是如何切换的
  5. Mysql 备份和还原
  6. 多项式辗转相除法求最大公约数_多项式的一些性质
  7. VMware Player 12.5.0 中文免费版
  8. axios_的请求响应结果的结构---axios工作笔记006
  9. 让你人见人爱的27个原则
  10. Sendmail with Attachment script
  11. android小游戏代码
  12. 非华为电脑安装华为电脑管家11的方法,华为应用商店和华为浏览器电脑版
  13. 计算机科学与技术的学士服是什么颜色的,学士服颜色分类 各色学士服都有什么讲究...
  14. 抓包中情局特工后,是时候聊聊勒索黑客了!
  15. Redis数据结构-sds
  16. Redis一问多答(必背篇)
  17. 冷库用电量计算机方式,冷库耗电量计算方法(附计算公式)
  18. 概率论与数理统计学习笔记——第三十五讲——依概率收敛,切比雪夫不等式
  19. Python爬取《少年的你》豆瓣短评
  20. 【论文笔记】A Meta-Reinforcement Learning Algorithm for Causal Discovery

热门文章

  1. C# 的Timer 在javascript中的实现--基于Typescript
  2. Java多线程干货系列—(一)Java多线程基础
  3. 《 Java并发编程从入门到精通》Thread安全与不安全
  4. 90%的用户都不知道手机内部功能
  5. C#中IList与List区别
  6. vs调试时,变量值以十六进制显示
  7. 时间管理——被忽视的重要理念!
  8. 152斤了,离健康又近了一步
  9. 微信公众号签名错误 invalid signature
  10. Angular19 自定义表单控件