设为首页 收藏本站
查看: 854|回复: 0

[经验分享] 使用Docker swarm构建wordpress集群

[复制链接]

尚未签到

发表于 2018-5-28 08:18:05 | 显示全部楼层 |阅读模式
  最近都在忙,久不更新博客了,今天更新下Docker swarm集群和集群容错测试:
  

  1、如下拓扑:
DSC0000.png

  

  2、环境说明:
Master/nfs服务器:192.168.63.217
Worker:192.168.63.217
Worker:192.168.63.216  
  3、创建一个nfs挂载目录,用于存放wordpress代码(63.217):
[root@master ~]#yum install -y nfs-utils   
[root@master ~]## cat /etc/exports
/web 192.168.63.0/24(rw,sync,fsid=0)
[root@master ~]#systemctl enable rpcbind.service   
[root@master ~]#systemctl enable nfs-server.service   
[root@master ~]#systemctl start rpcbind.service   
[root@master ~]#systemctl start nfs-server.service  
  4、挂载/web目录(worker):
[root@node2 ~]#yum install -y nfs-utils
[root@node2 ~]#systemctl enable rpcbind.service
[root@node2 ~]#systemctl start rpcbind.service
[root@webstatus ~]# mount192.168.63.217:/web /web
##挂载之后上传wordpress代码  5、把我们在Dockerfile构建的镜像推送到本地仓库(这一块可以参考之前的博客,Dockerfile章节)
  
[root@masterwordpress]# docker image tag lnmp/php:1.0 192.168.63.217:5000/lnmp/php:1.0
[root@masterwordpress]# docker image tag lnmp/nginx:1.0 192.168.63.217:5000/lnmp/nginx:1.0
[root@masterwordpress]# docker image tag lnmp/mysql:1.0 192.168.63.217:5000/lnmp/mysql:1.0
[root@master wordpress]# docker push192.168.63.217:5000/lnmp/php:1.0
[root@master wordpress]# docker push192.168.63.217:5000/lnmp/nginx:1.0
[root@master wordpress]# docker push192.168.63.217:5000/lnmp/mysql:1.0  ##为了worker节点下载速度快点,我们建议先docker pull到本地
  6、构建Docker swarm集群63.217操作:
[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 \
    --tokenSWMTKN-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
rfcbavxd8yrixximm9e1i6dsn    node1    Ready   Active        
shrzku0k3xx87526lkkkyrxsi    node2    Ready   Active  8、为了使得Docker swarm集群容器互相通讯,我们先创建一个overlay网络:
[root@master docker]# docker network create --driver overlaynginx_network  ##注意内核版本要3.18以上,不够的话要升级
  

  9、随机创建调度一个9000端口的Php service运行Docker容器:
[root@masterwordpress]# docker service create --mount type=bind,source=/web/,target=/web/--network nginx_network --name php -p 9000:9000192.168.63.217:5000/lnmp/php:1.0
[root@masterwordpress]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE
ira3ezabroai        php                 replicated          1/1                 192.168.63.217:5000/lnmp/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 192.168.63.217:5000/lnmp/nginx:1.0  11、再启动mysql service:
[root@masterwordpress]# docker service create --mounttype=bind,source=/data/,target=/var/lib/mysql/ --network nginx_network --namemysql -p 3306:3306 192.168.63.217:5000/lnmp/mysql:1.0  12、我们也可以在复制出一个web service:
[root@master wordpress]# docker servicescale web=2
web scaled to 2  13、看一下我们的容器到底运行在哪个linux主机上呢:
[root@master wordpress]# docker service ls
ID                 NAME                MODE                REPLICAS            IMAGE
ira3ezabroai       php                replicated          1/1                 192.168.63.217:5000/lnmp/php:1.0
kcxqzxwe0dzb       mysql              replicated          1/1                 192.168.63.217:5000/lnmp/mysql:1.0
ufn1n5phtsqn        web                replicated          2/2                192.168.63.217:5000/lnmp/nginx:1.0  #####
[root@master wordpress]# docker service ps php
ID                 NAME                IMAGE                              NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
ptxokpvq1b7s       php.1              192.168.63.217:5000/lnmp/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            192.168.63.217:5000/lnmp/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              192.168.63.217:5000/lnmp/nginx:1.0  node1               Running             Running 3 minutes ago                           
u1vdnr0ujzl7       web.2              192.168.63.217:5000/lnmp/nginx:1.0  node2               Running             Running about a minute ago  14、我们已经确认所有的容器都已经起起来并且正常运行了,访问一下web就可以进行80端口的访问了,192.168.63.217:
DSC0001.png

  ###
DSC0002.png

  ####直接到安装完成:

DSC0003.png

  

  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
rfcbavxd8yrixximm9e1i6dsn   node1     Down    Active        
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              192.168.63.217:5000/lnmp/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            192.168.63.217:5000/lnmp/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              192.168.63.217:5000/lnmp/nginx:1.0  master              Running             Running 2 minutes ago                        
vhk44hij7gnu         \_web.1          192.168.63.217:5000/lnmp/nginx:1.0  node1               Shutdown            Running 2 minutes ago                        
u1vdnr0ujzl7       web.2              192.168.63.217:5000/lnmp/nginx:1.0  node2               Running             Running 14 minutes ago  ##我们可以看到在node1节点上之前运行的容器已经shutdown了,然后转移到了master和node2上,再次访问也是不影响的:
DSC0004.png

  

  ##到处已经完成了,我们可以看到通过Docker swarm构建集群是非常简单的,那么有没有compose可以结合swarm呢?在compose v3版本之后就体现了这个功能的强大。
  Docker详情与集群架构部分可以查看http://www.roncoo.com/course/view/3e9d9c48f76f4c698b8349d04b763467

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-481968-1-1.html 上篇帖子: Docker 组件如何协作? 下篇帖子: (五)Docker镜像管理2之镜像制作
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表