安裝Swarm叢集
環境資訊
伺服器:
- 192.168.99.100 centos-node1
- 192.168.99.101 centos-node2
- 192.168.99.102 centos-node3
叢集資訊:
- etc伺服器: 192.168.99.100:2379
- swarm manage: 192.168.99.101:3376
- swarm-node1: 192.168.99.100:2375
- swarm-node2: 192.168.99.101:2375
- swarm-node3: 192.168.99.102:2375
準備
- 在所有的機器上安裝dokcer
- 在centos-node1 上
docker pull ystyle/etcd
(官方的下載不了,自己做了個一樣的) - 在所有機器上
dokcer pull swarm
- 以上三步可以用
docker-machine
完成 - 開放所有機器的
2375
埠,centos-node1
的2379
埠,centos-node2
的3376
埠
安裝etcd k-v
資料庫
在centos-node1上執行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 設定當前host的ip export HOSTIP=192.168.99.100 # 啟動etcd `k-v`伺服器 docker run -d -v /etc/ssl/certs:/etc/ssl/certs -p 4001:4001 -p 2380:2380 -p 2379:2379 --name etcd ystyle/etcd -name etcd0 -advertise-client-urls http://${HOSTIP}:2379,http://${HOSTIP}:4001 -listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 -initial-advertise-peer-urls http://${HOSTIP}:2380 -listen-peer-urls http://0.0.0.0:2380 -initial-cluster-token etcd-cluster-1 -initial-cluster etcd0=http://${HOSTIP}:2380 -initial-cluster-state new |
加入叢集
- 在centos-node1執行:
1 |
docker run -d swarm join --addr=192.168.99.100:2375 etcd://192.168.99.100:2379/swarm |
- 在centos-node2執行:
1 |
docker run -d swarm join --addr=192.168.99.101:2375 etcd://192.168.99.100:2379/swarm |
- 在centos-node3執行:
1 |
docker run -d swarm join --addr=192.168.99.102:2375 etcd://192.168.99.100:2379/swarm |
啟動swarm manage
在centos-node2上執行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# 啟動swarm manage docker run -d -p 3376:3376 -t swarm manage -H 0.0.0.0:3376 etcd://192.168.99.100:2379/swarm # 檢查swarm節點列表 docker run --rm swarm list etcd://192.168.99.100:2379/swarm # 檢視swarm叢集資訊 export DOCKER_HOST=192.168.99.101:3376 docker info # 測試 docker run --rm -p 8080:80 nginx:alpine docker ps -a # 檢視nginx安裝到哪臺機器上了 curl -L http://nginx_host:8080 |
記錄
- 如果docker info 出現
Error: ID duplicated.
刪掉/etc/docker/key.json
檔案(我的虛擬機器是直接複製出來的)
參考資料