搭建docker swarm集群
机器环境
Swarm集群
IP:192.168.174.147 主机名: manager147 担任角色: swarm manager
IP:192.168.174.163 主机名: node163 担任角色: swarm node
IP:192.168.174.164 主机名: node164 担任角色: swarm node
NFS服务器
IP:192.168.174.167
LB -> Nginx
IP:192.168.174.168
搭建NFS服务器
1.1安装nfs服务
yum install -y nfs-utils
systemctl start nfs-server
mkdir /web
chmod 777 /web
#将web页面存放到此目录下
[root@localhost ~]# cat /etc/exports
/web 192.168.174.0/24(rw,all_squash,sync)
exportfs -rv
搭建swarm集群
1.0 在所有docker机器上安装nfs
yum install -y nfs-utils
1.1 在manager上执行
[root@manager147 ~]# docker swarm init --advertise-addr 192.168.174.147
docker swarm join --token SWMTKN-1-3aq5b1fh3omiq6uu1whu9byqwfmtkthkesvs8oukvqfqh7pp1g-erqtwgfawibiwgf4tgj0782wa 192.168.174.147:2377
[root@manager147 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
gvdkfwr1zavp1r4y8pgyrklv0 * manager147 Ready Active Leader 20.10.3
1.2 在work上执行
docker swarm join --token SWMTKN-1-3aq5b1fh3omiq6uu1whu9byqwfmtkthkesvs8oukvqfqh7pp1g-erqtwgfawibiwgf4tgj0782wa 192.168.174.147:2377
1.3 在manager上执行
[root@manager147 ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
gvdkfwr1zavp1r4y8pgyrklv0 * manager147 Ready Active Leader 20.10.3
rcfmq933rwammtgfuucc591al node163 Ready Active 20.10.3
2fghot8id4nlo80gruido5xao node164 Ready Active 20.10.3
[root@manager147 ~]# docker service create -d --name nfs-service \
--mount 'type=volume,source=nfsvolume,target=/usr/share/nginx/html,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/web,"volume-opt=o=addr=192.168.174.167,rw,nfsvers=4,sync"' \
--replicas 6 -p 80:80 nginx:1.18
yvcdi2z6jqmfvbo5jx1qc8mcx
搭建Nginx负载均衡器
yum install -y nginx
systemctl start nginx
# 修改nginx配置文件
upstream swarm_pools {
server 192.168.174.163 weight=10; #权重
server 192.168.174.164 weight=10;
server 192.168.174.147 weight=5;
}
server {
..........
location / {
proxy_pass http://swarm_pools;
}
}
#刷新nginx配置
nginx -s reload
访问负载均衡器的外网卡IP