docker集群的作用:把若干臺Docker主機抽象為一個整體,并且通過一個入口(集群管理器)統一管理這些Docker主機上的各種Docker資源。docker集群的優勢有:可伸縮擴容,滾動升級,部署上線速度快等。
本教程操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
docker集群有什么用?
集群是一組運行docker并且加入在一個群組的多臺機器,加入集群之后,你還可以繼續運行自己的docker命令,但是現在這些機器由集群管理器在集群上執行的。
簡單來說,就是把若干臺Docker主機抽象為一個整體,并且通過一個入口(集群管理器)統一管理這些Docker主機上的各種 Docker 資源。
針對大公司來講,docker集群是很有優勢的,包括可伸縮擴容,滾動升級,部署上線速度快等。
docker容器可以把你的程序在linux系統中打包起來,然后使你的程序和其他程序隔離,就相當于你在一個虛擬機上裝了一個軟件,和電腦上的軟件沒有任何聯系,但是它和虛擬機最大的不同就是它的性能開銷特別小。
集群中的機器可以是物理或者虛擬的,加入群組后,每臺機器都被稱之為節點。集群管理器可以使用不同的策略來管理運行的容器,例如:emptiest node,這個命令用來填充那些利用最少的容器;global來確保每臺機器只能獲得指定容器服務的一個實例。
你可以將這些策略寫入文件里面來執行集群管理器的策略。
集群管理器是在集群中唯一能夠執行命令的機器,你也可以授權其它機器加入集群管理工作。被授權的機器只能夠 Workers are just there to provide capacity,而不能讓其它機器做什么或者不做什么。
docker開啟集群模式后,你的機器就成為了一臺集群管理器,然后docker所運行的命令將是管理集群的命令,而不僅僅是在你當前機器上運行。
docker集群管理器-Swarm
Docker Swarm 包含兩方面:一個企業級的 Docker 安全集群,以及一個微服務應用編排引擎。
集群方面,Swarm 將一個或多個 Docker 節點組織起來,使得用戶能夠以集群方式管理它們。
Swarm 默認內置有加密的分布式集群存儲(encrypted distributed cluster store)、加密網絡(Encrypted Network)、公用TLS(Mutual TLS)、安全集群接入令牌 Secure Cluster Join Token)以及一套簡化數字證書管理的 PKI(Public Key Infrastructure)。我們可以自如地添加或刪除節點。
編排方面,Swarm 提供了一套豐富的 API 使得部署和管理復雜的微服務應用變得易如反掌。通過將應用定義在聲明式配置文件中,就可以使用原生的 Docker 命令完成部署。
此外,甚至還可以執行滾動升級、回滾以及擴縮容操作,同樣基于簡單的命令即可完成。
以往,Docker Swarm 是一個基于 Docker 引擎之上的獨立產品。自 Docker 1.12 版本之后,它已經完全集成在 Docker 引擎中,執行一條命令即可啟用。到 2018 年,除了原生 Swarm 應用,它還可以部署和管理 Kubernetes 應用。
Swarm 的配置和狀態信息保存在一套位于所有管理節點上的分布式 etcd 數據庫中。該數據庫運行于內存中,并保持數據的最新狀態。關于該數據庫最棒的是,它幾乎不需要任何配置,作為 Swarm 的一部分被安裝,無須管理。
關于集群管理,最大的挑戰在于保證其安全性。搭建 Swarm 集群時將不可避免地使用 TLS,因為它被 Swarm 緊密集成。
在安全意識日盛的今天,這樣的工具值得大力推廣。Swarm 使用 TLS 進行通信加密、節點認證和角色授權。自動密鑰輪換(Automatic Key Rotation)更是錦上添花!其在后臺默默進行,用戶甚至感知不到這一功能的存在。
關于應用編排,Swarm 中的最小調度單元是服務。它是隨 Swarm 引入的,在 API 中是一個新的對象元素,它基于容器封裝了一些高級特性,是一個更高層次的概念。當容器被封裝在一個服務中時,我們稱之為一個任務或一個副本,服務中增加了諸如擴縮容、滾動升級以及簡單回滾等特性。
推薦學習:《docker視頻教程》