Docker学习-Swarm部署Tomcat集群
一、Swarm集群搭建
1.准备工作
准备(至少)四台机器,都安装Docker环境。4台机器命名:
docker1
、docker2
、docker3
、docker4
[root@iZuf60iq1x5h6s5apkzxd3Z ~]# docker version
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:58:10 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
2.搭建swarm集群
- 设置
docker1
主节点
# 生成主节点
[root@iZuf60iq1x5h6s5apkzxd3Z ~]# docker swarm init --advertise-addr 172.24.4.239
Swarm initialized: current node (j144wi0g40vo5z7gw784bhh7x) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-423dqj251m4z15o45r3fl9u8ze2r2tqvng0xzbut3stf3v410p-a09qghib4prxs2eq9zjcareze 172.24.4.239:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
- 设置
docker2
为worker
工作节点
docker swarm join --token SWMTKN-1-423dqj251m4z15o45r3fl9u8ze2r2tqvng0xzbut3stf3v410p-a09qghib4prxs2eq9zjcareze 172.24.4.239:2377
此时加入可能提示加入失败,可能是防火墙没关
# 查看manage节点机器上防火墙状态
systemctl status firewalld.service
# 停止防火墙
systemctl stop firewalld.service
# 永久停止
systemctl disable firewalld.service
- 设置
docker3
为manager
节点,docker4
为worker
节点
# 获取 worker 工作节点token命令
docker swarm join-token worker
# docker4 加入
docker swarm join --token SWMTKN-1-423dqj251m4z15o45r3fl9u8ze2r2tqvng0xzbut3stf3v410p-a09qghib4prxs2eq9zjcareze 172.24.4.239:2377
# 获取 manager 工作节点token命令
docker swarm join-token manager
# docker3 加入
docker swarm join --token SWMTKN-1-423dqj251m4z15o45r3fl9u8ze2r2tqvng0xzbut3stf3v410p-awfk6uhbwth8e76o1r2uaw78s 172.24.4.239:2377
- 查看节点情况
[root@iZuf60iq1x5h6s5apkzxd3Z ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
j144wi0g40vo5z7gw784bhh7x * iZuf60iq1x5h6s5apkzxd3Z Ready Active Leader 20.10.7
- 节点退出集群
docker swarm leave
- 了解
> docker stack:docker-compose集群版本
> docker serect:安全证书、密码
> docker config:配置
二、部署Tomcat镜像集群
验证Swarm集群环境
1.创建名为
tomcat-net
的覆盖网络(Overlay Netowork),这是个二层网络,处于该网络下的docker容器,即使宿主机不一样,也能相互访问:
docker network create -d overlay tomcat-net
2.创建名为tomcat的服务,使用了刚才创建的覆盖网络:
docker service create --name tomcat-swarm-test \
--network tomcat-net \
-p 58080:8080 \
--replicas 2 \
--mount type=bind,src=/data/tomcat/webapps,dst=/usr/local/tomcat/webapps,readonly \
--mount type=bind,src=/data/tomcat/log,dst=/usr/local/tomcat/logs,readonly \
tomcat:8
# 参数解析
--replicas 2 设置集群副本数量
--mount type=bind,src=/data/tomcat/webapps,dst=/usr/local/tomcat/webapps,readonly
设置tomcat文件挂载
3.执行命令
docker service ls
查看当前所有服务:
[root@host201 tomcat]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
0c5s48acn634 tomcat-swarm-test replicated 2/2 tomcat:8 *:58080->8080/tcp
4.执行命令
docker service ps tomcat-swarm-test
查看名为tomcat的服务,可见两个容器分别部署在host201
、host202
机器上
[root@host201 tomcat]# docker service ps tomcat-swarm-test
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
smjj4esupws9 tomcat-swarm-test.1 tomcat:8 host202 Running Running 16 minutes ago
k7g0c97vgjyx tomcat-swarm-test.2 tomcat:8 host201 Running Running 16 minutes ago