容器編排Swarm
一、多機多容器管理痛點
之前我們都是在一臺雲服務器中創建多個容器進行項目部署操作,但是實際過程中會出現多臺雲服務器多容器的情況,如何管理這多臺雲服務器中的多個容器?
- 怎麼去管理多臺服務器中的多個容器?
- 怎麼能方便的橫向拓展?即在集羣中再增加一臺雲服務器部署應用?
- 如果一臺服務器中的某個容器down了,怎麼能自動恢復?
- 如何去更新容器而不影響業務?
- 如何去監控追蹤這些容器?
- 怎麼去調度、控制容器的創建?
- 怎麼保護隱私數據?
二、Swarm模式
1.簡介
- Swarm是一個容器編排的工具,當然還有其他的工具可以用來做容器的編排。
- Swarm它是內置於docker中的,安裝完docker後即可以使用swarm了,只是一開始我們使用的是單機模式,需要手動開啓Swarm模式。
2.架構
三、創建Swarm集羣
1.環境準備
在本機準備四個虛擬機,分別模擬四個節點:
節點1:192.168.8.135
節點2:192.168.8.136
節點3:192.168.8.138
節點4:192.168.8.137
2.將節點1服務器聲明swarm Manager節點
docker swarm init --advertise-addr=192.168.8.135
出現提示當前節點已經是一個Manager節點,且如果要向這個集羣中添加worker節點,執行下面的語句即可。
3.將節點2、節點3、節點4當作worker節點添加到swarm集羣中
4.在節點1中查看該swarm集羣中的節點情況
docker node ls
顯示有一個leader節點,三個worker節點
四、Swarm Service和Swarm集羣操作
1.在Swarm Manager節點創建Service
docker service create --name=busybox_demo busybox sh -c "while true; do sleep 3600;done"
2.在Manager節點中查看Service
docker service ls
3.在Manager節點中查看容器
發現有一個service名字.xxxx的容器
4.橫向擴展
manager節點中查看service信息發現有一項信息:MODE = replicatied 表示這個service可以橫向擴展。
// 在swarm集羣中拓展出5個
docker service scale busybox_demo=5
5.在Manager節點中查看Service和分佈情況
docker service ps busybox_demo
在其他節點服務器中執行docker ps會發現各個節點上都存在容器了。
6.在Node3節點中強制刪除一個容器
- 在Node3節點中刪除容器
- 去Manager節點查看service信息,發現水平拓展的剩下了4個
- 很快,水平拓展又變回了5個
- 說明,當Swarm集羣中有容器退出或失效了,Manager會在集羣中選取一個節點,重新啓動一個容器進行修補。
7.在Manager節點中刪除Service
docker service rm [service名字]
刪除Service後,Manager節點會自動尋找在那些節點上有這個Service的容器,然後會去自動刪除。