KingHu88-关注互联网以及分享IT运维工作经验

当前位置:首页 - 容器 - DOCKER - 正文

君子好学,自强不息!

Docker swarm集群

2017-09-04 | DOCKER | kinghu | 461°c
A+ A-

2、环境说明:

Master服务器:192.168.63.217

Worker1:192.168.63.215 

Worker2:192.168.63.216

6、构建Docker swarm集群操作:

[root@master~]# docker swarm init --advertise-addr 192.168.63.217 

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

    docker swarm join  --token SWMTKN-1-37fe5tarzcy50mazbe1e3ewyblkfk7xf9kx9ncanz0wx3q70e1-a7wn9tiepd114if6smuiqlez3 192.168.63.217:2377

##在worker节点上面操作,加入这个集群:

[root@node2 ~]# docker swarm join \

                            --token SWMTKN-1-37fe5tarzcy50mazbe1e3ewyblkfk7xf9kx9ncanz0wx3q70e1-a7wn9tiepd114if6smuiqlez3 192.168.63.217:2377

7、查看集群的节点状态:

[root@master wordpress]# docker node ls 

ID                                               HOSTNAME  STATUS    AVAILABILITY          MANAGER STATUS 

e9naz0ctzaaer4bwleruo34x6 *  master           Ready         Active                      Leader    

shrzku0k3xx87526lkkkyrxsi       node2            Ready         Active

8、为了使得Docker swarm集群容器互相通讯,我们先创建一个overlay网络:

[root@master docker]# docker network create --driver overlay nginx_network


9、随机创建调度一个9000端口的Php service运行Docker容器:

[root@masterwordpress]# docker service create --mount type=bind,source=/web/,target=/web/--network nginx_network --name php -p 9000:9000 php:1.0  

[root@masterwordpress]# docker service ls 

ID                        NAME                MODE                REPLICAS            IMAGE 

ira3ezabroai        php                 replicated                1/1                   php:1.0

10、启动nginx service:

[root@masterwordpress]# docker service create --mount type=bind,source=/web/,target=/web/  --network  nginx_network --name web -p 80:80 nginx:1.0

11、再启动mysql service:

[root@masterwordpress]# docker service create --mount type=bind,source=/data/,target=/var/lib/mysql/  --network  nginx_network --name mysql -p 3306:3306 mysql:1.0

12、我们也可以在复制出一个web service:

[root@master wordpress]# docker service scale web=2 

web scaled to 2

13、看一下我们的容器到底运行在哪个linux主机上呢:

[root@master wordpress]# docker service ls 

ID                           NAME                MODE                REPLICAS            IMAGE 

ira3ezabroai           php                replicated              1/1                      php:1.0 

kcxqzxwe0dzb       mysql              replicated              1/1                     mysql:1.0 

ufn1n5phtsqn        web                replicated              2/2                      nginx:1.0


[root@master wordpress]# docker service ps php 

ID                         NAME                IMAGE                              NODE                DESIRED STATE               CURRENT STATE           ERROR               PORTS 

ptxokpvq1b7s       php.1              php:1.0  master                  Running             Running 5 minutes ago                        

[root@master wordpress]# docker service ps mysql 

ID                        NAME                IMAGE                                NODE                DESIRED STATE              CURRENT STATE           ERROR               PORTS 

zowbxqnr9toi       mysql.1            mysql:1.0  node2               Running             Running 2 minutes ago                        

[root@master wordpress]# docker service ps web 

ID                        NAME                IMAGE                                NODE                DESIRED STATE              CURRENT STATE            ERROR               PORTS 

vhk44hij7gnu       web.1              nginx:1.0  node1                Running             Running 3 minutes ago                             

u1vdnr0ujzl7       web.2               nginx:1.0  node2                 Running             Running about a minute ago

14、我们已经确认所有的容器都已经起起来并且正常运行了,访问一下web就可以进行80端口的访问了,192.168.63.217:

15、为了测试高可用性,我们把node1节点关闭掉,看容器是否转移:

我们在node1执行关闭docker:

[root@node1 web]# systemctl stop docker

16、在master节点上查看一下状态:

[root@master web]# docker node ls 

ID                                                    HOSTNAME     STATUS      AVAILABILITY       MANAGER STATUS 

e9naz0ctzaaer4bwleruo34x6 *        master            Ready          Active                   Leader      

shrzku0k3xx87526lkkkyrxsi             node2             Ready          Active

17、我们可以看到node1节点已经Down,然后我们的Docker 容器也已经转移到了别的worker节点上:

[root@master web]# docker service ps php 

ID                 NAME                IMAGE                              NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS 

ptxokpvq1b7s       php.1              php:1.0  master              Running             Running 18 minutes ago                        

[root@master web]# docker service ps mysql 

ID                  NAME                IMAGE                                NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS 

zowbxqnr9toi       mysql.1            mysql:1.0  node2               Running             Running 15 minutes ago                        

[root@master web]# docker service ps web 

ID                          NAME                     IMAGE                                NODE                DESIRED STATE       CURRENT STATE            ERROR               PORTS 

jqcuqzjdgi9y         web.1              nginx:1.0  master                  Running                Running 2 minutes ago                         

vhk44hij7gnu         \_web.1        nginx:1.0  node1                    Shutdown             Running 2 minutes ago                         

u1vdnr0ujzl7         web.2              nginx:1.0  node2                   Running                Running 14 minutes ago


##我们可以看到在node1节点上之前运行的容器已经shutdown了,然后转移到了master和node2上,再次访问也是不影响的:


本文来源:KingHu88

本文地址:http://www.kinghu.cc/index.php/post/193.html

关注我们:微信搜索“Edangerous”添加我为好友

版权声明:如无特别注明,转载请注明本文地址!

推荐阅读
发布人:
最近发表