使用Docker swarm构建wordpress集群
? ?最近都在忙,久不更新博客了,今天更新下Docker swarm集群和集群容錯(cuò)測(cè)試:
1、如下拓?fù)?#xff1a;
2、環(huán)境說(shuō)明:
Master/nfs服務(wù)器:192.168.63.217 Worker:192.168.63.217 Worker:192.168.63.2163、創(chuàng)建一個(gè)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.service4、掛載/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、把我們?cè)贒ockerfile構(gòu)建的鏡像推送到本地倉(cāng)庫(kù)(這一塊可以參考之前的博客,Dockerfile章節(jié))
[root@masterwordpress]#?docker?p_w_picpath?tag?lnmp/php:1.0?192.168.63.217:5000/lnmp/php:1.0 [root@masterwordpress]#?docker?p_w_picpath?tag?lnmp/nginx:1.0?192.168.63.217:5000/lnmp/nginx:1.0 [root@masterwordpress]#?docker?p_w_picpath?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節(jié)點(diǎn)下載速度快點(diǎn),我們建議先docker pull到本地
6、構(gòu)建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節(jié)點(diǎn)上面操作,加入這個(gè)集群:
[root@node2?~]#docker?swarm?join??--token?SWMTKN-1-37fe5tarzcy50mazbe1e3ewyblkfk7xf9kx9ncanz0wx3q70e1-a7wn9tiepd114if6smuiqlez3?192.168.63.217:2377
7、查看集群的節(jié)點(diǎn)狀態(tài):
[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集群容器互相通訊,我們先創(chuàng)建一個(gè)overlay網(wǎng)絡(luò):
[root@master?docker]#?docker?network?create?--driver?overlaynginx_network##注意內(nèi)核版本要3.18以上,不夠的話要升級(jí)
9、隨機(jī)創(chuàng)建調(diào)度一個(gè)9000端口的Php service運(yùn)行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.010、啟動(dòng)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.011、再啟動(dòng)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.012、我們也可以在復(fù)制出一個(gè)web service:
[root@master?wordpress]#?docker?servicescale?web=2 web?scaled?to?213、看一下我們的容器到底運(yùn)行在哪個(gè)linux主機(jī)上呢:
[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?ago14、我們已經(jīng)確認(rèn)所有的容器都已經(jīng)起起來(lái)并且正常運(yùn)行了,訪問一下web就可以進(jìn)行80端口的訪問了,192.168.63.217:
###
####直接到安裝完成:
15、為了測(cè)試高可用性,我們把node1節(jié)點(diǎn)關(guān)閉掉,看容器是否轉(zhuǎn)移:
我們?cè)趎ode1執(zhí)行關(guān)閉docker:
[root@node1?web]#?systemctl?stop?docker16、在master節(jié)點(diǎn)上查看一下狀態(tài):
[root@master?web]#?docker?node?ls ID??????????????????????????HOSTNAME??STATUS??AVAILABILITY?MANAGER?STATUS e9naz0ctzaaer4bwleruo34x6?*?master????Ready???Active???????Leader rfcbavxd8yrixximm9e1i6dsn???node1?????Down????Active???????? shrzku0k3xx87526lkkkyrxsi???node2?????Ready???Active17、我們可以看到node1節(jié)點(diǎn)已經(jīng)Down,然后我們的Docker 容器也已經(jīng)轉(zhuǎn)移到了別的worker節(jié)點(diǎn)上:
[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節(jié)點(diǎn)上之前運(yùn)行的容器已經(jīng)shutdown了,然后轉(zhuǎn)移到了master和node2上,再次訪問也是不影響的:
##到處已經(jīng)完成了,我們可以看到通過(guò)Docker swarm構(gòu)建集群是非常簡(jiǎn)單的,那么有沒有compose可以結(jié)合swarm呢?在compose v3版本之后就體現(xiàn)了這個(gè)功能的強(qiáng)大。
?
?
Docker詳情與集群架構(gòu)部分可以查看http://www.roncoo.com/course/view/3e9d9c48f76f4c698b8349d04b763467
轉(zhuǎn)載于:https://blog.51cto.com/xiaoluoge/1920377
總結(jié)
以上是生活随笔為你收集整理的使用Docker swarm构建wordpress集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动化运维工具SaltStack详细部署
- 下一篇: SQL Server 2016 列存储技