Docker Swarm--搭建Docker集羣

一、使用Docker Machine工具配置新服務器上的Docker環境(安裝失敗了。。。。)

如果每臺服務器上都已經手動安裝了Docker環境,那麼可以直接跳過此步驟。剛開始我也是手動在服務器上安裝Docker,今天看到Docker Machine工具之後,打算嘗試一下批量安裝。

Docker Machine官方介紹:https://docs.docker.com/v1.13/machine/overview/

Docker引擎在Linux系統上本地運行。如果你有一個Linux機器作爲你的主系統,並且想要運行docker命令,你所需要做的就是下載並安裝docker引擎。但是,如果您想要在網絡、雲甚至本地上提供多個Docker主機的有效方法,則需要Docker機器。
無論您的主系統是Mac、Windows還是Linux,都可以在其上安裝Docker機器,並使用Docker - Machine命令來提供和管理大量Docker主機。它自動創建主機,在主機上安裝Docker引擎,然後配置Docker客戶端。每個託管主機(“機器”)都是Docker主機和配置客戶機的組合。

Docker Machine是一個配置和管理Dockerized主機(主機上有Docker引擎)的工具。通常,在本地系統上安裝Docker機器。Docker機器有自己的命令行客戶端Docker - Machine和Docker引擎客戶端Docker。可以使用Machine在一個或多個虛擬系統上安裝Docker引擎。這些虛擬系統可以是本地的(如在Mac或Windows上的VirtualBox中使用Machine安裝和運行Docker引擎時),也可以是遠程的(如使用Machine在雲提供商上提供Dockerized主機時)。Dockerized主機本身可以被認爲是託管的“機器”,有時也被稱爲託管的“機器”。

服務器環境介紹:當前服務器爲:

[root@localhost network-scripts]# uname -a
Linux localhost 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

服務器列表:

Master:192.168.3.3 – A

Slave:192.168.3.4 --B

Slave:192.168.3.5 --C

由於我事先已經在A,B兩臺服務器上安裝過Docker環境了,這裏使用Docker Machine通過服務器A完成在C上的Docker環境的安裝。

首先在A服務器上安裝Docker環境,然後才能安裝Docker Machine,輸入以下命令從docker倉庫中下載下來,並完成權限配置,目前最新版是:0.16.0,我這裏下載的版本是0.16.0,最新版可見:https://github.com/docker/machine/releases

[root@localhost network-scripts]# curl -L https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
> chmod +x /tmp/docker-machine &&
> sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

過程會比較慢,十幾分鍾還沒下載完,第一次下載了0.10版本的,結果查看版本docker-machine -v提示未找到該命令。

[root@localhost network-scripts]# docker-machine -v
bash: docker-machine: command not found...

然後下載0.16版本的,提示一個要小時:
在這裏插入圖片描述
最後37分鐘下載完了,然後查看版本,還是提示命令未找到。。。。。
在這裏插入圖片描述

心態崩了,在第二臺服務器裏面安裝仍然不好使,我決定直接安裝Docker Swarm

二、服務器都具備docker環境後,開始配置Docker Swarm

  1. 在需要設置爲Manager的節點上輸入如下命令,開始容器集羣搭建,IP地址寫現在服務對外IP。
 docker swarm init --advertise-addr <MANAGER-IP>

在這裏插入圖片描述
可以獲得如下信息,集羣創建完畢,複製該命令,在其他子節點上執行完畢,子節點便是加入了該容器集羣(可通過docker-machine ssh xxx的方式快速進入到目的節點中執行)。

在192.168.3.4服務器上運行上面的指令,可見該節點成功加入,並作爲一個worker
在這裏插入圖片描述
對所有節點加入完畢,通過docker node ls命令查看節點信息,加入的節點和本身節點將會顯示出來。這裏運行了三臺服務器,兩臺作爲work。
在這裏插入圖片描述
2. 如果有新的服務器加入了,並且已經安裝好了docker enginee需要加入到節點中且忘記了這一條token的值,可以通過在manager上執行該命令docker swarm join-token worker再次獲得這個值。
在這裏插入圖片描述
至此,整個容器集羣就搭建完畢,Manager節點和Worker節點都接入進來了。

如果manager上面部署了Portainer,登錄之後也可以看到Swarm的信息。
在這裏插入圖片描述
可以看到上圖Name列即爲機器的hostname(命令行輸入hostname可查看hostname),但是往往這個名稱是沒有規律的。這裏修改機器的名稱,關聯ip,這樣就可以直接在命令行看到此臺機器的名稱,我這裏三臺虛擬機的ip分別爲:192.168.3.3,192.168.3.4,192.168.3.5,並且3.3機器爲Swarm的Leader,於是這裏命名爲:
在這裏插入圖片描述

修改hostname : hostnamectl set-hostname docker-manager-3-3 (比如要修改爲docker-manager-3-3)

修改完重啓生效 :reboot

剛開始試了修改host文件和network文件,重啓之後卻失效了,然後找到hostnamectl,就很強,重啓之後立馬生效。

至此可以使用ssh連接是否可以正常登錄到目標主機,這裏直接在manager機器上操作:

ssh [email protected]

第一次連接時會提示,輸入yes確認連接,輸入節點服務器的密碼,就可以登錄到節點服務器上了。
在這裏插入圖片描述
可以看到當前從docker-manager-3-3機器切換到docker-work-3-4上了。這樣就可以打開一個連接窗口,操作多臺機器了,避免頻繁切換服務器窗口了。

對於Swarm模式下,需要開啓幾個相關的端口,而在系統中,這幾個端口是默認打開的:

TCP Port 2377:用於集羣間通信,

TCP 和UDP Port 7946:用於節點間通信,

UDP Port 4789:用於Overlay網絡方式下通信,這個是在集羣模式下的網絡通信方式,單機下采用的是Bridge方式。

我這裏是在虛擬機裏面操作的,直接關閉了防火牆,如果是雲服務器,連接失敗時,可以檢查一下上面的端口是否開放。

那麼如果需要將ssh切換回原來的服務器怎麼辦呢?

可輸入~ + Ctrl+Z,在ssh連接的過程中,輸入~,正常情況下命令行是不會顯示的,在Ctrl+Z之後,纔會顯示,並且自動切換回原服務器命令窗口。
在這裏插入圖片描述
現在已經退回到了3-3, ssh 遠程客戶端會話就在 UNIX 後臺中運行, 可以輸入jobs查看當前ssh客戶端會話。
在這裏插入圖片描述
使用fg可直接切換到,jobs爲1的會話,如果想切換到後面的,可在fg後面加空格和序號,如fg 2
在這裏插入圖片描述
命令執行完後,會停留在一個空行上,這時直接Ctrl+C,就可以切換成功。
在這裏插入圖片描述

參考:https://www.cnblogs.com/CKExp/p/9651244.html

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