Как развернуть приложения на Docker Swarm и выставить этот IP-адрес для записи A

Я успешно настроил кластер Docker Swarm с помощью nginx. на моих экземплярах ec2. используя этот учебник

https://botleg.com/stories/load-balancing-with-docker-swarm/

Я использую вот так

Менеджер 1

узел 1

узел 2

Я использую консоль с регистратором для обнаружения услуг.

В Консуле машины запустите докер --restart = если не остановлено -d -p 8500:8500 -h Прогул консула / консул -сервер -bootstrap

Запуск докера Swarm Manager --restart = если не остановлен -d -p 3375:2375 управление роем --replication --advertise=mangerip:3375 консул: // консультация:8500/

запуск докера --restart = если не остановлен -d --name = регистратор -h = хост --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator: последний консул://consulip:8500

Докер Node1 запускается --restart = если не остановлено -d swarm join --advertise=node1ip:2375 консул: // консилип:8500/

запуск докера --restart = если не остановлен -d --name = регистратор -h = хост --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator: последний консул://consulip:8500

Докер Node2 запускается --restart = если не остановлено -d swarm join --advertise=node2:2375 консул: // консилип:8500/

запуск докера --restart = если не остановлен -d --name = регистратор -h = хост --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator: последний консул://consulip:8500

мой Dockerfile

FROM nginx:latest

RUN apt-get update \
  && apt-get install -y unzip

ADD files/start.sh /bin/start.sh
RUN chmod +x /bin/start.sh
ADD files/default.ctmpl /templates/default.ctmpl

ADD https://releases.hashicorp.com/consul-template/0.12.2/consul-template_0.12.2_linux_amd64.zip /usr/bin/
RUN unzip /usr/bin/consul-template_0.12.2_linux_amd64.zip -d /usr/local/bin

EXPOSE 80
ENTRYPOINT ["/bin/start.sh"]

start.sh

#!/bin/bash
service nginx start
consul-template -consul=$CONSUL_URL -template="/templates/default.ctmpl:/etc/nginx/conf.d/default.conf:service nginx reload"

default.ctmpl

{{$app := env "APP_NAME"}}

upstream {{printf $app}} {
    least_conn;
    {{range service $app}}
    server {{.Address}}:{{.Port}} max_fails=3 fail_timeout=60 weight=1;{{end}}
}

server {
    listen 80 default;

    location / {
        proxy_pass http://{{printf $app}};
    }
}

докер-compose.yml

version: '2'

services:
  lb:
    build: .
    container_name: lb
    ports:
      - "80:80"
    environment:
      - APP_NAME=tutum-nodejs-redis
      - CONSUL_URL=${KV_IP}:8500
    depends_on:
      - web
    networks:
      - front-tier

  web:
    image: hanzel/tutum-nodejs-redis
    ports:
      - "4000"
    environment:
      - APP_PORT=4000
      - REDIS_IP=redis
      - REDIS_PORT=6379
    depends_on:
      - redis
    networks:
      - front-tier
      - back-tier

  redis:
    image: redis
    container_name: redis
    command: redis-server --appendonly yes
    volumes:
      - redis-data:/data
    networks:
      - back-tier

volumes:
  redis-data:
    driver: local

networks:
  front-tier:
    driver: overlay
  back-tier:
    driver: overlay

Проблема в том, какой IP-адрес мне нужен, чтобы указать на запись A, так как Docker автоматически собирает узел сбора данных.

Допустим, в первый раз, когда я запускаю это, он может забрать первый узел. В случае, если я удаляю это и повторяю все шаги, на этот раз он выберет другой узел и другой IP. так что в этот раз мне нужно поменять свой рекорд. Как решить эту проблему,

Я гуглил это и нашел вагля. это дает мне сервис Dicovery, это круто. но это было очень просто, я думаю, я не знаю, было ли это готово к производству или нет.

Пожалуйста, кто-нибудь скажет мне, как сделать из потока от А до Я, т. Е. От развертывания до настройки IP-адреса для записи А. или просто укажите мне какую-нибудь ссылку.

1 ответ

Решение

Я не думаю, что вам нужно менять вас. Запись для этого. Поскольку вы уже знаете IP-адреса вашего кластера, и если вы развертываете его с помощью docker-compose Вы можете добавить constraint в вашей среде балансировки нагрузки: constraint:node==node1

Другие вопросы по тегам