【前言】
在项目中通常用高可用的方式部署多个web应用服务,如果web应用服务项目部署在IIS上面,通常用负载均衡指向多台IIS服务器来实现高可用;如果使用docker容器部署web应用服务项目,可以用k8s或者docker swarm来偏排容器,以容器集群的方式实现高可用。
本篇讲述用docker swarm来实现docker集群编排。
使用负载均衡 + IIS方式的缺点:
web应用节点不能动态扩容。
当web应用节点挂掉之后,需要额外写一个守护程序用来检测web应用是否处于运行状态, 如果web应用停止,由守护程序启动web应用。
部署成本高,要一台一台的部署web应用。
使用docker swarm编排docker集群的优势:
可以动态对web应用进行动态扩容。
由docker swarm来监控docker节点是否可用,如果docker节点出故障不可用,docker swarm会创建一新的docker节点来代替出故障的docker节点。
不需要到每一台服务器去部署web应用服务,用docker swarm的service命令一次性动态部署多个web应用服务。
docker swarm介绍:
docker swarm 分为管理节点(manger node)、工作节点(work node)、服务(services),任务(Task)。
swarm可以包含一个或多个管理节点,一个或多个工作节点。
(1) 工作节点:运行docker的服务器。
工作节点接收管理节点的任务,并执行任务。
(2) 管理节点:
管理节点同时也是工作节点,维护集群的状态。 管理节点分为首领管理节点与非首领管理节点,首领管理节点只有一个,非首领管理节点可以有多个。
当首领管理节点不可用时,docker swarm会选举其中一个非首领管理节点为首领管理节点。当非首领管理节点接到命令时会将命令转交给首领管理节点,首领管理节点会把命令执行于整个swarm集群。
如果工作点都挂掉只剩下一个管理节点,docker swarm仍然可以保持集群和服务的运行。
管理节点建议用奇数个,最好3个或5个,一般不超过5个,因为swarm内部是通过RAFT协议达成共识状态,管理节点越多,越不容易达成共识。
(3) 服务:运行在docker里面的容器。
服务以声明的方式运行和扩展任务。在管理节点上一行命令可以完成多个服务实例的创建,并且均衡的分配服务实例到工作节点。
当某个工作节点或工作节点中运行的服务实例挂掉时,管理节点会在其它可用的工作节点(包含管理节点)中创建一个新的服务实例,并始络保持可用服务实例的数量。
(4) 任务:swarm集群里运行的各个服务实例的容器就是任务,比如5个webapi容器也叫5个任务。
原文:https://www.cnblogs.com/yyee/p/13139107.html