Docker Swarm mode

廢物大師兄發表於2019-05-20

1.  叢集模式基本概念

swarm mode(譯:叢集模式)

standalone mode(譯:單機模式)

以叢集模式執行Docker

1.1.  叢集

Docker引擎內部已經整合了叢集管理

一個叢集由多個Docker主機組成,它們以叢集模式執行。叢集中有兩種角色:manager和worker。一個給定的主機,它有可能是manager,或者worker,也有可能同時兼具這兩種角色。當你建立一個服務的時候,你會定義它們的狀態(比如:副本數量、網路和儲存資源、對外暴露的埠等等)。Docker負責維護這些狀態。如果一個worker節點不可用了,那麼Docker會將該節點上的任務轉給其它節點。任務是一個執行的容器,它是叢集服務的一部分,由manager管理,而非作為一個獨立的容器。

相對於單機模式而言,叢集模式最關鍵的優勢在於你可以修改服務的配置(比如:networks或volumes等)而不需要手動重啟服務。Docker將自動更新配置,停止已經過期的配置的服務任務,並建立與之匹配的新的服務任務。

當Docker以叢集模式執行時,你仍然可以在叢集的任意一臺主機上以單機模式執行,只要它還是叢集服務。單機容器與叢集服務最主要的區別在於只有叢集的manager才可以管理叢集,而單機的容器可以被任意守護程式啟動。Docker守護程式可以以manager身份、worker身份、或二者兼具的身份參與到叢集中。

(小結:

  1. 回憶一下,執行中的容器對外提供服務,也就是說服務的載體是容器
  2. 單機模式是一臺主機上執行多個容器,每個容器單獨提供服務;叢集模式是多臺機器組成一個叢集,多個容器一起提供同一個服務;
  3. 叢集模式的好處是當你修改了服務的配置後無需手動重啟服務
  4. 叢集與單機最大的區別在於,只有叢集中的manager才能管理叢集中的一切(包括服務、容器都歸它管,你無法再一個woker節點上操作容器)

1.2.  節點

節點是叢集中的一個Docker例項,你可以認為它是一個Docker節點。你可以在單臺物理機或者雲服務上建立一個或多個節點。但是,在生產環境通常是一臺物理機或雲伺服器時一個節點。

為了將你的應用部署到叢集中,你需要提交一個服務定義給叢集manger節點。manager節點分發任務(task)給worker節點。

manager節點還負責維護叢集狀態。manager節點選擇一個leader來編排任務。

worker節點從manager節點那裡接收任務並執行。預設情況下,manager節點上也執行著和worker節點上一樣的服務。但是你也可以將它們配置為僅執行manager任務。每個worker節點上都執行著一個agent,它們負責報告分配給該worker節點的任務的相關情況。worker節點向manager節點報告分配給它的任務的當前狀態,以便於manager可以更好地分配任務。

1.3.  服務與任務

服務是要在manager節點或worker節點上執行的任務的定義。當你建立服務的時候,會指定執行哪個映象,以及在容器執行的時候執行哪些命令。

任務就是某個容器,以及要在容器中執行的命令

1.4.  負載均衡

2.  叢集建立

建立叢集

加入叢集

部署服務

檢查服務

動態擴容

刪除服務

動態滾動更新服務

節點下線

3.  備忘單

4.  文件

https://docs.docker.com/engine/swarm/swarm-tutorial/scale-service/

https://docs.docker.com/engine/swarm/swarm-tutorial/rolling-update/

https://docs.docker.com/engine/swarm/ingress/

https://docs.docker.com/engine/reference/commandline/swarm_update/

 

相關文章