更多内容,添加公众号关注:

场景一:

某智能家居厂家,用户喊出“小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上的负载均衡,应用程序网关,流量管理器等产品,然后实战操作,最终看能否拔掉生产环境中的网线。

Azure 上的高可用概念的更多相关文章

  1. 快速搭建基于Azure Paas的高可用WordPress网站

    产品详情 产品介绍 WordPress是一种使用非常广泛的CMS系统.本应用是根据Azure Resource Manager模板创建的.通过该ARM模板可以快速建立web应用和MySQL数据库,部署 ...

  2. 在 Kubernetes 上运行高可用的 Kafka 集群

    转载自:https://www.qikqiak.com/post/deploy-kafka-ha-on-k8s/ Apache Kafka 是目前最流行的分布式消息发布订阅系统,虽然 Kafka 非常 ...

  3. hadoop在zookeeper上的高可用HA

    (参考文章:https://www.linuxprobe.com/hadoop-high-available.html) 一.技术背景 影响HDFS集群不可用主要包括以下两种情况:一是NameNode ...

  4. Pod在多可用区worker节点上的高可用部署

    一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可 ...

  5. vultr 上实现高可用冗余浮动公网IP出口(使用BIRD+BGP协议)High Availability on Vultr with Floating IP and BGP

    官方文档: https://www.vultr.com/docs/high-availability-on-vultr-with-floating-ip-and-bgp https://www.vul ...

  6. hype-v上centos7部署高可用kubernetes集群实践

    概述 在上一篇中已经实践了 非高可用的bubernetes集群的实践 普通的k8s集群当work node 故障时是高可用的,但是master node故障时将会发生灾难,因为k8s api serv ...

  7. MHA-Atlas-MySQL高可用(上)

    MHA-Atlas-MySQL高可用(上) 链接:https://pan.baidu.com/s/17Av92KQnJ81Gc0EmxSO7gA 提取码:a8mq 复制这段内容后打开百度网盘手机App ...

  8. MHA高可用

    MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本 DeNA 公司 youshimaton(现就职于 Facebook 公司)开 ...

  9. Redis(二)冰叔带你了解Redis-哨兵模式和高可用集群解析

    前言    Redis 的 主从复制 模式下,一旦 主节点 由于故障不能提供服务,需要手动将 从节点 晋升为 主节点,同时还要通知 客户端 更新 主节点地址,这种故障处理方式从一定程度上是无法接受的. ...

随机推荐

  1. socket实现ftp上传下载

    socket实现ftp文件的上传和下载 server端代码: import socket import json import struct import os soc = socket.socket ...

  2. exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp

    6月22日任务 14.4 exportfs命令14.5 NFS客户端问题15.1 FTP介绍15.2/15.3 使用vsftpd搭建ftp 14.4 exportfs命令 当我们修改nfs的配置文件e ...

  3. 简单易学的机器学习算法——决策树之ID3算法

    一.决策树分类算法概述     决策树算法是从数据的属性(或者特征)出发,以属性作为基础,划分不同的类.例如对于如下数据集 (数据集) 其中,第一列和第二列为属性(特征),最后一列为类别标签,1表示是 ...

  4. 使用Python开发小说下载器,不再为下载小说而发愁 #华为云·寻找黑马程序员#

    需求分析 免费的小说网比较多,我看的比较多的是笔趣阁.这个网站基本收费的章节刚更新,它就能同步更新,简直不要太叼.既然要批量下载小说,肯定要分析这个网站了- 在搜索栏输入地址后,发送post请求获取数 ...

  5. 使用蓝图构建Flask项目目录

    蓝图构建项目目录 什么是蓝图 一个应用中或跨应用制作应用组件和支持通用的模式 蓝图的作用 将不同的功能模块化 构建大型应用 优化项目结构 增强可读性,易于维护 蓝图构建项目目录 定义蓝图 app/ad ...

  6. 云享专家倪升武:微服务架构盛行的时代,你需要了解点 Spring Boot

    [摘要] 微服务架构的本质在于分布式.去中心化. 随着互联网的高速发展,庞大的用户群体和快速的需求变化已经成为了传统架构的痛点. 在这种情况下,如何从系统架构的角度出发,构建出灵活.易扩展的系统来快速 ...

  7. ef6+mysql的bug

    entityFramework6在mysql数据库下,用linq进行排序会出现一个bug. Expression<Func<blog, bool>> expr_filter=p ...

  8. elementUI最新版的el-select使用filterable无效无法匹配正确搜索结果的Bug解决办法

    Bug描述: 今天做开发时遇到一个elementUI存在的bug. 当el-select使用filterable功能搜索时,如果你恰巧使用的是微软拼音输入法,那么你有可能会遇到搜索结果和输入的值不匹配 ...

  9. 上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。

    1.引入依赖. <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot< ...

  10. 浏览器url访问tomcat出现错误 java.lang.NoSuchMethodError解决方法

    一般该类错误: 找不到方法或找不到类, 都是maven pom 仓库依赖的问题,有时是 因为缺少该依赖类,可以考虑添加相关依赖: 有时因为依赖冲突, 可以到 maven 的仓库下面把 有关该类的包 全 ...