成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

DockerSwarm群集配置實(shí)戰(zhàn)(1)-創(chuàng)新互聯(lián)

前言:

Docker Swarm 和 Docker Compose 一樣,都是 Docker 官方容器編排項(xiàng)目,但不同的是,Docker Compose 是一個(gè)在單個(gè)服務(wù)器或主機(jī)上創(chuàng)建多個(gè)容器的工具,而 Docker Swarm 則可以在多個(gè)服務(wù)器或主機(jī)上創(chuàng)建容器集群服務(wù),對(duì)于微服務(wù)的部署,顯然 Docker Swarm 會(huì)更加適合。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供博州網(wǎng)站建設(shè)、博州做網(wǎng)站、博州網(wǎng)站設(shè)計(jì)、博州網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、博州企業(yè)網(wǎng)站模板建站服務(wù),10余年博州做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

從 Docker 1.12.0 版本開(kāi)始,Docker Swarm 已經(jīng)包含在 Docker 引擎中(docker swarm),并且已經(jīng)內(nèi)置了服務(wù)發(fā)現(xiàn)工具,我們就不需要像之前一樣,再配置 Etcd 或者 Consul 來(lái)進(jìn)行服務(wù)發(fā)現(xiàn)配置了。

Docker Swarm集群中有三個(gè)角色:manager(管理者);worker(實(shí)際工作者)以及service(服務(wù))。

在上面的三個(gè)角色中,其本質(zhì)上與我們公司的組織架構(gòu)類似,有領(lǐng)導(dǎo)(manager),有搬磚的(worker),而領(lǐng)導(dǎo)下發(fā)給搬磚者的任務(wù),就是Docker Swarm中的service(服務(wù))。

需要注意的是,在一個(gè)Docker Swarm群集中,每臺(tái)docker服務(wù)器的角色可以都是manager,但是,不可以都是worker,也就是說(shuō),不可以群龍無(wú)首,并且,參與群集的所有主機(jī)名,千萬(wàn)不可以沖突。

這里通過(guò)一個(gè)案例來(lái)展示Docker Swarm集群的配置。


博文大綱:
一、環(huán)境準(zhǔn)備
二、配置主機(jī)docker01
三、配置docker02及docker03加入Swarm群集
四、搭建registry私有倉(cāng)庫(kù)
五、docker01部署docker Swarm群集的web UI界面
六、docker Swarm群集的service服務(wù)配置
七、實(shí)現(xiàn)docker容器的擴(kuò)容及縮容
八、附加——docker Swarm群集常用命令
九、docker Swarm總結(jié)

一、環(huán)境準(zhǔn)備

Docker  Swarm群集配置實(shí)戰(zhàn)(1)

在上述主機(jī)中,將指定主機(jī)docker01為manager的角色,其他主機(jī)的角色為worker。

二、配置主機(jī)docker01

以下操作,將初始化一個(gè)Swarm群集,并指定docker01的角色為manager。

#由于需要在三臺(tái)主機(jī)間復(fù)制一些配置文件,所以在docker01上配置免密登錄
[root@docker01 ~]# ssh-keygen     #生成密鑰對(duì),一路按回車即可生成
[root@docker01 ~]# tail -3 /etc/hosts   #配置/etc/hosts文件
#三臺(tái)主機(jī)之間要互相解析(Swarm群集也需要此配置)
192.168.20.6 docker01
192.168.20.7 docker02
192.168.20.8 docker03
[root@docker01 ~]# ssh-copy-id docker02   #將生成的秘鑰發(fā)送到docker02
root@docker02 s password:        #要輸入docker02的root密碼
[root@docker01 ~]# ssh-copy-id docker03   #將秘鑰發(fā)送到docker03,同樣需要輸入docker03的root密碼
[root@docker01 ~]# scp /etc/hosts docker02:/etc/   #將hosts文件發(fā)送到docker02
[root@docker01 ~]# scp /etc/hosts docker03:/etc/   #將hosts文件發(fā)送到docker03
[root@docker01 ~]# docker swarm init --advertise-addr 192.168.20.6   #初始化一個(gè)集群,并指定自己為manager

當(dāng)執(zhí)行上述操作,指定自己為manager初始化一個(gè)群組后,則會(huì)隨著命令的執(zhí)行成功而返回一系列的提示信息,這些提示信息給出的是,如果其他節(jié)點(diǎn)需要加入此節(jié)點(diǎn),需要執(zhí)行的命令,直接對(duì)其進(jìn)行復(fù)制,然后,在需要加入此群集的主機(jī)上執(zhí)行,即可成功加入群集。

返回的提示信息如下:

Docker  Swarm群集配置實(shí)戰(zhàn)(1)

在上述中,既然給出了相應(yīng)的命令,那么,現(xiàn)在開(kāi)始配置需要加入群集的docker服務(wù)器。

三、配置docker02及docker03加入Swarm群集

#docker02執(zhí)行以下命令:
[root@docker02 ~]# docker swarm join --token SWMTKN-1-5ofgk6fh2vey2k7qwsk4gb9yohkxja6hy8les7plecgih2xiw1-3vpemis38suwyxg3efryv5nyu 192.168.20.6:2377
#docker03也執(zhí)行以下命令
[root@docker03 ~]# docker swarm join --token SWMTKN-1-5ofgk6fh2vey2k7qwsk4gb9yohkxja6hy8les7plecgih2xiw1-3vpemis38suwyxg3efryv5nyu 192.168.20.6:2377
[root@docker01 ~]# docker node promote docker02    #將docker02從worker升級(jí)為manager。

至此,docker02及03便以worker的角色加入到了群集當(dāng)中。

若docker02或者docker03要脫離這個(gè)群集,那么需要以下配置(這里以docker03為例):

#將docker03脫離這個(gè)群集
[root@docker03 ~]# docker swarm leave        #在docker03上執(zhí)行此命令
[root@docker01 ~]# docker node rm docker03         #然后在manager角色的服務(wù)器上移除docker03
[root@docker01 ~]# docker swarm leave -f  #若是最后一個(gè)manager上進(jìn)行刪除群集,則需要加“-f”選項(xiàng)
#最后一個(gè)刪除后,這個(gè)群集也就不存在了

四、搭建registry私有倉(cāng)庫(kù)

在docker Swarm群集中,私有倉(cāng)庫(kù)并不影響其群集的正常運(yùn)行,只是公司的生產(chǎn)環(huán)境多數(shù)都是自己的私有倉(cāng)庫(kù),所以這里模擬一下。

[root@docker01 ~]# docker run -d --name registry --restart always -p 5000:5000 registry  #運(yùn)行一個(gè)registry倉(cāng)庫(kù)容器
[root@docker01 ~]# vim /usr/lib/systemd/system/docker.service    #修改docker配置文件,以便指定私有倉(cāng)庫(kù)
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.20.6:5000    #定位到改行,指定私有倉(cāng)庫(kù)IP及端口
#編輯完成后,保存退出即可
[root@docker01 ~]# systemctl daemon-reload       #重新加載配置文件
[root@docker01 ~]# systemctl restart docker         #重啟docker服務(wù)
#docker02及docker03也需要指定私有倉(cāng)庫(kù)的位置,所以執(zhí)行下面的命令將更改后的docker配置文件復(fù)制過(guò)去
[root@docker01 ~]# scp /usr/lib/systemd/system/docker.service docker02:/usr/lib/systemd/system/         
[root@docker01 ~]# scp /usr/lib/systemd/system/docker.service docker03:/usr/lib/systemd/system/
#將docker的配置文件復(fù)制過(guò)去以后,需要重啟docker02及03的docker服務(wù)
#下面的命令需要在docker02及03的服務(wù)器上分別運(yùn)行一次:
[root@docker02 ~]# systemctl daemon-reload
[root@docker02 ~]# systemctl restart docker

在私有倉(cāng)庫(kù)完成后,最好測(cè)試一下是否可以正常使用,如下:

#docker01將httpd鏡像上傳到私有倉(cāng)庫(kù)
[root@docker01 ~]# docker tag httpd:latest 192.168.20.6:5000/lvjianzhao:latest
[root@docker01 ~]# docker push 192.168.20.6:5000/lvjianzhao:latest 
#在dokcer02上進(jìn)行下載,測(cè)試是否可以正常下載
[root@docker02 ~]# docker pull 192.168.20.6:5000/lvjianzhao:latest
#可以正常下載,說(shuō)明私有倉(cāng)庫(kù)可用

在上面搭建私有倉(cāng)庫(kù)的過(guò)程,并沒(méi)有實(shí)現(xiàn)數(shù)據(jù)的持久化,若需要基于數(shù)據(jù)持久化搭建私有倉(cāng)庫(kù),可以參考博文:Docker之Registry私有倉(cāng)庫(kù)+Harbor私有倉(cāng)庫(kù)的搭建。

五、docker01部署docker Swarm群集的web UI界面

[root@docker01 ~]# docker run -d -p 8000:8080 -e HOST=172.16.20.6 -e PORT=8080 -v /var/run/docker.sock:/var/run/docker.sock  --name visualizer  dockersamples/visualizer
#執(zhí)行上述命令后,即可客戶端訪問(wèn)其8000訪問(wèn),可以看到群集內(nèi)的節(jié)點(diǎn)信息
#若節(jié)點(diǎn)發(fā)生故障,則會(huì)立即檢測(cè)到

訪問(wèn)docker01的8000端口,即可看到以下界面(該界面只能看,不能進(jìn)行任何配置):

Docker  Swarm群集配置實(shí)戰(zhàn)(1)

配置至此,docker Swarm的群集基本完善了,接下來(lái),開(kāi)始展示該群集,究竟可以做些什么?也就是到了配置其service服務(wù)階段。

六、docker Swarm群集的service服務(wù)配置

1、在docker01(必須在manager角色的主機(jī))上,發(fā)布一個(gè)任務(wù),使用剛剛測(cè)試時(shí)上傳的httpd鏡像,運(yùn)行六個(gè)容器,命令如下:

[root@docker01 ~]# docker service create --replicas 6 --name lvjianzhao -p 80 192.168.20.6:5000/lvjianzhao:latest 
#上述命令中,“--replicas”選項(xiàng)就是用來(lái)指定要運(yùn)行的容器數(shù)量

當(dāng)運(yùn)行六個(gè)容器副本后,可以查看群集的web UI界面,顯示如下:

Docker  Swarm群集配置實(shí)戰(zhàn)(1)

注意:docker03并沒(méi)有下載相應(yīng)的鏡像,但是也會(huì)運(yùn)行httpd服務(wù),那么就可以得出一個(gè)結(jié)論:若docker主機(jī)沒(méi)有指定的鏡像,那么它將會(huì)自動(dòng)去下載相應(yīng)的鏡像。

可以看到,在進(jìn)行上述配置后,群集中的三臺(tái)服務(wù)器基于httpd鏡像運(yùn)行了兩個(gè)容器。共六個(gè):

[root@docker01 ~]# docker service ls   #查看service的狀態(tài)
ID                  NAME                MODE                REPLICAS            IMAGE                                 PORTS
13zjbf5s02f8        lvjianzhao          replicated          6/6                 192.168.20.6:5000/lvjianzhao:latest   *:30000->80/tcp

七、實(shí)現(xiàn)docker容器的擴(kuò)容及縮容

何為擴(kuò)容?何為縮容?無(wú)非就是在容器無(wú)法承擔(dān)當(dāng)前負(fù)載壓力的情況下,擴(kuò)增幾個(gè)一樣的容器,縮容呢?也就是在大量容器資源閑置的情況下,減少幾個(gè)一樣的容器而已。

1、下面是針對(duì)上述創(chuàng)建的6個(gè)httpd服務(wù)的容器的擴(kuò)容及縮容:

1)容器的擴(kuò)容:

[root@docker01 ~]# docker service scale lvjianzhao=9    #將運(yùn)行的httpd容器擴(kuò)容到9個(gè)

擴(kuò)容后,其web UI界面顯示如下:

Docker  Swarm群集配置實(shí)戰(zhàn)(1)

2)容器的縮容

[root@docker01 ~]# docker service scale lvjianzhao=3
將9個(gè)httpd服務(wù)的容器縮減到3個(gè)

縮容后,其UI界面顯示如下:
Docker  Swarm群集配置實(shí)戰(zhàn)(1)

2、設(shè)置某個(gè)docker服務(wù)器不運(yùn)行容器

在上述的配置中,若運(yùn)行指定數(shù)量的容器,那么將是群集中的所有docker主機(jī)進(jìn)行輪詢的方式運(yùn)行,直到運(yùn)行夠指定的容器數(shù)量,那么,如果不想讓docker01這個(gè)manager角色運(yùn)行容器呢?(公司領(lǐng)導(dǎo)也不會(huì)去一線搬磚的嘛),可以進(jìn)行以下配置:

[root@docker01 ~]# docker node update --availability drain docker01
#設(shè)置主機(jī)docker01以后不運(yùn)行容器,但已經(jīng)運(yùn)行的容器并不會(huì)停止
# “--availability”選項(xiàng)后面共有三個(gè)選項(xiàng)可配置,如下:
# “active”:工作;“pause”:暫時(shí)不工作;“drain”:永久性的不工作

八、附加——docker Swarm群集常用命令

[root@docker01 ~]# docker node ls    #查看群集的信息(只可以在manager角色的主機(jī)上查看)
[root@docker01 ~]# docker swarm join-token worker      #如果后期需要加入worker端,可以執(zhí)行此命令查看令牌(也就是加入時(shí)需要執(zhí)行的命令)
[root@docker01 ~]# docker swarm join-token manager         #同上,若要加入manager端,則可以執(zhí)行這條命令查看令牌。
[root@docker01 ~]# docker service scale web05=6    #容器的動(dòng)態(tài)擴(kuò)容及縮容
[root@docker01 ~]# docker service ps web01       #查看創(chuàng)建的容器運(yùn)行在哪些節(jié)點(diǎn)
[root@docker01 ~]# docker service ls        #查看創(chuàng)建的服務(wù)
#將docker03脫離這個(gè)群集
[root@docker03 ~]# docker swarm leave        #docker03脫離這個(gè)群集
[root@docker01 ~]# docker node rm docker03         #然后在manager角色的服務(wù)器上移除docker03
[root@docker01 ~]# docker node promote docker02    #將docker02從worker升級(jí)為manager。
#升級(jí)后docker02狀態(tài)會(huì)為Reachable
[root@docker01 ~]# docker node demote docker02    #將docker02從manager角色降級(jí)為worker
[root@docker01 ~]# docker node update --availability drain docker01
#設(shè)置主機(jī)docker01以后不運(yùn)行容器,但已經(jīng)運(yùn)行的容器并不會(huì)停止
[root@docker01 ~]# docker node update --label-add mem=max docker03
#更改docker03主機(jī)的標(biāo)簽為mem=max
[root@docker01 ~]# docker service update --replicas 8 --image 192.168.20.6:5000/lvjianzhao:v2.0 --container-label-add 'node.labels.mem==max' lvjianzhao05
#將服務(wù)升級(jí)為8個(gè)容器,并且指定在mem=max標(biāo)簽的主機(jī)上運(yùn)行

九、docker Swarm總結(jié)

在我對(duì)docker Swarm群集進(jìn)行一定了解后,得出的結(jié)論如下:

  • 參與群集的主機(jī)名一定不能沖突,并且可以互相解析對(duì)方的主機(jī)名;
  • 集群內(nèi)的所有節(jié)點(diǎn)可以都是manager角色,但是不可以都是worker角色;
  • 當(dāng)指定運(yùn)行的鏡像時(shí),如果群集中的節(jié)點(diǎn)本地沒(méi)有該鏡像,那么它將會(huì)自動(dòng)下載對(duì)應(yīng)的鏡像;
  • 當(dāng)群集正常工作時(shí),若一個(gè)運(yùn)行著容器的docker服務(wù)器發(fā)生宕機(jī),那么,其所運(yùn)行的所有容器,都將轉(zhuǎn)移到其他正常運(yùn)行的節(jié)點(diǎn)之上,而且,就算發(fā)生宕機(jī)的服務(wù)器恢復(fù)正常運(yùn)行,也不會(huì)再接管之前運(yùn)行的容器;

關(guān)于docker Swarm群集的更多功能,可以閱讀博文:Docker Swarm群集配置實(shí)戰(zhàn)(2)

———————— 本文至此結(jié)束,感謝閱讀 ————————

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

標(biāo)題名稱:DockerSwarm群集配置實(shí)戰(zhàn)(1)-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://jinyejixie.com/article2/dedeoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站用戶體驗(yàn)、做網(wǎng)站、Google域名注冊(cè)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
承德县| 博野县| 两当县| 三明市| 白沙| 阜阳市| 濮阳县| 双柏县| 阿勒泰市| 永吉县| 九龙城区| 永和县| 清河县| 平塘县| 高青县| 博湖县| 保康县| 蛟河市| 扬州市| 格尔木市| 电白县| 龙游县| 南漳县| 乌什县| 通辽市| 潜山县| 楚雄市| 灵台县| 新巴尔虎左旗| 阿克陶县| 静安区| 大余县| 兴业县| 柞水县| 榕江县| 得荣县| 北碚区| 济阳县| 开化县| 辛集市| 万山特区|