于生产环境中将Docker服务予以部署之际,要去确保它具有高可用性,此乃保障业务连续性的核心所在。Docker具备高可用性,这不但说的是容器自身不会出现中断运行的情况,而且还涉及到整个编排、网络以及存储栈所拥有的冗余和自愈能力。这为一项系统工程,应从多个层面着手开展规划以及实施,以此来应对主机故障、网络分区等常见问题。
Docker高可用为什么需要编排工具
单单凭借 Docker Engine 自身是没法达成服务的高可用的,一旦有一台宿主机出现宕机情形,其上面的全部容器必然会一同停止运行,致使服务中断,编排工具例如 Kubernetes 或者 Docker Swarm 的功能,便是把多个 Docker 主机组合形成一个集群。

置身于这个集群当中,你有权声明一项服务所需运行的副本数量。基于此,编排工具会把这些副本分配到各式各样具备健康状态的节点上去运行。一旦有某个节点出现故障,该工具便会在其余的节点之上自动重新启动那些缺失的网络容器副本,在这般操作之下就能维持住服务的整体可用性,并且整个流程对于用户而言是处于透明状态的。
如何搭建Docker高可用集群架构
构建具备高可用性的集群其首个步骤是挑选架构模式,就拿Docker Swarm来说,你得去部署多个管理节点也就是Manager Node以及工作节点即Worker Node,Manager节点承担着集群的状态管理和任务调度工作,该节点必然要达成高可用性 。
在一般状况下,起码得有三个或者五个(奇数个)Manager节点才行,它们相互之间借由Raft共识协议去维持一种统一的集群状态 ,达成这样的情形后 ,就算一个或者少数几个Manager节点出现故障 ,只要多数的节点处于存活状态 ,那么集群的管理平面依旧能够正常行使功能 ,而所有的工作节点都会注册至这一具备高可用性的管理平面之下 。
Docker集群网络如何实现高可用
关键瓶颈在于网络的高可用性,于集群里,服务往往借由虚拟IP也就是VIP或者DNS轮询来对外进行暴露,Ingress网络模式准予服务于集群全部节点之上监听同一个端口,流量依靠负载均衡器或者服务网格像Istio被分发至健康的容器实例处。

还要说的是,容器间存在覆盖网络,也就是Overlay Network ,它会跨越每主机,能给容器提供一个扁平、可路由的网络情境,哪怕容器在不同主机处迁移,它的IP地址在网络层面也能够维持连通性,这可是那个确保着网络路径高可用性同时利于服务发现与跨节点通信的基础 。
Docker数据存储怎样保证高可用
易于迁移是容器无状态特性所带来的结果,然而有状态应用的数据持久化却是一项颇具挑战性的事情。数据绝不能够被存储于容器内部,也不能存放在本地宿主机目录,这是因为一旦节点出现故障,数据就会面临丢失的风险。
外部存储卷(Volume)必须被运用,且要挂载至容器里。这些存储卷来源应为具备高可用性的分布式存储系统,像Ceph、GlusterFSdocker 高可用linux 安装,或者是云服务商所提供的块存储/文件存储服务。如此一来,不管容器被调度至哪一个节点docker 高可用,均可实现挂载以及访问同一份持久化数据,达成了数据与计算资源的解耦处理以及各自的高可用性。

如何监控和保障Docker高可用服务
完成部署之后,持续进行的监控乃是保障高可用的关键所在,起着如同维持健全运作的眼睛一般的重要作用。此监控范畴涵盖了对集群当中所有节点的资源使用率,像是 CPU、内存、磁盘这些方面的状况予以监测,同时还得关注其健康状态,并且也要留意每个服务的运行副本数量,精准查明这般数量是否与预先设定的期望值相契合。
待监控系统察觉到节点失去联系或者服务副本数量未达要求时,就应当马上引发告警。更为高级的做法是联合自动化运维工具,达成“自我修复”。比如说,把处于不健康状态的节点自动从集群里分隔出去,并在资源池中自动增添新的节点,构建出一个能够自行修复的有弹性的基础设施。
Docker高可用方案有哪些常见实践

有一种大家颇为常见的实践做法是采用“跨可用区部署”,在云环境当中,把Swarm Manager节点,亦或是Kubernetes的Master节点分散于不相同的可用区(AZ),哪怕整个机房出现故障现象,集群管理功能仍旧是存在着的。
有一种实践是“蓝绿部署”,还要么是“金丝雀发布”,利用负载均衡器于旧版本也就是蓝的服务集群跟新版本即绿的服务集群之间来使流量做出切换操作,以此达成应用本身不受干扰被升级以及回滚的目的,这样在应用发布层面给运行时的高可用做了补充,促使从基础设施层面一直到应用服务层面形成了完好的高可用链条 。
进行实际的Docker高可用环境部署期间,你所碰到的最为突出的挑战,是那网络配置方面具有的复杂性,还是有关持久化存储的性能跟一致性权衡的问题?欢迎于评论的区域分享你自身所拥有的经验以及那见解,要是这篇文章对你能起到帮助作用的话linux运维招聘,请给予点赞并且分享给更多有需求的朋友们。
