基于Docker的swarm集群部署

一、环境:

vm1        manager
vm2/vm3    node1/node2

二、swarm集群搭建

创建swarm manager

[root@vm1 docker]# systemctl start docker
[root@vm1 docker]# docker load <swarm.tar 
[root@vm1 docker]# docker swarm init --advertise-addr 172.25.79.11
Swarm initialized: current node (fpfznpjxzaanovzsvucxxfhnb) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-4duz28idog1wc1ylc7k6d8zoia4h9ut6n5vz15a7avwtynayy6-79vwi03wx9a5oh6etlrnimqdu \
    172.25.79.11:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

[root@vm1 docker]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
fpfznpjxzaanovzsvucxxfhnb *  vm1       Ready   Active        Leader
[root@vm2 docker]# docker swarm join --token SWMTKN-1-4duz28idog1wc1ylc7k6d8zoia4h9ut6n5vz15a7avwtynayy6-79vwi03wx9a5oh6etlrnimqdu 172.25.79.11:2377
This node joined a swarm as a worker.
[root@vm3 docker]# docker swarm join --token SWMTKN-1-4duz28idog1wc1ylc7k6d8zoia4h9ut6n5vz15a7avwtynayy6-79vwi03wx9a5oh6etlrnimqdu 172.25.79.11:2377
This node joined a swarm as a worker.

为集群添加节点

[root@vm1 docker]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
3jon2hx1frkna8obyv5h1u54f    vm2       Ready   Active        
fpfznpjxzaanovzsvucxxfhnb *  vm1       Ready   Active        Leader
qzf7jgabj5u2l0medr89w03xq    vm3       Ready   Active    

给节点开启防火墙策略

[root@vm2 docker]# systemctl start firewalld
[root@vm2 docker]# firewall-cmd --add-port 2377/tcp --permanent
success         ##集群的管理端口      
[root@vm2 docker]# firewall-cmd --add-port 7946/tcp --permanent
success         ##节点之间的通讯端口
[root@vm2 docker]# firewall-cmd --add-port 4789/udp --permanent
success         ##网络overlay的udp端口
[root@vm2 docker]# firewall-cmd --reload
success



[root@vm3 docker]# systemctl start firewalld
[root@vm3 docker]# firewall-cmd --add-port 2377/tcp --permanent
success
[root@vm3 docker]# firewall-cmd --add-port 7946/tcp --permanent
success
[root@vm3 docker]# firewall-cmd --add-port 4789/udp --permanent
success

[root@vm3 docker]# firewall-cmd --reload
success
[root@vm3 docker]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 7946/tcp 2377/tcp 4789/udp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

三、集群的nginx web部署

##联网下载nginx镜像
[root@vm2 mnt]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
Status: Image is up to date for nginx:latest

[root@vm3 mnt]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
Digest: sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424
Status: Image is up to date for nginx:latest

创建nginx集群服务,服务命名为webserver

[root@vm1 mnt]# docker service create --name webserver nginx
[root@vm1 mnt]# docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS     
fpfznpjxzaanovzsvucxxfhnb *  vm1       Ready   Active        Leader     
[root@vm1 mnt]# docker service ps webserver
ID            NAME         IMAGE         NODE  DESIRED STATE  CURRENT STATE           ERROR  PORTS
kwqrnf6c17oh  webserver.1  nginx:latest  vm3   Running        Running 39 seconds ago     

docker的集群规模控制

[root@vm1 mnt]# docker service scale webserver=3
webserver scaled to 3
[root@vm1 mnt]# docker service ps webserver
ID            NAME         IMAGE         NODE  DESIRED STATE  CURRENT STATE                   ERROR  PORTS
kwqrnf6c17oh  webserver.1  nginx:latest  vm3   Running        Running about a minute ago             
dgcok6p3y6yg  webserver.2  nginx:latest  vm1   Running        Running less than a second ago         
p47udwopzdo2  webserver.3  nginx:latest  vm2   Running        Running less than a second ago  
当vm1宕机时,swarm服务可以做自动迁移。
[root@vm1 mnt]# docker node update --availability drain vm1
vm1
[root@vm1 mnt]# docker service ps webserver
ID            NAME             IMAGE         NODE  DESIRED STATE  CURRENT STATE            ERROR  PORTS
kwqrnf6c17oh  webserver.1      nginx:latest  vm3   Running        Running 7 minutes ago           
o9rn76zqm9lj  webserver.2      nginx:latest  vm2   Running        Running 6 seconds ago           
dgcok6p3y6yg   \_ webserver.2  nginx:latest  vm1   Shutdown       Shutdown 34 seconds ago         
zai9s6k3g23z  webserver.3      nginx:latest  vm2   Running        Running 6 seconds ago           
当vm2宕机时,vm3接管vm2的服务
[root@vm2 mnt]# systemctl stop docker

[root@vm1 mnt]# docker service ps webserver
ID            NAME             IMAGE         NODE  DESIRED STATE  CURRENT STATE                ERROR  PORTS
kwqrnf6c17oh  webserver.1      nginx:latest  vm3   Running        Running 7 minutes ago                ##webserver.1vm3接管
f0lcc0wnt8li  webserver.2      nginx:latest  vm3  Running        Running 46 seconds ago              
o9rn76zqm9lj   \_ webserver.2  nginx:latest  vm2   Shutdown       Running about a minute ago          
dgcok6p3y6yg   \_ webserver.2  nginx:latest  vm1   Shutdown       Shutdown about a minute ago         
mhrqub8p8uzn  webserver.3      nginx:latest  vm3   Running        Running 46 seconds ago              
zai9s6k3g23z   \_ webserver.3  nginx:latest  vm2   Shutdown       Running about a minute ago    

遇到的问题:

这里写图片描述

[root@vm1 docker]# docker service ps webserver
ID            NAME             IMAGE  NODE  DESIRED STATE  CURRENT STATE           ERROR                          PORTS
qygsjxpkd008  webserver.1      nginx  vm1   Running        Running 2 minutes ago                                  
p717xdtel2nw   \_ webserver.1  nginx  vm2   Shutdown       Rejected 2 minutes ago  "No such image: nginx:latest"  
v3cgi34qc7k7   \_ webserver.1  nginx  vm3   Shutdown       Rejected 2 minutes ago  "No such image: nginx:latest"  

查看digest

[root@vm3 docker]# docker images --digests
REPOSITORY          TAG                 DIGEST              IMAGE ID            CREATED             SIZE
nginx               latest              <none>              af4b3d7d5401        2 years ago         190 MB
swarm               latest              <none>              a44ce04d6d59        2 years ago 
##获取到digest方可使用
[root@vm2 mnt]# docker pull nginx
[root@vm2 mnt]# docker images --digests
REPOSITORY          TAG                 DIGEST                                                                    IMAGE ID            CREATED             SIZE
nginx               latest              sha256:d85914d547a6c92faa39ce7058bd7529baacab7e0cd4255442b04577c4d1f424   c82521676580        3 weeks ago         109 MB
swarm               latest              <none>                                                                    a44ce04d6d59        2 years ago         18.1 MB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值