1、配置3台虚拟机
机器环境(三台机器,centos系统)
IP:192.168.31.44 主机名:Manager 担任角色:swarm manager
IP:192.168.31.109 主机名:Work1 担任角色:swarm node
IP:192.168.31.230 主机名:Work2 担任角色:swarm node
1.1准备工作
1.1.1修改主机名
########修改主机名
#########192.168.31.44 主机上执行
[root@manager43 ~]# hostnamectl set-hostname Manager
#########192.168.31.109 主机上执行
[root@node188 ~]# hostnamectl set-hostname work1
#########192.168.31.230 主机上执行
[root@node139 ~]# hostnamectl set-hostname work2
1.1.2关闭防火墙 && 重启docker服务
这里3台机器都要做
[root@work2 ~]# systemctl stop firewalld.service
[root@work2 ~]# systemctl restart docker
2、安装docker
因为我已经安装了,所以我不做过多累赘,如果不清楚如何安装,可以看我的另一篇文章
这里简单粘贴下代码
yum -y install docker
3、创建swarm并且添加节点
3.1初始化mannger
格式为docker swarm init --advertise-addr IP(你的 mannger 主机的 ip地址)
[root@Mannger /]# docker swarm init --advertise-addr 192.168.31.44
Swarm initialized: current node (cqhipbj779gnh5bfrp9wxbeod) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-35tf81ly8fg36wxqlvrtq25g0j36677f7u55qkmczrge2cpn69-di6ogpppo8xm92vf7p8d28yjs 192.168.31.44:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
顺利的话你会看见这个界面,其中
需要复制下来,这就是其他的蜂群连接过来的密钥,有了他才能添加节点
3.1.1初始化可能的错误
如果你之前创建过,可能会有以下的报错提醒
我们按报错信息输入
[root@Mannger /]# docker swarm leave
然而持续报错
我们继续按报错信息输入
[root@Mannger /]# docker swarm leave -- force
这个时候node就成功移除了,然后再重复上面的过程来初始化mannger
3.2 添加节点
直接将之前复制的密钥粘贴即可
如果报错提示已经存在节点,重复上面的错误1方法移除节点重新添加即可
如果顺利的话会是这样的提示
3.2.1可能遇到的错误2
如果你在粘贴后报错以下信息
我们需要检查机器的时钟设置
[root@work2 ~]# date
2021年 08月 31日 星期二 11:48:20 CST
我们需要确保3台主机的时钟一致(偏差几十秒问题不大没有影响)
我们可以看见 我的Mannger主机的date和节点机的时钟相差较大
我们下面进行修改时钟
[root@Mannger /]# date 083111492021.30
2021年 08月 31日 星期二 11:49:30 CST
//设置系统时间的操作:格式:date 月日时分年.秒
修改完成后我们继续添加
这个时候虽然之前报错了,但是其实节点已经添加了进去,通常需要重复移除操作
4、检查连接情况
我们需要再Mannger主机上运行下面的命令
[root@Mannger /]# docker node ls
检查后发现其他节点正常,连接,这个时候我们的集群基本部署就做好了,接下来我们就可以来部署服务了
5、启动alpine
[root@docker-manager ~]# docker service create --replicas 10 --name helloworld alpine ping docker.com
l65e19mrz1ywhu8sl3zim4bet
overall progress: 10 out of 10 tasks
1/10: running [==================================================>]
2/10: running [==================================================>]
3/10: running [==================================================>]
4/10: running [==================================================>]
5/10: running [==================================================>]
6/10: running [==================================================>]
7/10: running [==================================================>]
8/10: running [==================================================>]
9/10: running [==================================================>]
10/10: running [==================================================>]
verify: Service converged
5.1 查看swarm服务
我们使用docker service ls 来查看部署的服务情况
[root@docker-manager-1 ~]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
l65e19mrz1yw helloworld replicated 10/10 alpine:latest
————————————————
可以发件我们的helloworld已经部署成功了