?
This document uses PHP Chinese website manual Release
當(dāng)您首次安裝并開(kāi)始使用Docker Engine時(shí),群集模式默認(rèn)處于禁用狀態(tài)。當(dāng)您啟用群集模式時(shí),您將使用通過(guò)docker service
命令管理的服務(wù)概念。
在群集模式下運(yùn)行引擎有兩種方法:
創(chuàng)建一個(gè)新的群體,在本文中討論。
加入現(xiàn)有的群。
當(dāng)您在本地計(jì)算機(jī)上以群集模式運(yùn)行引擎時(shí),可以根據(jù)您創(chuàng)建的映像或其他可用映像來(lái)創(chuàng)建和測(cè)試服務(wù)。在您的生產(chǎn)環(huán)境中,群集模式提供具有群集管理功能的容錯(cuò)平臺(tái),以保持您的服務(wù)正常運(yùn)行。
這些說(shuō)明假定您已經(jīng)在機(jī)器上安裝了Docker Engine 1.12或更高版本,以充當(dāng)群中的管理器節(jié)點(diǎn)。
如果還沒(méi)有,請(qǐng)閱讀群模式關(guān)鍵概念并嘗試群模式教程。
當(dāng)您運(yùn)行命令創(chuàng)建群集時(shí),Docker引擎開(kāi)始以群集模式運(yùn)行。
運(yùn)行docker swarm init
以在當(dāng)前節(jié)點(diǎn)上創(chuàng)建單節(jié)點(diǎn)群。引擎設(shè)置如下:
將當(dāng)前節(jié)點(diǎn)切換為群集模式。
創(chuàng)建一個(gè)名為的default
群。
指定當(dāng)前節(jié)點(diǎn)為群集的領(lǐng)導(dǎo)管理節(jié)點(diǎn)。
用機(jī)器主機(jī)名命名節(jié)點(diǎn)。
將管理器配置為偵聽(tīng)端口2377上的活動(dòng)網(wǎng)絡(luò)接口。
將當(dāng)前節(jié)點(diǎn)設(shè)置為Active
可用性,這意味著它可以從調(diào)度程序接收任務(wù)。
為參與群體的引擎啟動(dòng)一個(gè)內(nèi)部分布式數(shù)據(jù)存儲(chǔ),以維護(hù)群集及其上運(yùn)行的所有服務(wù)的一致視圖。
默認(rèn)情況下,為該群體生成一個(gè)自簽名的根CA.
默認(rèn)情況下,為worker和manager節(jié)點(diǎn)生成令牌以加入群集。
創(chuàng)建一個(gè)覆蓋網(wǎng)絡(luò)ingress
,該網(wǎng)絡(luò)命名為發(fā)布群體外部的服務(wù)端口。
輸出用于docker swarm init
提供在將新工作節(jié)點(diǎn)加入群集時(shí)使用的連接命令:
$ docker swarm init Swarm initialized: current node (dxn1zf6l61qsb1josjja83ngz) is now a manager.To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
管理器節(jié)點(diǎn)使用通告地址允許群中的其他節(jié)點(diǎn)訪問(wèn)Swarmkit API并覆蓋網(wǎng)絡(luò)。群中的其他節(jié)點(diǎn)必須能夠通過(guò)其通告地址IP地址訪問(wèn)管理器節(jié)點(diǎn)。
如果您未指定廣告地址,則Docker將檢查系統(tǒng)是否具有單個(gè)IP地址。如果是這樣,默認(rèn)情況下,Docker使用偵聽(tīng)端口的IP地址2377
。如果系統(tǒng)有多個(gè)IP地址,則必須指定正確的--advertise-addr
以啟用管理員間通信和覆蓋網(wǎng)絡(luò):
$ docker swarm init --advertise-addr <MANAGER-IP>
您還必須指定--advertise-addr
其他節(jié)點(diǎn)到達(dá)第一個(gè)管理器節(jié)點(diǎn)的地址是否與管理員認(rèn)為的地址不同。例如,在跨越不同區(qū)域的云設(shè)置中,主機(jī)具有用于在該區(qū)域內(nèi)訪問(wèn)的內(nèi)部地址和用于從該區(qū)域外訪問(wèn)的外部地址。在這種情況下,請(qǐng)指定外部地址,--advertise-addr
以便節(jié)點(diǎn)可以將該信息傳播到隨后連接到其上的其他節(jié)點(diǎn)。
docker swarm init
有關(guān)廣告地址的更多詳細(xì)信息,請(qǐng)參閱CLI參考。
節(jié)點(diǎn)需要一個(gè)秘密的令牌來(lái)加入群。工作節(jié)點(diǎn)的標(biāo)記與管理器節(jié)點(diǎn)的標(biāo)記不同。節(jié)點(diǎn)在加入群時(shí)只使用連接令牌。在節(jié)點(diǎn)已經(jīng)加入群體之后旋轉(zhuǎn)連接令牌不會(huì)影響節(jié)點(diǎn)的群集成員資格。令牌輪轉(zhuǎn)可確保任何嘗試加入群集的新節(jié)點(diǎn)都不能使用舊令牌。
要檢索包含工作節(jié)點(diǎn)的連接令牌的連接命令,請(qǐng)運(yùn)行:
$ docker swarm join-token worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \ 192.168.99.100:2377This node joined a swarm as a worker.
要查看管理器節(jié)點(diǎn)的連接命令和令牌,請(qǐng)運(yùn)行:
$ docker swarm join-token manager To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-59egwe8qangbzbqb3ryawxzk3jn97ifahlsrw01yar60pmkr90-bdjfnkcflhooyafetgjod97sz \ 192.168.99.100:2377
通過(guò)--quiet
標(biāo)志只打印令牌:
$ docker swarm join-token --quiet worker SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c
加入令牌時(shí)要小心,因?yàn)樗鼈兪羌尤肴杭匦璧拿孛?。特別是,將一個(gè)秘密檢查到版本控制是一個(gè)不好的做法,因?yàn)樗试S任何有權(quán)訪問(wèn)應(yīng)用程序源代碼的人向群中添加新節(jié)點(diǎn)。經(jīng)理令牌特別敏感,因?yàn)樗鼈冊(cè)试S新的經(jīng)理節(jié)點(diǎn)加入并獲得整個(gè)群體的控制權(quán)。
建議在以下情況下旋轉(zhuǎn)聯(lián)接令牌:
如果令牌意外簽入到版本控制系統(tǒng),則組聊天或意外地打印到您的日志中。
如果您懷疑某個(gè)節(jié)點(diǎn)已被破壞。
如果您希望保證沒(méi)有新的節(jié)點(diǎn)能夠加入群集。
此外,對(duì)包括群集加入令牌在內(nèi)的任何秘密實(shí)施定期輪換計(jì)劃是最佳做法。我們建議您至少每6個(gè)月旋轉(zhuǎn)一次令牌。
運(yùn)行swarm join-token --rotate
以使舊的令牌失效并生成新的令牌。指定是否要旋轉(zhuǎn)worker
或manager
節(jié)點(diǎn)的標(biāo)記:
$ docker swarm join-token --rotate worker To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-2kscvs0zuymrsc9t0ocyy1rdns9dhaodvpl639j2bqx55uptag-ebmn5u927reawo27s3azntd44 \ 192.168.99.100:2377
將節(jié)點(diǎn)連接到一個(gè)群中
swarm init
命令行引用
群模式教程