停机和性能下降是不可避免的,可能是运维人员犯错误、新的协议引入了错误、自然灾害、设备损坏等。

这就是为什么大多数平台管理员不相信亚马逊设计防飓风数据中心的能力,而是选择将应用程序的基础设施分布在多个可用性区域(AZ)。

AZ中断并不常见,但确实会发生,性能下降更为常见。而且灾难性的停机是可能的,比如飓风造成的停机,因此负责任的平台管理员围绕故障设计基础设施。

这是一件好事,值得称赞。但很少有平台管理者考虑多个AZ Kubernetes部署带来的新设计挑战。让我们深入探讨多AZ生产环境带来的新因素。

不能把基础设施跨AZ分布吗?

多AZ Kubernetes服务可能需要更多的跑腿工作,而不仅仅是声明希望节点分布在AZ上。虽然从技术上讲,你可以简单地跨多个AZ部署副本节点,但大多数应用程序都需要额外的配置。

具体来说,无状态应用程序可以在多个AZ之间正常工作。如果一个AZ出现故障,Kubernetes将在下一个AZ重新安排应用程序。在过渡期间,不会有任何状态工作负载需要保留,因此最终用户不会注意到任何不同。

然而,一个有状态的应用程序跨多个AZ工作就不是这么简单了。原因如下。

跨AZ的有状态

假设你跨多个AZ启动了一个应用程序,以获得灾难恢复能力,但没有考虑其有状态工作负载。

首先,你的应用程序无法正常运行很长时间,因为它在跨容器的有状态工作负载下运行,而容器在运行有状态应用程序时并不十分健壮。

比如说,需求激增或其他某种失败迫使Kubernetes杀死一个容器。当Kubernetes的调度程序重新启动你的有状态应用程序时,只有在其卷最初所在的同一个AZ中重新启动时,它才会运行。如果在其他地方重新启动,它将无法访问该卷。因此,平台管理员必须为带有附加卷的应用程序创建并维护关联规则,以确保它们仅在与其卷关联的应用程序中重新启动。

我们假设你已经为这个问题建立了一个解决方案,可能是通过利用一个不受AZ边界限制的合适的容器存储接口(CSI)提供程序。如果灾难恢复是一个目标,那么你需要确保解决方案能够创建持久卷副本。这样,如果一个容器出现故障,副本可以立即恢复,几乎没有停机时间。

但现在,你面临另一个挑战:确保副本均匀分布在AZ上。例如,主卷及其副本可能位于同一个AZ中,如果AZ发生故障或服务中断,这显然会影响你的灾难恢复能力。

此外,你还需要确定一种方法,以便随着时间的推移更改副本的托管位置。如果你决定添加另一个AZ或更改副本的布局,会发生什么?Kubernetes和云服务提供商的基础设施不会自动为你做到这一点。

为了解决这个问题,如果你主要使用AWS提供云服务,可以在Lambda中编写一些自定义脚本。但是,还有其他一些东西需要维护,当然,这不能跨不同的云服务提供商起作用。

解决方案:Kubernetes的拓扑密钥

幸运的是,Kubernetes提供了一个功能,我们可以使用它来构建一个解决方案,以解决有状态多AZ Kubernetes部署问题,称为拓扑密钥。这使得Kubernetes服务能够基于集群的节点拓扑来路由流量。

因此,使用拓扑密钥的一种方法是让Kubernetes用它所在的AZ标记每个节点。有了这些信息,CSI解决方案就可以将副本节点均匀地分布在AZ上,从而创建Kubernetes功能集中缺失的强大灾难恢复功能。

一举两得

上述方法正是Ondat所采取的。Ondat使用Kubernetes的拓扑密钥,通过一个称为拓扑感知放置的过程,在AZ上分发副本节点。

Ondat还确保在AZ、集群、节点或容器发生故障时,你的有状态工作负载保持不变。作为存储编排器,Ondat汇集了各个节点的存储,充当Kube原生分布式引擎的中介,从而将前端持久卷从底层平台拓扑中分离和抽象出来。

原文链接:

https://thenewstack.io/use-multi-availability-zone-kubernetes-for-disaster-recovery/

使用多可用区Kubernetes进行灾难恢复相关推荐

  1. Kubernetes应用跨可用区实战

    本文介绍了如何在阿里云Kubernetes集群部署跨多个可用区的应用. 应用跨多个可用区 为了保证业务应用的高可用,有些客户会要求关键应用部署到多个机房,一个机房一旦出问题,其他机房正常工作,从而让应 ...

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

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

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

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

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

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

  5. 玩转ECS第6讲 | 弹性计算Region化部署和跨可用区容灾介绍

    简介:本次分享由阿里云弹性计算架构负责人李钟(谢顿)为大家介绍阿里云region化部署和跨可用区容灾的实践经验,说明多Region部署场景中使用阿里云弹性计算的最佳实践,并结合弹性计算的实践经验探讨如 ...

  6. aws ec2 选择可用区_AWS Messaging Services:选择合适的服务

    aws ec2 选择可用区 1. AWS消息服务 AWS Messaging服务使云中相似和不同的软件系统能够异步通信和交换信息. 这些软件系统可能不兼容且使用不同的语言,也可能在不同的平台上. AW ...

  7. 使用Kubespray部署生产可用的Kubernetes集群(1.11.2)

    Kubernetes的安装部署是难中之难,每个版本安装方式都略有区别.笔者一直想找一种支持多平台 .相对简单 .适用于生产环境 的部署方案.经过一段时间的调研,有如下几种解决方案进入笔者视野: 部署方 ...

  8. 云计算中的地域和可用区概念

    摘要: 简单来说,可以将地域理解为不同城市的机房,将可用区理解为同一个城市的不同机房 上一篇说数加的文章,很多同学向我吐槽说看不懂,里面有太多云计算的产品和概念,对于没有接触使用云计算的同学来说,确实 ...

  9. aws rds监控慢sql_AWS RDS SQL Server的多可用区配置

    aws rds监控慢sql Amazon provides AWS RDS SQL Server as a managed relational database service. You can d ...

最新文章

  1. git同一项目使用多个远程仓库
  2. python如何跳出外层循环_失去循环标签的Python,我这样实现跳出外层循环
  3. .NET Core 2.1 正式发布
  4. jquery checkbox 选中、改变状态、change 和 click 事件
  5. ie提示保护计算机关闭网页,xp系统解决IE为保护计算机关闭网页方法分享
  6. 大学英语综合教程四 Unit 8 课文内容英译中 中英翻译
  7. 韩家炜教授的学术报告会
  8. 卡诺模型(用户需求分析模型)
  9. regester正则用法_Regester(正则表达式测试器)
  10. 近期每日学习与工作时间安排
  11. python手把手教你创作趣味词云(保姆级贴心)
  12. javaweb基于JSP+Servlet开发水费管理系统+论文 大作业 毕业设计
  13. 2021年中国高空作业平台行业发展现状及竞争格局分析,国产品牌异军突起「图」
  14. 广发样样行提额技巧分享
  15. delphi 多线程3
  16. 事件介绍、两种事件注册的介绍、onload事件、onclick事件、onblur事件、onchange事件、onsubmit事件
  17. 190822——喜欢
  18. linux查看链路聚合的协商信息,Linux 链路聚合
  19. linux qt 获取u盘名称,QT windows平台下获取U盘 QComboBox显示U盘盘符
  20. C# 与 js的相与调用

热门文章

  1. css完整总结:第二篇(尺寸,外补白,内补白,边框,背景,颜色,字体,文本,文本装饰)
  2. java将字符转换成拼音_java中将汉字转换成拼音的实现代码
  3. Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts
  4. android系统相机实时数据采集流程,Android摄像头获取实时数据+Demo
  5. 二代身份证读卡插件安装包(完整亲测可用).zip
  6. 小木虫网站无法登陆(账号突然被封禁)的解决办法
  7. UEFI启动视频详解:启动分析+N项操作实例
  8. 计算机网络常见面试题,一网打尽!
  9. 【ubuntu】Ubuntu 安装中文输入法
  10. cocos android 播放视频,Cocos2d-x IOS 和Android播放视频