(VMware)ubuntu环境下搭建Swarm+Stack一站式部署容器集群
本文主要讲述如何在win10系统上,使用vmware安装Ubuntu虚拟机,搭建Swarm+Stack一站式部署容器集群
版本约定
试验电脑系统为 Windows 10 专业版
VMware 版本为 VMware Workstation 16 Pro
Ubuntu 版本为 Ubuntu 20.04.2 LTS
Docker 版本为 Docker version 20.10.6
docker-compose 版本为 docker-compose version 1.29.2
Swarm集群规划
虚拟机名称 username hostname IP 集群角色
node-1 yishao node1 192.168.57.131 Leader
node-2 yishao node2 192.168.57.132
node-3 yishao node3 192.168.57.133
Docker单机部署
可以参考笔者另外一篇,里面有比较详细的讲述,根据此文章的步骤我们可以完成Docker单机环境的部署, 并完成node-1的安装和配置:
虚拟机名称 username hostname IP
node-1 yishao node1 192.168.57.131
克隆虚拟机
同样根据笔者另外一篇 最后一章节内容,对已经完成的虚拟机node-1进行克隆,并分别命名为node-2、node-3,相关注意点已经在文中做了详细讲解。
克隆完成后分别将node-2、node-3的hostname设置为node2、node3,IP设置为
至此我们就得到了三台部署了单机Docker环境
虚拟机名称 username hostname IP
node-1 yishao node1 192.168.57.131
node-2 yishao node2 192.168.57.132
node-3 yishao node3 192.168.57.133
接下来的工作就需要我们将这三台单机Docker配置成集群环境
Swarm配置
在node-1中执行如下命令,初始化swarm
yishao@node1:~$ docker swarm init
根据上一条命令的执行结果提示,在node-2、node-3上执行join操作,如下
yishao@node2:~$ docker swarm join --token SWMTKN-1-0882whu3j7zzpvb0cfc3hhidrq7abz8jvbfq63qq0itbl1wclo-b626cuw5lj31yysta0593yhuk 192.168.57.131:2377
yishao@node3:~$ docker swarm join --token SWMTKN-1-0882whu3j7zzpvb0cfc3hhidrq7abz8jvbfq63qq0itbl1wclo-b626cuw5lj31yysta0593yhuk 192.168.57.131:2377
在node-1上查看集群信息
yishao@node1:~$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
6gln03vr6814qbs0izau27csw * node1 Ready Active Leader 20.10.6
sjwlf1zh3ict9t415m5nqhpy6 node2 Ready Active 20.10.6
wawizhmt4s5bk2yxqo5e36rzz node3 Ready Active 20.10.6
至此swarm、stack环境已经搭建成功~
部署应用
在/home/yishao/nginx目录下创建docker-compose.yml文件,内容如下
version: '3.1'
services:
nginx:
image: nginx
ports:
- 8888:80
deploy:
mode: replicated
replicas: 3
启动集群
yishao@node1:~/nginx$ docker stack deploy -c docker-compose.yml nginx
在node-1查看nginx集群是否启动成功
yishao@node1:~/nginx$ docker stack deploy -c docker-compose.yml nginx
Creating network nginx_default
Creating service nginx_nginx
yishao@node1:~/nginx$ docker stack ls
NAME SERVICES ORCHESTRATOR
nginx 1 Swarm
yishao@node1:~/nginx$ docker stack ps nginx
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
x4m2guy57y8a nginx_nginx.1 nginx:latest node2 Running Running 17 seconds ago
cmjhtqzhqwtr nginx_nginx.2 nginx:latest node3 Running Running 1 second ago
qrm2qsvt6aby nginx_nginx.3 nginx:latest node1 Running Running 17 seconds ago
yishao@node1:~/nginx$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9baac540686 nginx:latest "/docker-entrypoint.…" 28 seconds ago Up 26 seconds 80/tcp nginx_nginx.3.qrm2qsvt6abyt96ndixs16g77
在node-2查看nginx容器是否运行成功
yishao@node2:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58142d2413c8 nginx:latest "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp nginx_nginx.1.x4m2guy57y8a743dfi1ab2fyz
在node-3查看nginx容器是否运行成功
yishao@node3:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
41ba407e6b20 nginx:latest "/docker-entrypoint.…" 55 seconds ago Up 53 seconds 80/tcp nginx_nginx.2.cmjhtqzhqwtrleha8fgajqqs4
浏览器访问结果如下
