1. 程式人生 > >094、Swarm 中最重要的概念(Swarm01)

094、Swarm 中最重要的概念(Swarm01)

報告 style mod 滾動升級 以及 服務發現 系統 一起 兩個

參考https://www.cnblogs.com/CloudMan6/p/7845365.html 從主機層面來看,Docker Swarm 管理的是 Docker Host 集群。所以先來討論一個重要的概念 - 集群化(Clustring) 服務器集群有一組網絡上互相連接的服務器組成,他們一起協同工作。一個集群和一堆服務器最顯著的區別在於: 集群能夠將單個系統那樣工作,同事提供高可用、負載均衡 和 並行處理。 如果我們部署應用和服務時選擇的是多個獨立的服務器而非集群,資源的整理利用率則很難達到最優,因為我們無法提前知道如何分布這些應用才能達到資源利用的最大化。而且,應用使用資源的趨勢是有波動的,早上某些服務器可能需要大量的內存,而下午使用量就降下來了。提前指定應用應該運行在哪個服務器會喪失業務的彈性,當某個服務器宕機了,我們不得不手工將受影響的應用遷移到其他服務器上。 實現集群化後我們的思維方式就必須改變了:不再考慮一個一個的服務器,而是將集群看做是一個整體。 部署應用時,我們只考慮需要多少內存和CPU,而不是考慮會使用哪臺的CPU和內存。我們不應該關心應用會被部署在哪裏,我們關心的是運行這個應用需要哪些資源,然後將它部署到集群,集群管理程序(比如Docker Swarm)會幫你搞定這些細節。 集群整理容量的調整是通過往集群中添加和刪除主機節點實現的。但不管做怎麽樣的操作,集群始終是一個整體。 本章,我們會創建 Docker Swarm 集群、部署應用、伸縮擴展應用,以及對應用執行滾動升級。 Docker Swarm Mode
Docker v.112是一個非常重要的版本,Docker重新實現了集群的編排方式。在此之前,提供集群功能的Docker Swarm 是一個單獨的軟件,而且依賴外部數據庫(比如 Consul、etcd 或者 Zookeeper) 從 v1.12 開始,Docker Swarm 的功能已經完全與 Docker Engine 集成,要管理集群,只需要啟動Swarm Mode。安裝好 Docker ,Swarm就已經在那裏了,服務發現也在那裏了,而且不需要安裝Consul等外部數據庫。 相比Kubernetes ,用Docker Swarm 創建集群非常簡單,不需要額外安裝任何軟件,也不需要做任何額外的配置,很適合作為學習容器編排引擎的七點。 重要概念 - swarm
swarm 是運行Docker Engine的多個主機組成的集群 從 v1.12開始,集群管理和編排功能已經集成到 Docker Engine 中。當Docker Engine 初始化了一個swarm 或者加入到一個存在的swarm時,他就會啟動 swarm mode。 沒啟動 swarm mode 時,Docker 執行的是容器命令。運行swarm mode 後,Docker 增加了編排service的能力。 Docker 允許在同一個Docker Host 上即運行 swarm service,又運行單獨的容器。 重要概念 - node
swarm 中的每個 Docker Engine 都是一個node,有兩種類型的node:manager 和 worker 。 為了向swarm 中部署應用,我們需要在manager mode 上執行部署命令,manager node 會將部署任務拆解並分配給一個或者多個 worker node 完成部署。 manager node 負責執行編排和集群管理工作,保持並維護swarm 處於期望的狀態。swarm中如果有多個manager node,他們會自動協商並選舉出一個leader執行編排任務。 worker node 接受並執行由manager node 派發的任務。默認配置下manager node 同時也是一個 worker node,不過可以將其配置成manager-only mode,讓其專職負責編排和集群管理工作。 worker node 會定期向manager node 報告自己的狀態和他正在執行的任務狀態,這樣,manager 就可以維護整個集群的狀態。 重要概念 - service service 定義了 worker node 上要執行的任務,swarm的主要編排任務就是要保證service 處於期望的狀態下。 舉一個 service 的例子: 在swarm 中啟動一個http訪問,使用的鏡像是httpd:lastes,副本數是3 manager node 負責創建這個service ,經過分析指導需要啟動3個httpd 容器,根據當前各worker node 的狀態將運行容器的任務分配下去,比如worker1 上運行兩個容器,worker2上運行一個容器。 運行了一段時間,worker2 突然宕機了,manager 監控到這個故障,於是立即在worker3 上啟動了一個新的httpd容器。 這樣就保證了 service 處於期望的三個副本狀態。

094、Swarm 中最重要的概念(Swarm01)