??博主簡介:
??????????云計算領域優(yōu)質創(chuàng)作者
??????????2022年CSDN新星計劃python賽道第一名??????????2022年CSDN原力計劃優(yōu)質作者
??????????阿里云ACE認證高級工程師
??????????阿里云開發(fā)者社區(qū)專家博主??交流社區(qū):CSDN云計算交流社區(qū)歡迎您的加入!
目錄
1、簡介?
2、安裝Swarm
2.1、下載鏡像?
2.2、配置節(jié)點?
2.3、啟動集群?
???????結束語???????
Docker Swarm是Docker官方的三劍客項目之一,提供Docker容器集群服務,是Docker官方對容器云生態(tài)進行支持的核心方案。使用 它,用戶可以將多個Docker主機封裝為單個大型的虛擬Docker主機,快速打造一套容器云平臺。
|
1、簡介?
Docker Swarm是Docker公司推出的官方容器集群平臺,基于Go語言實現,代碼開源在
https://github.com/docker/swarm
。目前,包括Rackspace在內的許多平臺都采用了Swarm,用戶也很容易在AWS等公有云平臺使用Swarm。
|
Swarm的前身是Beam項目和libswarm項目,首個正式版本(Swarm V1)在2014年12月初發(fā)布。為了提高可擴展性,2016年2月對架構進行重新設計,推出了V2版本,支持超過1千個節(jié)點。最新的Docker Engine已經集成了Swarm Kit,加強了對Swarm的協作支持。
|
作為容器集群管理器,Swarm最大的優(yōu)勢之一就是100%支持標準的Docker API。各種基于標準API的工具,如Compose、docker-py,各種管理軟件,甚至Docker本身等都可以很容易地與Swarm進行集成。這大大方便了用戶將原先基于單節(jié)點的系統移植到Swarm上。同時Swarm內置了對Docker網絡插件的支持,用戶可以很容易地部署跨主機的容器集群服務。
|
Swarm V1的結構圖如下圖所示。可以看出,Swarm是典型的master-slave結構,通過發(fā)現服務來選舉manager。manager是中心管理節(jié)點,各個node上運行agent接受manager的統一管理。 |
在V2中,集群會自動通過Raft協議分布式選舉出manager節(jié)點,無需額外的發(fā)現服務支持,避免了單點瓶頸。同時,V2中內置了基于DNS的負載均衡和對外部負載均衡機制的集成支持。?
|
2、安裝Swarm
安裝Swarm有幾種方式,可以基于Docker Machine進行安裝,也可以手動配置。為了能更容易理解Swarm的組件和更靈活地進行管理,推薦使用手動配置方式。
|
對于Docker 1.12+版本,Swarm相關命令已經原生嵌入到了Docker?Engine中,對于較低版本的Docker,需要額外進行配置 |
2.1、下載鏡像?
Docker官方已經提供了Swarm鏡像,需要在所有被Swarm管理的Docker主機上下載該鏡像:
|
$ docker pull swarm
可以使用下面的命令來查看Swarm版本,驗證是否成功下載Swarm鏡像 |
$ docker run --rm swarm -v
swarm version 1.2.2 (34e3da3)
2.2、配置節(jié)點?
Docker主機在加入Swarm集群前,需要進行一些簡單配置,添加Docker daemon的網絡監(jiān)聽。例如,在啟動Docker daemon的時候通過-H參數:
|
$ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
注意:
Docker 1.8.0前的版本不支持daemon命令,可以用-d代替。如果是通過服務方式啟動,則需要修改服務的配置文件。
|
以Ubuntu 14.04為例,配置文件為/etc/default/docker(其他版本的Linux上略有不同)。在文件的最后添加:
|
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
2.3、啟動集群?
Docker集群管理需要使用服務發(fā)現(Service Discover)功能,Swarm支持以下幾種方式:Docker Hub、本地文件、Etcd、Consul、Zookeeper和手動指定節(jié)點IP地址信息等。
|
除了手動指定外,這些方法原理上都是通過維護一套數據庫機制來管理集群中注冊節(jié)點的Docker Daemon的訪問信息。
|
本地配置集群推薦使用Consul作為服務發(fā)現后端。利用社區(qū)提供的Docker鏡像,整個過程只需要三步即可完成
|
啟動Consul服務后端?
啟動Consul服務容器,映射到主機的8500端口: |
$ docker run -d -p 8500:8500 --name=consul progrium/consul -server -bootstrap
獲取到本地主機的地址作為consul的服務地址:<consul_ip>:8500。 |
啟動管理節(jié)點?文章來源:http://www.zghlxwxcb.cn/news/detail-507082.html
首先啟動一個主管理節(jié)點,映射到主機的4000端口,并獲取所在主機地址為<manager0_ip>。其中4000端口是Swarm管理器的默認監(jiān)聽端口,用戶也可以指定映射為其他端口:
|
$ docker run -d -p 4000:4000 swarm manage -H :4000 --replication --advertise
<manager0_ip>:4000 consul://<cons
為了提高可用性,也可以啟動從管理節(jié)點。假定獲取所在主機地址為:
|
$ docker run -d swarm manage -H :4000 --replication --advertise <manager1_ip>:
4000 consul://<consul_ip>:8500
啟動工作節(jié)點?文章來源地址http://www.zghlxwxcb.cn/news/detail-507082.html
需要在每個工作節(jié)點上啟動agent服務。獲取節(jié)點的主機地址為<node_ip>,并指定前面獲取到的consul服務地址:
|
$ docker run -d swarm join --advertise=<node_ip>:2375 consul://<consul_ip>:8500
節(jié)點啟動后,用戶可以指定Docker服務地址為<manager0_ip>:4000>來測試各種Docker命令,可以看到整個Swarm集群就像一個虛擬的Docker主機一樣正常工作。
|
由于Swarm實際上是通過agent調用了本地的Docker daemon來運行容 器,當Swarm集群服務出現故障時,無法接受新的請求,但已經運行起來的容器將不會受到影響。
|
???????結束語??????
到了這里,關于【云原生 | 55】Docker三劍客之Docker Swarm簡介和安裝的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!