Skip to content

Latest commit

 

History

History
341 lines (310 loc) · 9.16 KB

multi_host_deploy.md

File metadata and controls

341 lines (310 loc) · 9.16 KB

Multi host, all in one HA Deployment

alt tag

Install hosts

$ docker-machine create \
  --engine-opt dns=172.17.42.1 \
  --engine-opt dns=8.8.8.8 \
  --engine-opt dns-search=service.consul \
  -d virtualbox docker01

$ docker-machine create \
  --engine-opt dns=172.17.42.1 \
  --engine-opt dns=8.8.8.8 \
  --engine-opt dns-search=service.consul \
  -d virtualbox docker02

$ docker-machine create \
  --engine-opt dns=172.17.42.1 \
  --engine-opt dns=8.8.8.8 \
  --engine-opt dns-search=service.consul \
  -d virtualbox docker03

Start host image dependences

Consul

$ eval "$(docker-machine env docker01)"
$ docker run -d -v /data/consul:/data/consul \
  --name consul \
  -e SERVICE_NAME="consul" \
  --restart=always \
  -p 8300:8300 \
  -p 8301:8301 \
  -p 8301:8301/udp \
  -p 8302:8302 \
  -p 8302:8302/udp \
  -p 8400:8400 \
  -p 8500:8500 \
  -p 53:53/udp \
  progrium/consul -server -advertise `docker-machine ip docker01` -bootstrap-expect 3

$ eval "$(docker-machine env docker02)"
$ docker run -d -v /data/consul:/data/consul \
  --name consul \
  -e SERVICE_NAME="consul" \
  --restart=always \
  -p 8300:8300 \
  -p 8301:8301 \
  -p 8301:8301/udp \
  -p 8302:8302 \
  -p 8302:8302/udp \
  -p 8400:8400 \
  -p 8500:8500 \
  -p 53:53/udp \
  progrium/consul -server -advertise `docker-machine ip docker02` -join `docker-machine ip docker01`

$ eval "$(docker-machine env docker03)"
$ docker run -d -v /data/consul:/data/consul \
  --name consul \
  -e SERVICE_NAME="consul" \
  --restart=always \
  -p 8300:8300 \
  -p 8301:8301 \
  -p 8301:8301/udp \
  -p 8302:8302 \
  -p 8302:8302/udp \
  -p 8400:8400 \
  -p 8500:8500 \
  -p 53:53/udp \
  progrium/consul -server -advertise `docker-machine ip docker03` -join `docker-machine ip docker01`

Consul registrator

$ eval "$(docker-machine env docker01)"
$ docker run -d -v /var/run/docker.sock:/tmp/docker.sock \
  --name registrator \
  -e SERVICE_NAME="registrator" \
  --restart=always \
  gliderlabs/registrator -ip `docker-machine ip docker01` -resync 5 consul://`docker-machine ip docker01`:8500

$ eval "$(docker-machine env docker02)"
$ docker run -d -v /var/run/docker.sock:/tmp/docker.sock \
  --name registrator \
  -e SERVICE_NAME="registrator" \
  --restart=always \
  gliderlabs/registrator -ip `docker-machine ip docker02` -resync 5 consul://`docker-machine ip docker02`:8500

$ eval "$(docker-machine env docker03)"
$ docker run -d -v /var/run/docker.sock:/tmp/docker.sock \
  --name registrator \
  -e SERVICE_NAME="registrator" \
  --restart=always \
  gliderlabs/registrator -ip `docker-machine ip docker03` -resync 5 consul://`docker-machine ip docker03`:8500

Consul template

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name consul-template \
  -e SERVICE_NAME="consul-template" \
  --restart=always \
  -v /var/run/docker.sock:/tmp/docker.sock \
  -v /data/tsuru:/data/tsuru \
  -v /data/router:/data/router \
  -v /data/gandalf:/data/gandalf \
  -v /data/archive-server:/data/archive-server \
  tsuru/consul-template

$ eval "$(docker-machine env docker02)"
$ docker run -d \
  --name consul-template \
  -e SERVICE_NAME="consul-template" \
  --restart=always \
  -v /var/run/docker.sock:/tmp/docker.sock \
  -v /data/tsuru:/data/tsuru \
  -v /data/router:/data/router \
  -v /data/gandalf:/data/gandalf \
  -v /data/archive-server:/data/archive-server \
  tsuru/consul-template

$ eval "$(docker-machine env docker03)"
$ docker run -d \
  --name consul-template \
  -e SERVICE_NAME="consul-template" \
  --restart=always \
  -v /var/run/docker.sock:/tmp/docker.sock \
  -v /data/tsuru:/data/tsuru \
  -v /data/router:/data/router \
  -v /data/gandalf:/data/gandalf \
  -v /data/archive-server:/data/archive-server \
  tsuru/consul-template

Start tsuru

MongoDB

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name mongo \
  -e SERVICE_NAME="mongo" \
  --restart=always \
  -p 27017:27017 \
  mongo --replSet rStsuru

$ eval "$(docker-machine env docker02)"
$ $ docker run -d \
  --name mongo \
  -e SERVICE_NAME="mongo" \
  --restart=always \
  -p 27017:27017 \
  mongo --replSet rStsuru

$ eval "$(docker-machine env docker03)"
$ $ docker run -d \
  --name mongo \
  -e SERVICE_NAME="mongo" \
  --restart=always \
  -p 27017:27017 \
  mongo --replSet rStsuru
$ docker exec mongo mongo --eval "JSON.stringify(rs.initiate());"
$ docker exec mongo mongo --eval "JSON.stringify(rs.add('`docker-machine ip docker01`:27017'))"
$ docker exec mongo mongo --eval "JSON.stringify(rs.add('`docker-machine ip docker02`:27017'))"

Redis (TODO - support redis cluster to implement HA - issue #1272)

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name redis \
  -e SERVICE_NAME="redis" \
  --restart=always \
  -p 6379:6379 \
  redis

Docker Registry

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name registry \
  -e SERVICE_NAME="registry" \
  --restart=always \
  -p 5000:5000 \
  registry

$ eval "$(docker-machine env docker02)"
$ docker run -d \
  --name registry \
  -e SERVICE_NAME="registry" \
  --restart=always \
  -p 5000:5000 \
  registry

$ eval "$(docker-machine env docker03)"
$ docker run -d \
  --name registry \
  -e SERVICE_NAME="registry" \
  --restart=always \
  -p 5000:5000 \
  registry

Router

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name router-hipache \
  -e SERVICE_NAME="router-hipache" \
  --restart=always \
  -p 8080:8080 \
  tsuru/router-hipache

$ eval "$(docker-machine env docker02)"
$ docker run -d \
  --name router-hipache \
  -e SERVICE_NAME="router-hipache" \
  --restart=always \
  -p 8080:8080 \
  tsuru/router-hipache

$ eval "$(docker-machine env docker03)"
$ docker run -d \
  --name router-hipache \
  -e SERVICE_NAME="router-hipache" \
  --restart=always \
  -p 8080:8080 \
  tsuru/router-hipache

Tsuru API

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name tsuru-api \
  -e SERVICE_NAME="tsuru-api" \
  --restart=always \
  -p 8000:8000 \
  -v /data/tsuru:/data/tsuru \
  tsuru/tsuru-api api --config=/data/tsuru/tsuru.conf

$ eval "$(docker-machine env docker02)"
$ docker run -d \
  --name tsuru-api \
  -e SERVICE_NAME="tsuru-api" \
  --restart=always \
  -p 8000:8000 \
  -v /data/tsuru:/data/tsuru \
  tsuru/tsuru-api api --config=/data/tsuru/tsuru.conf

$ eval "$(docker-machine env docker03)"
$ docker run -d \
  --name tsuru-api \
  -e SERVICE_NAME="tsuru-api" \
  --restart=always \
  -p 8000:8000 \
  -v /data/tsuru:/data/tsuru \
  tsuru/tsuru-api api --config=/data/tsuru/tsuru.conf

Archive Server

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name archive-server \
  -e SERVICE_NAME="archive-server" \
  --restart=always \
  -p 3031:3031 \
  -p 3032:3032 \
  -v /data/archive-server:/data/archive-server \
  -v /data/gandalf:/data/gandalf \
  tsuru/archive-server

$ eval "$(docker-machine env docker02)"
$ docker run -d \
  --name archive-server \
  -e SERVICE_NAME="archive-server" \
  --restart=always \
  -p 3031:3031 \
  -p 3032:3032 \
  -v /data/archive-server:/data/archive-server \
  -v /data/gandalf:/data/gandalf \
  tsuru/archive-server

$ eval "$(docker-machine env docker03)"
$ docker run -d \
  --name archive-server \
  -e SERVICE_NAME="archive-server" \
  --restart=always \
  -p 3031:3031 \
  -p 3032:3032 \
  -v /data/archive-server:/data/archive-server \
  -v /data/gandalf:/data/gandalf \
  tsuru/archive-server

Gandalf

$ eval "$(docker-machine env docker01)"
$ docker run -d \
  --name gandalf \
  -e SERVICE_NAME="gandalf" \
  --restart=always \
  -p 8001:8001 \
  -v /data/gandalf:/data/gandalf \
  -v /data/tsuru:/data/tsuru \
  -v /var/run/docker.sock:/tmp/docker.sock \
  tsuru/gandalf

$ eval "$(docker-machine env docker02)"
$ docker run -d \
  --name gandalf \
  -e SERVICE_NAME="gandalf" \
  --restart=always \
  -p 8001:8001 \
  -v /data/gandalf:/data/gandalf \
  -v /data/tsuru:/data/tsuru \
  -v /var/run/docker.sock:/tmp/docker.sock \
  tsuru/gandalf

$ eval "$(docker-machine env docker03)"
$ docker run -d \
  --name gandalf \
  -e SERVICE_NAME="gandalf" \
  --restart=always \
  -p 8001:8001 \
  -v /data/gandalf:/data/gandalf \
  -v /data/tsuru:/data/tsuru \
  -v /var/run/docker.sock:/tmp/docker.sock \
  tsuru/gandalf

Application Node

Now tsuru doesn't support TLS authentication, for now is simpler use a vagrant VM

$ git clone https://github.com/tsuru/dockerized-setup.git
$ cd dockerized-setup
$ vagrant up dockerNode01
$ vagrant up dockerNode02