如何配置一個 Docker Swarm 原生叢集

linux.cn發表於2015-07-30

嗨,大家好。今天我們來學一學Swarm相關的內容吧,我們將學習通過Swarm來建立Docker原生叢集。Docker Swarm是用於Docker的原生叢集專案,它可以將一個Docker主機池轉換成單個的虛擬主機。Swarm工作於標準的Docker API,所以任何可以和Docker守護程式通訊的工具都可以使用Swarm來透明地伸縮到多個主機上。就像其它Docker專案一樣,Swarm遵循“內建電池,並可拆卸”的原則(LCTT 譯註:batteries included,內建電池原來是 Python 圈裡面對 Python 的一種讚譽,指自給自足,無需外求的豐富環境;but removable,並可拆卸應該指的是非強制耦合)。它附帶有一個開箱即用的簡單的後端排程程式,而且作為初始開發套件,也為其開發了一個可插拔不同後端的API。其目標在於為一些簡單的使用情況提供一個平滑的、開箱即用的體驗,並且它允許切換為更強大的後端,如Mesos,以用於大規模生產環境部署。Swarm配置和使用極其簡單。

如何配置一個 Docker Swarm 原生叢集

這裡給大家提供Swarm 0.2開箱的即用一些特性。

  1. Swarm 0.2.0大約85%與Docker引擎相容。
  2. 它支援資源管理。
  3. 它具有一些帶有限制和類同功能的高階排程特性。
  4. 它支援多個發現後端(hubs,consul,etcd,zookeeper)
  5. 它使用TLS加密方法進行安全通訊和驗證。

那麼,我們來看一看Swarm的一些相當簡單而簡用的使用步驟吧。

1. 執行Swarm的先決條件

我們必須在所有節點安裝Docker 1.4.0或更高版本。雖然各個節點的IP地址不需要要公共地址,但是Swarm管理器必須可以通過網路訪問各個節點。

注意:Swarm當前還處於beta版本,因此功能特性等還有可能發生改變,我們不推薦你在生產環境中使用。

2. 建立Swarm叢集

現在,我們將通過執行下面的命令來建立Swarm叢集。各個節點都將執行一個swarm節點代理,該代理會註冊、監控相關的Docker守護程式,並更新發現後端獲取的節點狀態。下面的命令會返回一個唯一的叢集ID標記,在啟動節點上的Swarm代理時會用到它。

在叢集管理器上執行:

# docker run swarm create

如何配置一個 Docker Swarm 原生叢集

3. 啟動各個節點上的Docker守護程式

我們需要登入進我們將用來建立叢集的每個節點,並在其上使用-H標記啟動Docker守護程式。它會保證Swarm管理器能夠通過TCP訪問到各個節點上的Docker遠端API。要啟動Docker守護程式,我們需要在各個節點內部執行以下命令。

# docker -H tcp://0.0.0.0:2375 -d

如何配置一個 Docker Swarm 原生叢集

4. 新增節點

在啟用Docker守護程式後,我們需要新增Swarm節點到發現服務,我們必須確保節點IP可從Swarm管理器訪問到。要完成該操作,我們需要在各個節點上執行以下命令。

# docker run -d swarm join --addr=<node_ip>:2375 token://<cluster_id>

如何配置一個 Docker Swarm 原生叢集

注意:我們需要用步驟2中獲取到的節點IP地址和叢集ID替換這裡的<node_ip>和<cluster_id>。

5. 開啟Swarm管理器

現在,由於我們已經獲得了連線到叢集的節點,我們將啟動swarm管理器。我們需要在叢集管理器中執行以下命令。

# docker run -d -p <swarm_port>:2375 swarm manage token://<cluster_id>

如何配置一個 Docker Swarm 原生叢集

6. 檢查配置

一旦管理執行起來後,我們可以通過執行以下命令來檢查配置。

# docker -H tcp://<manager_ip:manager_port> info

如何配置一個 Docker Swarm 原生叢集

注意:我們需要替換<manager_ip:manager_port>為執行swarm管理器的主機的IP地址和埠。

7. 使用docker CLI來訪問節點

在一切都像上面說得那樣完美地完成後,這一部分是Docker Swarm最為重要的部分。我們可以使用Docker CLI來訪問節點,並在節點上執行容器。

# docker -H tcp://<manager_ip:manager_port> info
# docker -H tcp://<manager_ip:manager_port> run ...

8. 監聽叢集中的節點

我們可以使用swarm list命令來獲取所有執行中節點的列表。

# docker run --rm swarm list token://<cluster_id>

如何配置一個 Docker Swarm 原生叢集

尾聲

Swarm真的是一個有著相當不錯的功能的docker,它可以用於建立和管理叢集。它相當易於配置和使用,當我們在它上面使用限制器和類同器時它更為出色。高階排程程式是一個相當不錯的特性,它可以應用過濾器來通過埠、標籤、健康狀況來排除節點,並且它使用策略來挑選最佳節點。那麼,如果你有任何問題、評論、反饋,請在下面的評論框中寫出來吧,好讓我們知道哪些材料需要補充或改進。謝謝大家了!盡情享受吧!

相關文章