gradient

Docker Swarm食用方法_1

rain

前言

Swarm是Docker公司在2014年12月初新发布的容器管理工具。和Swarm一起发布的Docker管理工具还有Machine以及Compose,号称Docker三剑客。
Swarm项目是Docker公司发布三剑客(Swarm,Compose,Machine)中的一员,用来提供容器集群服务,目的是更好的帮助用户管理多个Docker Engine,方便用户使用,像使用Docker Engine一样使用容器集群服务。

正言

前期准备

3.台Cetnos 7.9主机,这里使用
192.168.100.141.  mastet     CentOS Linux 7
192.168.100.142.   node 1     CentOS Linux 7
192.168.100.143.  node 2     CentOS Linux 7

第一步

关闭防火墙
systemctl status firewalld.service 查看防火墙状态
systemctl stop firewalld.service 关闭防火墙(开机会默认启动)
systemctl disable firewalld.service 禁止防火墙开机自启
systemctl status firewalld.service  查看防火墙状态

第二步

关闭swap
swapoff -a 临时关闭swap
vim /etc/fstab 永久关闭swap 将swap这一行注释用
#/dev/mapper/centos-swap swap swap defaults      0    0

第三步

升级系统内核
这里参考Linux kernel 升级食用方法

第四步

安装Docker
这里参考Docker 食用方法

到此 前期准备完成

PS:以上四步,3台主机都要执行。

中期实施

第一步

初始化Docker Swarm集群
docker swarm init –advertise-addr 192.168.100.141:2377 –listen-addr 192.168.100.141:2377

第二步

查看集群状态
docker node ls
出现如下,则初始化成功
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
lkkznjoxb0doh05e3iiag5m25 * master Ready Active Leader 24.0.6

第三步

添加主机到集群中

添加worker节点
执行docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join –token SWMTKN-1-34k5r4qrb2vng0x32l1umhnmnjbk94najj86qr1eslwdzaux3b-abb59gq9w6816ljdpwgrtpccc 192.168.100.141:2377

添加docker swarm join-token manager
To add a manager to this swarm, run the following command:
docker swarm join –token SWMTKN-1-34k5r4qrb2vng0x32l1umhnmnjbk94najj86qr1eslwdzaux3b-3u0n9u8r4lzg2m27gnq3juuf9 192.168.100.141:2377

这里我们添加worker,在master 执行 docker swarm join-token worker  获取命令
在node1,node2 上分别执行docker swarm join –token SWMTKN-1-34k5r4qrb2vng0x32l1umhnmnjbk94najj86qr1eslwdzaux3b-abb59gq9w6816ljdpwgrtpccc 192.168.100.141:2377

然后在master主机执行docker node lsID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
lkkznjoxb0doh05e3iiag5m25 * master Ready Active Leader 24.0.6
6vcjr61jcuylsw8fvqrg0liu4 node1 Ready Active 24.0.6
o73jq8qpsdz41jfivptnz0cie node2 Ready Active 24.0.6

在HOSTNAME中出现node1、node2,则添加成功了
这里需要注意的是docker node 之类的命令只能在manager中执行,在worker中执行会报错。
如何区分是否为manager 只需要查看状态MANAGER STATUS是否为 Leader
在manager中执行docker node inspect $HOSTNAME
在这里可以清楚的看到是否为manager还是worker
“Spec”: {
“Labels”: {},
“Role”: “worker/manager”,  如果是worker 则出现worker,如果是manager则出现manager
“Availability”: “active”

Leave a Comment