回到目錄
swarm是docker公司推出的用來管理docker集群,它將一群docker宿主機變成乙個單一的,虛擬的主機。swarm使用標準的docker api介面作為其前端訪問入口,換言之,各種形式的docker client(docker client in go, docker_py, docker等)均可以直接與swarm通訊。swarm幾乎全部用go語言來完成開發,swarm0.2發布,相比0.1版本,0.2版本增加了乙個新的策略來排程集群中的容器,使得在可用的節點上傳播它們,以及支援更多的docker命令以及集群驅動。
swarm deamon只是乙個排程器(scheduler)加路由器(router),swarm自己不執行容器,它只是接受docker客戶端傳送過來的請求,排程適合的節點來執行容器,這意味著,即使swarm由於某些原因掛掉了,集群中的節點也會照常執行,當swarm重新恢復執行之後,它會收集重建集群資訊.
docker node 用來顯示集群的節點,預設建立時只有乙個節點,當然也就談不上高可用了,可以使用docker node --help來檢視所有node引數
集群初始化 docker swarm init
當已經被初始化後,就不能重新執行這個操作了,使用docker node ls 來檢視剛建立的集群
集群中的管理節點和工作節點功能圖
新增管理節點 docker swarm join
docker swarm 命令中還需要新增一些選項:swarn部署時使用的指令碼,來自網路* join:表明乙個新的節點將被新增進 swarm
* –manager:表明節點的性質(manager vs worker)
* –listen-addr:讓乙個新新增的節點可以訪問 swarm 內的其他節點
* 最後的引數就是第一管理節點的位址(即這一命令將被送到的那個節點)
注意:由於 –auto-accept manager 選項會在 swarm 初始化的過程中被提供,所以第二管理節點會被自動接受。如果沒有這一選項,那麼第二管理節點需要被第一管理節點手動接受。
$ manager2_ip=$(docker-machine ip manager2)docker-machine ssh manager2 docker swarm join --manager --listen-addr $manager2_ip:2377 $manager1_ip:2377
下面是一小段用來建立 docker 主機並部署 swarm 的 shell 指令碼。當然了,管理/工作節點的數字都是可以隨意改動的。
注意:建立兩個管理節點和兩個工作節點,僅僅是用來作示範。在工業生產中,我們可能需要在集群裡搭建 3 個管理節點和 5 個工作節點。
# define the number of managers/workers對於上面文章中,只提到了集群,而沒有談到如何去使用,在建立集群後,服務的部署我們可以用manager=3
worker=5
# create the docker hosts
for i in $(seq 1 $manager); do docker-machine create --driver virtualbox manager$i; done
for i in $(seq 1 $worker); do docker-machine create --driver virtualbox worker$i; done
# init the swarm
docker-machine ssh manager1 docker swarm init --auto-accept manager --auto-accept worker --listen-addr $(docker-machine ip manager1):2377
# add additional manager(s)
for i in $(seq 2 $manager); do docker-machine ssh manager$i docker swarm join --manager --listen-addr $(docker-machine ip manager$i):2377 $(docker-machine ip manager1):2377
; done
# add workers
for i in $(seq 1 $worker); do docker-machine ssh worker$i docker swarm join --listen-addr $(docker-machine ip worker$i):2377 $(docker-machine ip manager1):2377; done
docker stack deploy -c test.yml test
下面給出自己寫的乙個服務,版本3的
version: "3"這裡有個服務要注意,服務的名稱一定不能有點,如logger.manager這是錯誤的!來建立乙個服務,同時可以使用docker service來檢視已經執行的服務!services:
loggerapi:
image: logger.api
build:
context: ./src/logger.api
dockerfile: dockerfile
ports:
- "5000:80
"networks:
-ingress
loggermanager:
image: logger.manager
build:
context: ./src/logger.manager
dockerfile: dockerfile
ports:
- "5050:80
"networks:
-ingress
networks:
ingress:
還有一點要注意,yml在進行v3版後,不再支援build,也就是說,你需要先把映象建立好才行!
回到目錄
docker swarm環境搭建
docker swarm 是什麼?swarm 是 docker 官方提供的一款集群管理工具,其主要作用是把若干臺 docker 主機抽象為乙個整體,並且通過乙個入口統一管理這些 docker 主機上的各種 docker 資源。docker swarm 跟 k8s 一樣,只是swarm比k8s上手簡單...
如何從零開始搭建Docker Swarm集群
需求1.docker版本1.4.0 2.兩台節點主機 檢查節點docker配置 1.開啟docker配置檔案 示例是centos 7 vim etc sysconfig docker 2.新增 h tcp 到options options g cutome path docker h tcp 3.c...
Docker Swarm排程策略
swarm在用命令swarm manager啟動swarm manager時,可用 strategy指定排程策略。swarm提供了三種排程策略計算節點的排名,在排程 例如選擇哪乙個節點執行容器時 時,取排名最前的節點。這三種排程策略是 spread binpack random random策略 隨...