Docker集群管理(二)—— docker+swarm+etcd+shipyard


引言

前一篇介紹如何簡單的搭建一個可視化管理的docker集群,本篇將在此基礎之上引入etcd發現服務。

目的

使用etcd發現服務解決swarm內置發現服務的不穩定問題。etcd采用raft算法,這里有篇容易理解的raft算法
Etcd是一個高可用的 Key/Value 存儲系統,主要用於分享配置和服務發現。

  • 簡單:支持 curl 方式的用戶 API (HTTP+JSON)
  • 安全:可選 SSL 客戶端證書認證
  • 快速:單實例可達每秒 1000 次寫操作
  • 可靠:使用 Raft 實現分布式

安裝etcd

docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery docker.io/microbox/etcd -name discovery

啟動swarm manger

docker run -ti -d -p 2376:2375 --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:2375 etcd://192.168.139.128:4001

很容易發現,只是將原來的 token://xxx 換成了 etcd://xxx

啟動swarm agent,

在每個docker節點分別執行,將當前docker節點加入到集群中:

docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.139.128:2375 etcd://192.168.139.128:4001

docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.139.129:2375 etcd://192.168.139.128:4001

docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.139.130:2375 etcd://192.168.139.128:4001

我們來看下集群中的節點:

docker run --rm swarm list etcd://192.168.139.128:4001

會報這個錯誤:“client: etcd cluster is unavailable or misconfigured,自然在shipyard中的節點、容器和鏡像都是空的。這是因為防火牆的問題,在防火牆中添加4001端口

firewall-cmd --zone=public --permanent --add-port=4001/tcp

firewall-cmd --reload

現在看看shipyard中是不是已經有了docker集群信息了.

在集群中啟動一個服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM