作者:焦振清

跨 AZ 部署是实现服务高可用较为有效的方法,同时也极具性价比。如果实现了跨 AZ 部署,不仅可以消除服务中的单点,同时还可以逐步建设如下能力:服务隔离,灰度发布,N+1 冗余,可谓一举多得。因此,接下来我们会对有状态的开源软件进行一系列的跨 AZ 部署的介绍,本次介绍 Zookeeper。

ZK 容错数

Zookeeper 有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的(完整机器列表是预先定义在 ZK 的配置文件中)。也就是说,一个 ZK 集群有 3 个实例,一个死了,还剩下 2 个正常的,过半了,所以 3 实例的 Zookeeper 的容忍度为 1。同理,一个 ZK 集群有 5 个实例,2 个死了,还剩下 3 个正常的,过半了,所以 5 实例的 Zookeeper 的容忍度为 2。因此可以用 2n+1 来描述 ZK 集群的容忍度。考虑到 3 实例的集群只能故障一个实例,因此,线上集群一般都是五个实例的。

按照上述的逻辑,七个实例甚至更多的实例不是更好吗?从实践角度看,如果一个集群 5 个实例扛不住的情况下,基本就需要做集群拆分了。7 个实例的集群也许没啥问题,但是这么大压力的集群,一旦故障,影响面也是非常严重的,因此,更多的采用集群拆分而不是持续扩容的方式。

最佳实践

以线上最为常见的 5 实例的 ZK 集群为例进行说明,5 实例的 ZK 集群主要有如下两种部署方式:

延时敏感型:单 AZ 部署方案(AZ1:5),这种部署模式适用于 Zookeeper 服务的系统全部集中在同一个 AZ 内。在这种情况下,如果该 AZ 故障,那么系统必然不可用,这时,ZK 即使可用也没有意义,因此也就没有必要去做跨 AZ 的部署了,并且跨 AZ 后,还会增加常态下的网络延时

高可用型:三 AZ 部署方案(AZ1:2 + AZ2:2+ AZ3:1),这种部署模式适用于 Zookeeer 服务的系统做了 2-3 个 AZ 的部署,从而确保业务系统所在的 AZ,任意一个故障,ZK 服务自身依然可用

其他部署形式的缺点

除去上述推荐的两种部署形式外,不推荐的部署方式有两 AZ 部署方案(AZ1:2 + AZ2:3),这种部署方式,仅能保证 AZ1 故障后整体服务的可用性,而三 AZ 部署方案则可以接受任意一个 AZ 的故障,本质上等同于单 AZ 部署的效果,因此不做推荐和介绍。

AZ 数量是不是越多越好

如此类推,是不是说采用五个 AZ 每个 AZ 部署一个实例的方式是最好的呢?答案是否定的,有如下几点考虑:

  • 从故障域角度讲,如果一个 Region 有较多的 AZ,一般会拆分为两个故障域从而获得更好的可用性。例如华北区域有 6 个 AZ,将这 6 个 AZ 分为两个故障域,每个故障域 3 个 AZ,这样,任意机房的故障其影响范围只会在一个故障域的三个 AZ 内,而不会扩散到整个区域。这样对服务能力来讲,损失面得到更好的控制。

  • 从服务质量角度讲,在冗余度确定的情况下(5 实例),且都能满足业务可用性的同时(业务部署 2-3 个 AZ),ZK 部署在 5 个 AZ,并不会带来更高的可用性,相反,却需要面对更多的机房抖动,延时和故障。假设一个机房一年平均故障一次,那么五个机房一年就会故障五次,单个机房的故障时,服务会发生请求超时和重连,服务质量会略降低

  • 从成本角度讲,在冗余度确定的情况下(5 实例),且都能满足业务可用性的同时(业务部署 2-3 个 AZ),ZK 部署在 5 个 AZ,任意机房的故障都需要干预和关注,同比 3AZ 的情况,会增加更多的干扰,消耗人员的精力

关于机房规划

在公有云的一个 Region 里,往往有多个 AZ 可供选择,抛开 ZK 泛泛的讲一个服务应该部署在几个 AZ,主要是成本和可用性之间的平衡,在不同的环境下,得出的结果不尽相同,因此这里只能给一些分析的思路:

  • 如果部署 2 个 AZ,按照 N+1 的冗余要求,可以故障 1 个 AZ,冗余度是 50%,虽然达成了可用性的要求,但成本较高,有一半的机器是冗余的

  • 如果部署 3 个 AZ,按照 N+1 的冗余要求,冗余度为 33.33%,和 2 个 AZ 相比,成本节省 16.67%

  • 如果部署 10 个 AZ,按照 N+1 的冗余要求,冗余度为 10.00%,从成本角度看,非常不错。但是和 8 个 AZ 的情况相比,成本仅仅节省了 2.50%,而多维护两个机房的成本,可能会远远高于成本节省的 2.50%,且服务可能大量进行跨 AZ 交互,延时增加

因此,一个服务应该选择几个 AZ,既有上面提到的隔离域的考量,也有成本和可用性之间的平衡,以及当下采用的技术方案对网络延时的要求等。所以,只有最适合的方案,而没有标准答案。

对于实现了异地多活部署能力的业务,一般来讲,其部署形式为:华北、华中、华南三个 Region,每个 Region 部署两个服务单元,整体形成六个服务单元。华北、华中、华南三个 Region 之间可以实现较好的隔离性,地震,洪水等各种严重自然灾害都不大会在三个 Region 间同时发生,因此从冗余度角度讲,可以防止任一单个 Region 的故障,因此从 Region 的冗余度看,依然还是 N+1 的标准。

公众号介绍

智能运维公众号聚焦于运维领域,由一群BATJ的资深运维工程师所创建,在监控,部署,预案,混沌工程和故障分析等方向进行方法论和最佳实践的持续输出,目前有超20篇原创文章发表在InfoQ上,并在其他渠道广泛转载。

跨 AZ 部署最佳实践之 Zookeeper相关推荐

  1. 跨AZ部署最佳实践之Elasticsearch

    作者:焦振清 跨AZ部署是实现服务高可用较为有效的方法,同时也极具性价比.如果实现了跨AZ部署,不仅可以消除服务中的单点,同时还可以逐步建设如下能力:服务隔离,灰度发布,N+1冗余,可谓一举多得.因此 ...

  2. SAP(HANA+S/4)上云基础环境部署最佳实践

    简介:为提高客户服务水平及集团管理效率,客户选择了SAP解决方案.但是同时也对客户的IT基础设施提出了更多的要求.对此我们针对SAP上云基础设施选型.云原生产品.灾备方案设计,云上安全环境设计总结出了 ...

  3. Mendix基于腾讯云部署最佳实践

    本实践由腾讯云与西门子数字化工业软件授权发布,未经允许不得转载. 1.  概述 本文档介绍了西门子企业级应用开发平台Mendix应用快速托管到腾讯云容器服务(简称TKE)的最佳实践.该方案仅用于非生产 ...

  4. k8s停止服务_Kubernetes 服务部署最佳实践(二) 如何提高服务可用性

    引言 上一篇 文章我们围绕如何合理利用资源的主题做了一些最佳实践的分享,这一次我们就如何提高服务可用性的主题来展开探讨. 怎样提高我们部署服务的可用性呢?K8S 设计本身就考虑到了各种故障的可能性,并 ...

  5. 探秘音视频网络优化与全球化部署最佳实践

    根据Google.淡马锡等联合发布的2019年"东南亚互联网经济报告"显示,包括泰国.菲律宾.印度尼西亚和马拉西亚在移动互联网日均使用时长方面领先世界,而整个东南亚2019年的互联 ...

  6. Gartner:上云步伐加速,中国公有云部署最佳实践

    作者 | Gartner高级研究总监 周玲 供稿 | Gartner 在数字化转型需求的驱动下,中国的上云步伐持续加速.Gartner预测,到2024年,中国40%的IT基础设施支出将用于云服务(参见 ...

  7. 【云贝学院】腾讯云TDSQL独立部署最佳实践

    [云贝学院]云贝学院TDSQL TCP认证课程已上线,学院有不定期公开课 需要的同学可以加老师微信:19941464235 作者:崔鹏 创建四台云主机或者本地四台Centos7.6的VM虚拟机 (四台 ...

  8. Rancher 全球化部署最佳实践

    作者 万绍远,CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师,云原生解决方案架构师.对 ceph.Openstack.Kubernetes.prometheus 技术和 ...

  9. Kubernetes Ingress 高可靠部署最佳实践

    摘要: 在Kubernetes集群中,Ingress作为集群流量接入层,Ingress的高可靠性显得尤为重要,今天我们主要探讨如何部署一套高性能高可靠的Ingress接入层. 简介 在Kubernet ...

最新文章

  1. vivado中的rtl中电路图无发生成_FPGA零基础学习:数字电路中的组合逻辑
  2. 前端学习(2829):block标签的使用
  3. mysql统计今天发布了多少条_Mysql统计总结 - 最近30天,昨天的数据统计
  4. 如何在Android应用里对HTTP请求头部添加适当的User-Agent字段
  5. opkg-utils的PKGBUILD文件,参考自OE的opkg-utils_git.bb
  6. springboot+1、图片上传到本地路径信息保存在数据库2、根据id删除本地图片
  7. 9.计蒜客ACM题库.A1602 结果填空:开关灯
  8. 分布滞后与自回归模型 ADL
  9. 计算机专业在职双证,计算机专业在职研究生可以获得在职研究生双证吗?
  10. Vue beforeRouteUpdate 监测路由
  11. 华为(HUAWEI)TE10一体化高清视频会议终端系统维护之指示灯状态
  12. 直接存储器存取(DMA)有哪3种工作方式?
  13. 那些选择科研的女科学家(一)
  14. springboot项目中利用@WebFilter注解和@Bean配置类两种方式实现Filter过滤器
  15. 【Stata】从入门到精通.零基础小白必学的教程,一学就fei
  16. 零基础能学大数据开发吗 可以从哪些方面入手
  17. 富士康科技集团_2018届菁干班_入职初体验
  18. 梦幻跨服购买需要登录服务器未响应,梦幻西游跨服购买你角色,跨服购买可以连角色转过去...
  19. c语言中式等号右边赋予左边吗,二项式定理公式、各种例题讲解及练习
  20. python爬虫加数据可视化软件_Python 爬虫 数据分析 可视化

热门文章

  1. Adaptive AUTOSAR架构介绍(2)
  2. 联想Z485安装64位ubantu
  3. java连接数据库实现图书管理器
  4. 软考A计划-试题模拟含答案解析-卷二
  5. 皮影机器人ppt_第27届计算机表演赛—智能皮影机器人
  6. 删除了其他软件盘或仓库盘的EFI引导文件,导致主硬盘系统盘无法启动
  7. 如何优化棋牌游戏服务器网络带宽
  8. js es6转es5
  9. 4四层电梯三菱fx2n系列plc独立程序带注释新3plc接线图io表
  10. 大数据可视化物流平台后台HTML5模板 免费下载