Swarm搭建Docker集群 试验步骤
1、环境准备
1.1 所用版本如下
centos 7
docker
swaram
这里用两台机器来搭建,分别如下:
swarm01 192.168.0.240
swarm02 192.168.0.239
1.2 安装docker
# yum search docker
# yum install -y docker
# systemctl start docker
# systemctl status docker
1.3 加入开机自启
# systemctl enable docker
1.4 更改docker的镜像源
安装好之后,更改docker的镜像源,修改或新增 /etc/docker/daemon.json
# vi /etc/docker/daemon.json
修改成如下:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
或
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
然后重启
# systemctl restart docker.service
1.5 修改主机名
然后分别修改两台机器的主机名,更改成swarm01,swarm02
# hostnamectl set-hostname swarm01
1.6 关闭SELinux
[root@swaram01 ~]# getenforce
Disabled
[root@swaram01 ~]# /usr/sbin/sestatus -v
SELinux status: disabled
修改
# vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
注意: 设置后需要重启才能生效
1.7 编辑hosts文件
# vi /etc/hosts
设置两台主机的对应关系
192.168.182.110 swarm01
192.168.182.111 swarm02
1.8 关闭防火墙
# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动
1.9 修改docker监听端口
Swarm是通过监听2375端口进行通信的,所以在使用Swarm进行集群管理之前,需要设置一下2375端口的监听。所有主机节点docker开启2375监听,docker版本不同,配置方式不一样
# vim /lib/systemd/system/docker.service
在ExecStart加入:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
1.10 重启docker服务
# systemctl daemon-reload ##使配置文件生效
# systemctl restart docker
2、Swarm安装和集群创建
2.1 Swarm镜像下载
在两台机器上分别安装Swarm
# docker pull swarm
2.2 初始化Swarm
# docker swarm init --advertise-addr 192.168.0.240
上面命令执行后,该机器自动加入到swarm集群。这个会创建一个集群token,获取全球唯一的 token,作为集群唯一标识。后续将其他节点加入集群都会用到这个token值。
其中,–advertise-addr参数表示其它swarm中的worker节点使用此ip地址与manager联系。命令的输出包含了其它节点如何加入集群的命令。
2.3 添加集群节点
然后在swaram02机器上执行以下命令
# docker swarm join --token SWMTKN-1-3ur2cf9vu9vu80t28fusd8x60xmijnvlz5apzr23q22rg00w7v-08jesl2gz16d27j9xcsfkhoxs 192.168.0.240:2377
2.4 查看集群节点
# docker node list
3、swarm集群常用操作
3.1 节点信息查看
# docker node ls //查看集群节点
# docker node ls -q //查看节点ID
# docker node ls -f name=swarm01 //筛选满足条件(支持参数 name id)
3.2 修改节点
# docker node ls
# docker node promote swarm02 //节点升级: worker -> manager
# docker node demote swarm02 //节点降低:manager-> worker
指定参数修改
--advertise-addr: ip
--listen-addr: ip与端口
--availability: 节点的有效性("active"|"pause"|"drain")
--role:worker manager
# docker node update --role worker swarm02
3.3 移除节点
# docker swarm leave //在准备移除的节点上进行操作
# docker node rm localhost.localdomain //在控制节点上操作
工作节点执行docker node leave之后在集群节点状态变为Down,这样在集群节点执行docker node rm便可。
# docker node rm -f localhost.localdomain //如果需要强制移除节点,要添加 -f 参数