Docker Swarm CE, обратный прокси-сервер без общего файла конфигурации на главных узлах - PullRequest
0 голосов
/ 24 октября 2019

Я борюсь с этим уже несколько дней. У меня есть рой с 9 узлами, 3 менеджера. Я планирую развернуть несколько сред тестирования в этом рое, используя Docker-Compose для каждой среды. У нас есть много служб отдыха в каждой среде, и я хотел бы управлять доступом к ним через обратный прокси-сервер, чтобы доступ к службам осуществлялся через один порт на среду. В идеале мне бы хотелось, чтобы он вел себя примерно так http://dockerNode:9001/ServiceA и http:/dockerNode:9001/ServiceB.

Я пробовал трафик, прокси-сервер для докеров, HAProxy (я еще не пробовал NGINX). Все они столкнулись с проблемами, из-за которых я даже не могу заставить их примеры работать, ИЛИ они требуют, чтобы я сбросил файл на каждом мастер-узле, или настроил какое-либо облачное хранилище.)

Я бы хотелбыть в состоянии заставить что-то просто работать, поместив его в файл docker-compose, но мне также удобно настраивать все сопоставления в файле compose (это не динамически меняющиеся среды, в которых сервисы приходят и уходят).

Что является рабочим примером этого типа установки, или что я должен изучить?

1 Ответ

0 голосов
/ 27 октября 2019

Если вы хотите получить доступ к вашему сервису, используя IP-адрес сервера и сервисный порт, то вам нужно настроить dnsrr endpoint mode, чтобы переопределить сетку обслуживания докера. Вот ямл, чтобы вы знали, как это сделать.

version: "3.3"

services:
  alpine:
    image: alpine
    ports:
      - target: 9100
        published: 9100
        protocol: tcp
        mode: host
    deploy:
      endpoint_mode: dnsrr
      placement:
        constraints:
          - node.labels.host == node1

Обратите внимание на конфигурацию endpoint_mode: dnsrr и способ определения порта. Также обратите внимание на placement contraint, который позволит запланировать обслуживание только в с меткой node1. Таким образом, теперь вы можете получить доступ к своему сервису, используя IP-адрес узла 1 и порт 9100. Что касается URI serviceA, просто добавьте его.

...