场景一:

某智能家居厂家,用户喊出“小X同学,帮我扫地”后,服务器宕机了,扫地机器人不能立即启动,于是,用户可能再连续喊几次后,无奈又习惯的按下了扫地机器人的启动按钮。

 

场景二:

某高层建筑有2000个房间,10个房间烟感连续发出报警,理论上出现了火灾并在逐步扩散,恰巧,服务器又宕机了然后...

 

两个场景都是服务器宕机,但后果却不同,根据业务实际情况,我们必须考虑软件架构的高可用性。

有人会说,上云吧,上云比自己搭建服务器稳定多了。通常情况下是这样的,但是,不要忽略SLA这个重要的概念,云产品都是有SLA的,SLA是什么呢?SLA全称是ServiceLevel Agreement,翻译为服务水平协议,他表明了公有云提供服务的等级以及质量。比如我们说月度99.95%的SLA,意味着每个月服务出现故障的时间只能占总时间的0.05%,如果这个月是30天,那么约等于21.6分钟。

对于场景一,或许21.6分钟是可容忍的,但对于场景二,绝对是不允许的。

针对各种高可用方案,通常会提到下面这些概念(不是针对Azure的概念):

同城 容灾

同城 容灾 是在同城或相近区域内 ( ≤ 200K M )建立两个数据中心 一个为数据中心,负责日常生产运行 另一个为灾难备份中心,负责在灾难发生后的应用系统运行。同城灾难备份的数据中心与灾难备份中心的距离比较近,通信线路质量较好,比较容易实现数据的同步 复制 ,保证高度的数据完整性和数据零丢失。同城灾难备份一般用于防范火灾、建筑物破坏、供电故障、计算机系统及人为破坏引起的灾难。

异地 容灾

异地 容灾 主备中心之间的距离较远 (> 200KM ) , 异地灾难备份不仅可以防范火灾、建筑物破坏等可能遇到的风险隐患,还能够防范战争、地震、水灾等风险。由于同城灾难备份和异地灾难备份各有所长,为达到最理想的防灾效果,数据中心应考虑采用同城和异地各建立一个灾难备份中心的方式解决。

 

Azure上有很多高可用的方案可供我们选择,以尽可能提高我们的业务系统能够尽可能的稳定对外提供服务,首先要做的是了解Azure上的高可用相关的概念,才能灵活应用。

 

 

什么是 Azure 区域?

Azure 在世界各地的多个数据中心运行。 这些数据中心分组到地理区域,让用户可灵活选择构建应用程序的位置。可以在规定的地理区域(例如“中国东部”、“中国北部”或“中国东部2”)中创建 Azure 资源。  为了提供冗余和可用性,每个区域都设有多个数据中心。 这样,便可灵活设计应用程序,创建距离用户最近的VM,满足任何法律、符合性或税务要求。截至2019年11月,Azure全球共计54个区域,中国大陆有4个区域。

Azure 地域Azure 区域组织为地域形式。Azure 地域保证数据驻留、主权、符合性和恢复能力的要求在地域边界内得到遵从。

区域对

每个 Azure 区域都与同一地理位置内的另一区域配对。 此方法适用于跨地域复制资源(例如VM 存储),降低因自然灾害、社会动乱、电力中断或物理网络中断而同时影响两个区域的可能性。 区域对的其他优点包括:出现范围较广的 Azure 区域中断时,每个区域对中有一个区域优先级更高,这样可以缩短应用程序的还原时间。将逐一对配对的区域进行计划内Azure 更新,尽量减少停机时间并降低应用程序中断风险。出于税务和执法管辖权方面的考虑,数据仍以配对的形式驻留在同一地域内。

Azure 中的高可用性概述

可以通过多种不同的方式创建 Azure 中的高可用性。 有两个选项是“可用性集”和“可用性区域”。 通过使用可用性集,你的VM 将受到保护,从而免受数据中心内可能发生的故障的影响。 这包括硬件故障和Azure 软件故障。 通过使用可用性区域,你的VM 将放置在物理上独立、没有共享资源的基础设施上,因此将受到保护,不受整个数据中心故障的影响。当你想要在 Azure 中部署基于 VM 的可靠解决方案时,请使用可用性集或可用性区域。

可用性集概述

可用性集是一种逻辑分组功能,在Azure 中使用它可以确保将 VM 资源部署在 Azure 数据中心后,这些资源相互隔离。 Azure 确保可用性集中部署的 VM 能够跨多个物理服务器、计算机架、存储单元和网络交换机运行。 如果出现硬件或Azure 软件故障,只有一部分 VM 会受到影响,整体应用程序仍会保持运行,可供客户使用。 如果想要构建可靠的云解决方案,可用性集是一项关键功能。假设某个基于 VM 的典型解决方案包含四个前端 Web 服务器,以及两个托管数据库的后端VM。 在 Azure 中,若想在部署 VM 之前先定义两个可用性集:一个可用性集用于“Web”层级,另一个可用性集用于“数据库”层级。 创建新的VM 时,可在 azvm create 命令中指定可用性集作为参数,Azure 会自动确保在可用性集中创建的VM 在多个物理硬件资源之间保持独立。 如果运行某个Web 服务器或数据库服务器的物理硬件有问题,可以确信Web 服务器和数据库 VM 的其他实例会保持运行状态,因为它们位于不同的硬件上。

可用性区域概述(截至2019年11月,中国区尚无可用性区域)

可用性区域是一个高可用性产品/服务,在数据中心发生故障时可以保护应用程序和数据。 可用性区域是Azure 区域中独特的物理位置。 每个区域由一个或多个数据中心组成,这些数据中心配置了独立电源、冷却和网络。 为确保能够进行复原,所有已启用的区域中必须至少有三个单独的区域。 区域中可用性区域的物理隔离可以在发生数据中心故障的情况下保护应用程序和数据。 区域冗余服务可跨可用性区域复制应用程序和数据,以防范单点故障。 借助可用性区域,Azure 提供业界最佳的 99.99% VM 正常运行时间 SLA与可用性集类似,假设某个基于VM 的典型解决方案包含四个前端 Web 服务器,以及两个托管数据库的后端VM。 与可用性集类似,你将希望在两个单独的可用性区域中部署VM:一个可用性区域用于“Web”层,另一个可用性区域用于“数据库”层。 当你创建新的VM 并将可用性区域指定为 azvm create 命令的参数时,Azure 会自动确保你创建的 VM 隔离在完全不同的可用性区域中。 如果运行某个Web 服务器或数据库服务器 VM 的整个数据中心出现问题,你就会知道Web 服务器和数据库 VM 的其他实例仍在运行,因为它们在完全独立的数据中心中运行。

 

Azure 区域中的可用性区域是容错域和更新域的组合。 例如,如果在Azure 区域的三个区域中创建三个或更多VM,则 VM 将有效分布在三个容错域和三个更新域中。 Azure 平台会识别更新域上的此分布,以确保不同区域中的VM 不会同时更新。通过将计算、存储、网络和数据资源共置在一个区域并将其复制到其他区域,在应用程序体系结构中内置高可用性。 支持可用性区域的Azure 服务划分为两类:

区域性服务将资源固定到特定区域(例如虚拟机、托管磁盘、标准IP 地址)或

区域冗余服务 – 平台自动跨区域复制(例如区域冗余存储和SQL 数据库)。

若要在 Azure 上实现全面的业务连续性,可结合使用可用性区域和Azure 区域对来构建应用程序体系结构。 可以使用Azure 区域中的可用性区域以同步方式复制应用程序和数据以实现高可用性,并以异步方式跨Azure 区域复制以实现灾难恢复保护。

容错域

容错域是共享公用电源和网络交换机的基础硬件逻辑组,类似于本地数据中心内的机架。 在可用性集内创建 VM 时,Azure 平台会将 VM 自动分布到这些容错域。 此方法可限制潜在物理硬件故障、网络中断或断电的影响。

更新域

更新域是可以同时维护或重新启动的基础硬件逻辑组。 在可用性集内创建 VM 时,Azure 平台会自动将 VM 分布到这些更新域。 Azure 平台进行定期维护时,此方法可确保至少有一个应用程序实例始终保持运行状态。 在计划内维护期间,更新域的重启顺序可能不会按序进行,但一次只重启一个更新域。

 

可用性集由可防止硬件故障以及允许安全应用更新的两个额外分组构成 容错域 (FD) 和更新域 (UD)

 

了解了这些概念,下面我们会逐一介绍 Azure上的负载均衡,应用程序网关,流量管理器等产品,然后实战操作,最终看能否拔掉生产环境中的网线。