Swarm管理Docker集羣

一.swam簡介

Swram是Docker公司推出的官方容器集羣平臺,基於go語言實現,代碼開源在 https://github.com/docker/swarm .2016年2月對架構進行重新設計,推出了v2版本,支持超過1千個節點。作爲容器集羣管理器,Swarm最大的優勢之一就是100%支持標準的Docker API及工具(如Compose,docker-py等),Docker本身就可以很好地與Swarm進行集成。

在這裏插入圖片描述

Manager:接收客戶端服務定義,將任務發送到agnet節點,維護集羣期望狀態和集羣管理功能以及leader選舉。默認情況下manager節點也會運行任務,也可以配置只做管理任務。
agent:接收並執行從管理節點分配的任務,並報告任務當前的狀態,以便Manager節點維護每個服務期望狀態。

二.Swam管理集羣

1.部署集羣

1.清理實驗環境
刪除server1、server2的容器
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

2.爲server3安裝docker(server1、server2已經安裝好了)

[root@server1 ~]# scp -r docker server3:
[root@server3 ~]# ls
docker
[root@server3 ~]# cd docker/
[root@server3 docker]# ls
container-selinux-2.21-1.el7.noarch.rpm
docker-ce-18.06.1.ce-3.el7.x86_64.rpm
libsemanage-2.5-8.el7.x86_64.rpm
libsemanage-python-2.5-8.el7.x86_64.rpm
pigz-2.3.4-1.el7.x86_64.rpm
policycoreutils-2.5-17.1.el7.x86_64.rpm
policycoreutils-python-2.5-17.1.el7.x86_64.rpm
repodata
[root@server3 docker]# yum install *.rpm -y

在這裏插入圖片描述
在這裏插入圖片描述
3.打開server3的docker服務

[root@server3 docker]# systemctl start docker.service 

在這裏插入圖片描述4.初始化server1(管理節點)的swarm集羣

[root@server1 ~]# docker swarm init 

在這裏插入圖片描述5.查看server1的橋接,和網絡信息

[root@server1 ~]# yum install bridge-utils.x86_64 -y					##提供brctl命令
[root@server1 ~]# brctl show
[root@server1 ~]# docker network ls

在這裏插入圖片描述
6.server2、server3加入集羣

[root@server2 docker]# docker swarm join --token SWMTKN-1-5m3v8gviqk7r5e1zs9h8vsr16shhti2mp1o5qa23i7tgml08ut-bqrt2diawswa860qqmabblw4x 172.25.16.1:2377
[root@server2 docker]# docker swarm join --token SWMTKN-1-5m3v8gviqk7r5e1zs9h8vsr16shhti2mp1o5qa23i7tgml08ut-bqrt2diawswa860qqmabblw4x 172.25.16.1:2377

7.在管理節點查看到所有節點信息和狀態

在這裏插入圖片描述

2.部署應用

1.server1中創建網絡webnet,用於容器間通信。

[root@server1 ~]# docker service create --name web --network webnet --publish 80:80 --replicas 3 nginx:1.16 
##-replicas 3代表集羣的個數爲3;nginx後面要帶版本號,默認是laster(可以修改標籤)
image nginx:1.16 could not be accessed on a registry to record
its digest. Each node will access nginx:1.16 independently,
possibly leading to different nodes running different
versions of the image.

qchyxe0yjm7005e8rb2l5f9fz
overall progress: 3 out of 3 tasks 
1/3: running   
2/3: running   
3/3: running   
verify: Service converged 
[root@server1 ~]# 

2.查看服務列表

[root@server1 ~]# docker service ls
[root@server1 ~]# docker service ps web 

在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述
4.給server3加載nginx鏡像
在這裏插入圖片描述
5.擴容(增加到六個負載)

[root@server1 ~]# docker service scale web=6
web scaled to 6
overall progress: 6 out of 6 tasks 
1/6: running   
2/6: running   
3/6: running   
4/6: running   
5/6: running   
6/6: running   
verify: Service converged 

在這裏插入圖片描述6.縮減到3個(夠用就行)

[root@server1 ~]# docker service scale web=3
web scaled to 3
overall progress: 3 out of 3 tasks 
1/3: running   
2/3: running   
3/3: running   
verify: Service converged 

此時每個主機開啓一個nginx服務
在這裏插入圖片描述
7.在三個虛擬機上編寫nginx發佈默認文件,並cp到容器內nginx的html下
在這裏插入圖片描述
在這裏插入圖片描述在這裏插入圖片描述

測試:

物理機中訪問三臺虛擬機,成功訪問並實現輪詢

[root@foundation60 ~]# for i in {1..10};do curl 172.25.16.2/index.html;done
[root@foundation60 ~]# for i in {1..10};do curl 172.25.16.2/index.html;done
[root@foundation60 ~]# for i in {1..10};do curl 172.25.16.3/index.html;done

在這裏插入圖片描述在這裏插入圖片描述

3.部署監控
1.在每個節點上導入visualizer.tar鏡像

[root@server1 ~]# docker load -i visualizer.tar 

在這裏插入圖片描述

[root@server2 ~]# docker load -i visualizer.tar 

在這裏插入圖片描述

[root@server3 ~]# docker load -i visualizer.tar 

在這裏插入圖片描述
2.創建swarm的監控容器,使監控和docker連接起來

[root@server1 ~]# docker service create --name=viz --publish=8080:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer

在這裏插入圖片描述3.查看容器viz和8080端口開啓情況
在這裏插入圖片描述
測試:

瀏覽器輸入:172.25.16.1:8080

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章