阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Docker swarm构建WordPress集群

214次阅读
没有评论

共计 6745 个字符,预计需要花费 17 分钟才能阅读完成。

今天更新下 Docker swarm 集群和集群容错测试,把相关过程记录下来。

1、如下拓扑:

使用 Docker swarm 构建 WordPress 集群 

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:

使用 Docker swarm 构建 WordPress 集群

###

使用 Docker swarm 构建 WordPress 集群

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

使用 Docker swarm 构建 WordPress 集群

 

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 上,再次访问也是不影响的:

使用 Docker swarm 构建 WordPress 集群

 

## 到处已经完成了,我们可以看到通过 Docker swarm 构建集群是非常简单的,那么有没有 compose 可以结合 swarm 呢?在 compose v3 版本之后就体现了这个功能的强大。

更多 Docker 相关教程见以下内容

Docker 安装应用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm

Ubuntu 使用 VNC 运行基于 Docker 的桌面系统  http://www.linuxidc.com/Linux/2015-08/121170.htm

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

Ubuntu 15.04 下安装 Docker  http://www.linuxidc.com/Linux/2015-07/120444.htm

在 Ubuntu Trusty 14.04 (LTS) (64-bit)安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

在 Ubuntu 15.04 上如何安装 Docker 及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

Ubuntu 16.04 上 Docker 使用手记 http://www.linuxidc.com/Linux/2016-12/138490.htm

Docker 的详细介绍:请点这里
Docker 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143369.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计6745字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中