Centos搭建docker swarm集群詳細教程


 swarm介紹 

Swarm這個項目名稱特別貼切。在Wiki的解釋中,Swarm behavior是指動物的群集行 為。比如我們常見的蜂群,魚群,秋天往南飛的雁群都可以稱作Swarm behavior。 Swarm項目正是這樣,通過把多個Docker Engine聚集在一起,形成一個大的dockerengine,對外提供容器的集群服務。同時這個集群對外提供Swarm API(命令,docker engine的命令),用戶可以像使用Docker Engine一樣使用Docker集群。

Swarm是Docker公司在2014年12月初發布的容器管理工具,和Swarm一起發布的 Docker管理工具還有Machine以及Compose。Swarm是一套較為簡單的工具,用以管理 Docker集群,使得Docker集群暴露給用戶時相當於一個虛擬的整體。Swarm將一群 Docker宿主機變成一個單一的,虛擬的主機。Swarm使用標准的Docker API接口作為其 前端訪問入口,換言之,各種形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接與Swarm通信。Swarm幾乎全部用Go語言來完成開發,Swarm0.2 版本增加了一個新的策略來調度集群中的容器,使得在可用的節點上傳播它們,以及支
持更多的Docker命令以及集群驅動。Swarm deamon只是一個調度器(Scheduler)加 路由器(router),Swarm自己不運行容器,它只是接受docker客戶端發送過來的請求, 調度適合的節點來運行容器,這意味着,即使Swarm由於某些原因掛掉了,集群中的節 點也會照常運行,當Swarm重新恢復運行之后,它會收集重建集群信息。 

docker swarm特點:

  • 1) 對外以Docker API接口呈現,這樣帶來的好處是,如果現有系統使用Docker Engine, 則可以平滑將Docker Engine切到Swarm上,無需改動現有系統。
  • 2) Swarm對用戶來說,之前使用Docker的經驗可以繼承過來。非常容易上手,學習成本 和二次開發成本都比較低。同時Swarm本身專注於Docker集群管理,非常輕量,占用資 源也非常少。簡單說,就是插件化機制,Swarm中的各個模塊都抽象出了API,可以根據 自己一些特點進行定制實現。 
  • 3)  Swarm自身對Docker命令參數支持的比較完善,Swarm目前與Docker是同步發布 的。Docker的新功能,都會第一時間在Swarm中體現。 

docker swarm架構 

Swarm作為一個管理Docker集群的工具,首先需要將其部署起來,可以單獨將Swarm部 署於一個節點。另外,自然需要一個Docker集群,集群上每一個節點均安裝有Docker。

相關術語:

  • Swarm Manager:集群的管理工具,通過swarm manager管理多個節點。
  • Node:是已加入到swarm的Docker引擎的實例 。
  • manager nodes:也就是管理節點 ,執行集群的管理功能,維護集群的狀態, 選舉一個leader節點去執   行調度任務
  • worker nodes,也就是工作節點 ,接收和執行任務。參與容器集群負載調度, 僅用於承載task 
     

一個服務是工作節點上執行任務的定義。創建一個服務,指定了容器所使用的鏡像和 容器運行的命令。service是運行在worker nodes上的task的描述,service的描述包 括使用哪個docker 鏡像,以及在使用該鏡像的容器中執行什么命令。

task任務:一個任務包含了一個容器及其運行的命令。task是service的執行實體, task啟動docker容器並在容器中執行任務

 docker swarm使用 

搭建步驟:


1、環境准備:

1.1、准備三台已近安裝docker engine的centos/Ubuntu系統主機(docker版本必須在 1.12以上的版本,老版本不支持swarm)

1.2、docker容器主機的ip地址固定,集群中所有工作節點必須能訪問該管理節點

1.3、集群管理節點必須使用相應的協議並且保證端口可用 集群管理通信:

  • TCP,端口2377      
  • 節點通信:TCP和UDP,端口7946      
  • 覆蓋型網絡(docker網絡):UDP,端口4789   overlay驅動      

說明:三台容器主機的ip地址分別為: 192.168.200.162(管理節點) 192.168.200.163(工作節點) 192.168.200.158(工作節點)

主機名稱分別為:manager1、work1以及work2

vim /etc/hostname  (修改完成后需要重啟)

2、創建docker swarm 

2.1、在manager1機器上創建docker swarm集群 

docker swarm init ‐‐advertise‐addr 192.168.200.162 (‐‐advertise‐addr將該IP地址的機器設置為集群管理節點;如果是單節點,無需該參 數

2.2、查看管理節點集群信息: 

docker node ls

3、向docker swarm中添加工作節點:在兩個工作節點中分別執行如下命令,ip地址是 manager節點的 

3.1、添加兩個work節點 

docker swarm join ‐‐token xxx 192.168.200.138:2377  (worker1)
 docker swarm join ‐‐token xxx 192.168.200.138:2377  (worker2) 

(‐‐token xxx:向指定集群中加入工作節點的認證信息,xxx認證信息是在創建docker  swarm時產生的) 

3.2、繼續查看管理節點集群信息與之前的區別 

docker node ls

4、在docker swarm中部署服務

在Docker Swarm集群中部署服務時,既可以使用Docker Hub上自帶的鏡像來啟動服務,也
5 docker compose編排工具 5.1 docker compose介紹 
可以使用自己通Dockerfile構建的鏡像來啟動服務。如果使用自己通過Dockerfile構建的 鏡像來啟動服務那么必須先將鏡像推送到Docker Hub中心倉庫。為了方便讀者的學習,這里 以使用Docker Hub上自帶的alpine鏡像為例來部署集群服務 

4.1、部署服務 

docker service create ‐‐replicas 1 ‐‐name helloworld alpine ping  docker.com 
  • docker service create指令:用於在Swarm集群中創建一個基於alpine鏡像的服務
  • ‐‐replicas參數:指定了該服務只有一個副本實例
  • ‐‐name參數:指定創建成功后的服務名稱為helloworld
  • ping docker.com指令:表示服務啟動后執行的命令

5.查看docker swarm集群中的服務 

查看服務列表:docker service ls 
查看部署具體服務的詳細信息:docker service inspect 
服務名稱 查看服務在集群節點上的分配以及運行情況:docker service ps 服務名稱

6、修改副本數量

在manager1上,更改服務副本的數量(創建的副本會隨機分配到不同的節點) 

docker service scale helloworld=5

7、刪除服務(在管理節點)

docker service rm 服務名稱

8、訪問服務 

8.1、查看集群環境下的網絡列表:

docker network ls

8.2、在manager1上創建一overlay為驅動的網絡(默認使用的網絡連接ingress) 

docker network create ‐d=overlay my‐multi‐host‐network 

8.3、在集群管理節點manager1上部署一個nginx服務 

docker service create \   
‐‐network my‐multi‐host‐network \   
‐‐name my‐web \
   ‐p 8080:80 \
   ‐‐replicas 2 \ 
  nginx 

8.3、在管理節點查看服務的運行情況: 

docker service ps my‐web 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM