Как настроить репликацию / мониторинг redis / sentinel с помощью докеров на отдельных машинах докеров?

Скажем, у меня есть 3 отдельных машины:

redis$ docker-machine ls
NAME           ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
redis-master   *        virtualbox   Running   tcp://192.168.99.101:2376           v1.10.1   
redis-slave1   -        virtualbox   Running   tcp://192.168.99.102:2376           v1.10.1   
redis-slave2   -        virtualbox   Running   tcp://192.168.99.103:2376           v1.10.1   

Я хочу использовать docker-compose для простого развертывания главного или подчиненного устройства на одной из этих трех машин. На данный момент мой файл docker-compose.yml выглядит так:

redis:
  image: redis:3.0
sentinel:
  image: redis:3.0
  command: "redis-server --sentinel"

Как мне изменить файл docker-compose.yml, чтобы он работал? В конце я хотел бы иметь возможность запускать такие контейнеры, например:

$ NODE_ROLE=master docker-compose up # on master machine
$ NODE_ROLE=slave MASTER_ADDRESS=192.168.99.101:2376 docker-compose up # on slave machine 1
$ NODE_ROLE=slave MASTER_ADDRESS=192.168.99.101:2376 docker-compose up # on slave machine 2

Я видел несколько репозиториев с настройкой redis + docker + sentinel, но все они запускают все экземпляры на одном хосте докеров ...


person user606521    schedule 16.02.2016    source источник


Ответы (1)


Я думаю, вам следует изучить использование https://github.com/docker/swarm

Swarm позволяет рассматривать несколько машин как один движок докеров. Затем вы можете позволить планировщику роя решить, где запускать контейнер, или использовать ограничение, чтобы поместить контейнер на конкретный узел.

person dnephin    schedule 17.02.2016