Created
January 24, 2019 07:15
-
-
Save vimiix/b3360670472282ce69eedb2371f4b6a0 to your computer and use it in GitHub Desktop.
在docker swarm模式下,通过docker-machine 创建docker集群实例(virtual box 驱动虚拟机)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Swarm mode using Docker Machine | |
managers=3 | |
workers=3 | |
# 创建管理节点虚拟机 | |
echo "======> Creating $managers manager machines ..."; | |
for node in $(seq 1 $managers); | |
do | |
echo "======> Creating manager$node machine ..."; | |
docker-machine create -d virtualbox manager$node; | |
done | |
# 创建工作节点虚拟机 | |
echo "======> Creating $workers worker machines ..."; | |
for node in $(seq 1 $workers); | |
do | |
echo "======> Creating worker$node machine ..."; | |
docker-machine create -d virtualbox worker$node; | |
done | |
# 罗列创建好的节点 | |
docker-machine ls | |
# 初始化第一个管理节点虚拟机为swarm模式 | |
echo "======> Initializing first swarm manager ..." | |
docker-machine ssh manager1 "docker swarm init --listen-addr $(docker-machine ip manager1) --advertise-addr $(docker-machine ip manager1)" | |
# 分别获取管理节点和工作节点加入集群所需要的token | |
export manager_token=`docker-machine ssh manager1 "docker swarm join-token manager -q"` | |
export worker_token=`docker-machine ssh manager1 "docker swarm join-token worker -q"` | |
echo "manager_token: $manager_token" | |
echo "worker_token: $worker_token" | |
# 将另外两个管理节点加入当前集群 | |
for node in $(seq 2 $managers); | |
do | |
echo "======> manager$node joining swarm as manager ..." | |
docker-machine ssh manager$node \ | |
"docker swarm join \ | |
--token $manager_token \ | |
--listen-addr $(docker-machine ip manager$node) \ | |
--advertise-addr $(docker-machine ip manager$node) \ | |
$(docker-machine ip manager1)" | |
done | |
# 查看现在集群内的节点信息 | |
docker-machine ssh manager1 "docker node ls" | |
# 将所有的工作节点加入到集群 | |
for node in $(seq 1 $workers); | |
do | |
echo "======> worker$node joining swarm as worker ..." | |
docker-machine ssh worker$node \ | |
"docker swarm join \ | |
--token $worker_token \ | |
--listen-addr $(docker-machine ip worker$node) \ | |
--advertise-addr $(docker-machine ip worker$node) \ | |
$(docker-machine ip manager1)" | |
done | |
# 查看现在集群内的节点信息 | |
docker-machine ssh manager1 "docker node ls" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment