如何配置一個 Docker Swarm 原生集群
嗨,大家好。今天我們來學一學Swarm相關的內容吧,我們將學習通過Swarm來創建Docker原生集群。Docker Swarm是用于Docker的原生集群項目,它可以將一個Docker主機池轉換成單個的虛擬主機。Swarm工作于標準的Docker API,所以任何可以和Docker守護進程通信的工具都可以使用Swarm來透明地伸縮到多個主機上。就像其它Docker項目一樣,Swarm遵循“內置電池,并可拆卸”的原則(LCTT 譯注:batteries included,內置電池原來是 Python 圈里面對 Python 的一種贊譽,指自給自足,無需外求的豐富環境;but removable,并可拆卸應該指的是非強制耦合)。它附帶有一個開箱即用的簡單的后端調度程序,而且作為初始開發套件,也為其開發了一個可插拔不同后端的API。其目標在于為一些簡單的使用情況提供一個平滑的、開箱即用的體驗,并且它允許切換為更強大的后端,如Mesos,以用于大規模生產環境部署。Swarm配置和使用極其簡單。
這里給大家提供Swarm 0.2開箱的即用一些特性。
- Swarm 0.2.0大約85%與Docker引擎兼容。
- 它支持資源管理。
- 它具有一些帶有限制和類同功能的高級調度特性。
- 它支持多個發現后端(hubs,consul,etcd,zookeeper)
- 它使用TLS加密方法進行安全通信和驗證。 </ol>
那么,我們來看一看Swarm的一些相當簡單而簡用的使用步驟吧。
1. 運行Swarm的先決條件
我們必須在所有節點安裝Docker 1.4.0或更高版本。雖然各個節點的IP地址不需要要公共地址,但是Swarm管理器必須可以通過網絡訪問各個節點。
注意:Swarm當前還處于beta版本,因此功能特性等還有可能發生改變,我們不推薦你在生產環境中使用。
2. 創建Swarm集群
現在,我們將通過運行下面的命令來創建Swarm集群。各個節點都將運行一個swarm節點代理,該代理會注冊、監控相關的Docker守護進程,并更新發現后端獲取的節點狀態。下面的命令會返回一個唯一的集群ID標記,在啟動節點上的Swarm代理時會用到它。
在集群管理器上運行:
# docker run swarm create
3. 啟動各個節點上的Docker守護進程
我們需要登錄進我們將用來創建集群的每個節點,并在其上使用-H標記啟動Docker守護進程。它會保證Swarm管理器能夠通過TCP訪問到各個節點上的Docker遠程API。要啟動Docker守護進程,我們需要在各個節點內部運行以下命令。
# docker -H tcp://0.0.0.0:2375 -d
4. 添加節點
在啟用Docker守護進程后,我們需要添加Swarm節點到發現服務,我們必須確保節點IP可從Swarm管理器訪問到。要完成該操作,我們需要在各個節點上運行以下命令。
# docker run -d swarm join --addr=<node_ip>:2375 token://<cluster_id>
注意:我們需要用步驟2中獲取到的節點IP地址和集群ID替換這里的<node_ip>和<cluster_id>。
5. 開啟Swarm管理器
現在,由于我們已經獲得了連接到集群的節點,我們將啟動swarm管理器。我們需要在集群管理器中運行以下命令。
# docker run -d -p <swarm_port>:2375 swarm manage token://<cluster_id>
6. 檢查配置
一旦管理運行起來后,我們可以通過運行以下命令來檢查配置。
# docker -H tcp://<manager_ip:manager_port> info
注意:我們需要替換<manager_ip:manager_port>為運行swarm管理器的主機的IP地址和端口。
7. 使用docker CLI來訪問節點
在一切都像上面說得那樣完美地完成后,這一部分是Docker Swarm最為重要的部分。我們可以使用Docker CLI來訪問節點,并在節點上運行容器。
# docker -H tcp://<manager_ip:manager_port> infodocker -H tcp://<manager_ip:manager_port> run ...</pre>
8. 監聽集群中的節點
我們可以使用swarm list命令來獲取所有運行中節點的列表。
# docker run --rm swarm list token://<cluster_id>
![]()
尾聲
Swarm真的是一個有著相當不錯的功能的docker,它可以用于創建和管理集群。它相當易于配置和使用,當我們在它上面使用限制器和類同器時它更為出色。高級調度程序是一個相當不錯的特性,它可以應用過濾器來通過端口、標簽、健康狀況來排除節點,并且它使用策略來挑選最佳節點。那么,如果你有任何問題、評論、反饋,請在下面的評論框中寫出來吧,好讓我們知道哪些材料需要補充或改進。謝謝大家了!盡情享受吧 :-)
via: http://linoxide.com/linux-how-to/configure-swarm-clustering-docker/
作者:Arun Pyasi 譯者:GOLinux 校對:wxy
來源: https://linux.cn/article-5915-1.html