Skip to content

Instantly share code, notes, and snippets.

@vimiix
Created January 24, 2019 07:15
Show Gist options
  • Save vimiix/b3360670472282ce69eedb2371f4b6a0 to your computer and use it in GitHub Desktop.
Save vimiix/b3360670472282ce69eedb2371f4b6a0 to your computer and use it in GitHub Desktop.
在docker swarm模式下,通过docker-machine 创建docker集群实例(virtual box 驱动虚拟机)
#!/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