Docker-swarm集群部署及swarm集群管理节点高可用配置1.Docker部署yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2yum-config-manager--add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyummakecachefastyuminstalldocker-ceservicedockerstartvim/usr/lib/systemd/system/docker.service#Add--graph/data/docker--storage-driver=overlaysystemctldaemon-reloadservicedockerrestart如果需要旧版本:yuminstallhttps://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.0.ce-1.el7.centos.noarch.rpmyum安装docker-ce-17.03.0.ce-1.el7.centos.x86_64-y二。搭建Docker-swarm集群1.选择一个节点作为管理节点[root@jenkins-master~]#dockerswarminit--advertise-addr192.168.0.46dockerswarmjoin-tokenworker命令是查看token的主节点向集群添加节点的命令[root@jenkins-master~]#dockerswarmjoin-tokenworker要向这个swarm添加一个worker,运行以下命令:dockerswarmjoin\--tokenSWMTKN-1-5vzw37ummd0h863jddbig798pbq3jpgoepf95g4uenodwhtc7v-543arzx838nj0pgo2yujyfko4\192.168.0.46:2377添加节点到swarm集群中(在每台节点机上执行)[root@jenkins47~]#dockerswarmjoin--tokenSWMTKN-1-5vzw37ummd0h863jddbig798pbq3jpgoepf95g4uenodwhtc7v-543arzx838nj0pgo2yujyfko4192.168.0.46:2377创建一个clusternetworkdockernetworkcreate-doverlay--subnet=10.0.1.0/24--attachablesk-net查看集群节点信息[root@jenkins-master~]#dockernodelsIDHOSTNAMESTATUSAVAILABILITYMANAGERSTATUS5s0spx5wonjgsl8k63vfybq1vzabbix.xxxxfhysxfixw4Activettjenkins47ReadyActiveuc40c8karvu3pq2euplyicz8*jenkins-masterReadyActiveLeader3.配置docker-swarm管理节点高可用如果swarm集群只有一个管理节点,如果管理节点宕机或者离开集群环境,那么集群不会存在。所以在有N个管理节点的集群环境中,必须有超过总数50%的管理节点处理请求并保持可用。Swarm中的管理节点通过实现Raft共识算法来管理所有节点的状态。通过实现Raft共识算法,可以保证集群中所有的任务、存储等都处于一致的状态。通常,一个Raft集群包括若干台服务器。在任何给定的时间点,每个服务器都处于三种状态之一:领导者、追随者或候选者。一般的操作,必须有一个leader,其余的server都是follower。Followers是被动的:他们自己不提交任何请求,只响应Leader和Candidate提出的请求。领导者处理所有客户端请求(如果客户端向跟随者发送请求,跟随者会将其转发给领导者)。至于第三个状态——candidate——用来选举新的指挥官。Raft使用心跳机制来触发领导者选举。当服务器启动时,它们以跟随者的身份开始,并会执行跟随者的工作,直到它们从领导者或候选人那里收到有效的RPC协议(远程过程调用协议)。领导者定期向所有追随者发送心跳消息以维护他们的授权。如果follower在一定时间内没有收到心跳信息(这段时间称为“选举超时”),它会认为leader失败,然后开始选举选出新的leader。[root@jenkins-master~]#dockernodepromotezabbix.xxxx[root@jenkins-master~]#dockernodelsIDHOSTNAMESTATUSAVAILABILITYMANAGERSTATUS5s0spx5wonjgsl8k63vfybq1vzabbix.xxxxReadyActiveReachablettfs9upr4bmhyt9ssfxfixkwmjenkins47ReadyActiveuc40c8karvu3pq2eupllyicz8*jenkins-masterReadyActiveLeader重启Leader,你会发现Leader节点会发生变化
