Skip to content

Instantly share code, notes, and snippets.

@DovAmir
Last active April 10, 2019 05:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save DovAmir/410e97f35f3b78530fe92d2793c859e3 to your computer and use it in GitHub Desktop.
Save DovAmir/410e97f35f3b78530fe92d2793c859e3 to your computer and use it in GitHub Desktop.
Hybrid cloud swarm cluster
#!/usr/bin/env bash
echo ""
echo "stopping cluster"
echo "================"
docker swarm leave --force # localhost leaves swarm
ssh aws1 docker swarm leave --force # aws1 leaves swarm
ssh azure3 docker swarm leave --force # azure3 leaves swarm
sleep 10
ssh azure2 docker service rm mongo
#ssh azure2 docker service rm visualizer
ssh azure2 docker swarm leave --force # azure2 (manager) leaves swarm
echo ""
echo "creating new swarm cluster manager"
echo "=================================="
sleep 3
export managerip=xxxxxxx # azure2 (manager) public ip
ssh azure2 docker swarm init --advertise-addr $managerip:2377 # init swarm cluster in azure2
export token=$(ssh azure2 docker swarm join-token -q worker) # get token for joining cluster
sleep 3
echo ""
echo "running docker swarm visualizer as service in swarm"
echo "==================================================="
ssh azure2 docker service create --name=visualizer --publish=2378:8080/tcp --constraint=node.role==manager --mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock dockersamples/visualizer >/dev/null
echo "docker swarm visualizer is up and running on http://$managerip:2378/"
echo ""
echo "joining servers to cluster"
echo "==============================="
ssh azure3 docker swarm join --token $token $managerip:2377 # azure server join cluster
ssh aws1 docker swarm join --token $token $managerip:2377 # aws server join cluster
docker swarm join --token $token $managerip:2377 # local server join cluster
echo ""
echo "running mongodb containers as service"
echo "====================================="
ssh azure2 docker service create --with-registry-auth --restart-condition on-failure --restart-delay 5s --name mongo mongo:3.5.6 > /dev/null & # run mongodb service
sleep 5
echo ""
echo "scaling mongo to 5"
echo "=================="
ssh azure2 docker service scale mongo=5 > /dev/null & # scale mongodb to 5 instances
echo ""
echo "list docker servers in swarm"
echo "============================"
ssh azure2 docker node ls
echo ""
echo "list docker containers in swarm"
echo "==============================="
ssh azure2 docker service ls
echo ""
echo "finsished deploying swarm cluster"
echo ""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment