主机名 | IP | 主机配置 |
---|---|---|
master | 10.10.10.3 | 2c2g |
node01 | 10.10.10.4 | 2c2g |
node02 | 10.10.10.5 | 2c2g |
# master
[root@master ~]# hostnamectl set-hostname master
# node01
[root@node01 ~]# hostnamectl set-hostname node01
# node02
[root@node02 ~]# hostnamectl set-hostname node02
# 所有主机都要配置
cat >> /etc/hosts << EOF
10.10.10.3 master
10.10.10.4 node01
10.10.10.5 node02
EOF
# 所有服务器都要安装
# 安装必要的一些系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker-CE
yum -y install docker-ce
# 所有节点启动docker 并配置开机自启
[root@master ~]# systemctl start docker && systemctl enable docker
把第一台机器master充当管理节点,第二台node01 、第三台node02作为工作节点
# master节点执行 IP为主机IP
[root@master ~]# docker swarm init --advertise-addr 10.10.10.3
如果你的 Docker 主机有多个网卡,拥有多个 IP,必须使用 –advertise-addr 指定 IP。
执行 docker swarm init 命令的节点自动成为管理节点。
命令 docker info 可以查看 swarm 集群状态。
# node01节点
[root@node01 ~]# docker swarm join --token SWMTKN-1-38vbfidgbpkdvwgpx2fzu1jwqtzlnlpfr0p73hcxfs3vwabl98-eenxcbwb3rd4633iw2vp4qwa1 10.10.10.3:2377
#node02节点
[root@node02 ~]# docker swarm join --token SWMTKN-1-38vbfidgbpkdvwgpx2fzu1jwqtzlnlpfr0p73hcxfs3vwabl98-eenxcbwb3rd4633iw2vp4qwa1 10.10.10.3:2377
查询节点状态
[root@master ~]# docker node ls
# 把工作节点作为备用主节点
[root@master ~]# docker node promote node01
[root@master ~]# docker node promote node02
# 查询节点状态
[root@master ~]# docker node ls
# 此时 node02、node03的 集群状态变为 Reachable(选举者)因为集群中节点Leader只能有一个
# 这个类似zookeeper 只不过zookeepers用的算法是paxos Swarm用的算法是raft
# 当master主机宕掉 Reachable会自动选举一个成为 Leader
# node节点需要先退出集群 (node节点上操作)
[root@node01 ~]# docker swarm leave --force
# 把需要删除的节点降为工作节点 (管理节点上操作)
[root@master ~]# docker node update --role worker node01
# 删除指定节点 (管理节点上操作)
[root@master ~]# docker node rm node1
重新加入节点
# node节点操作
[root@node01 ~]# docker swarm join --token SWMTKN-1-38vbfidgbpkdvwgpx2fzu1jwqtzlnlpfr0p73hcxfs3vwabl98-eenxcbwb3rd4633iw2vp4qwa1 10.10.10.3:2377
# 加入节点再次查询节点并升级为 Reachable(选举者)
[root@master ~]# docker node promote node01