Балансировщик нагрузки для нескольких сайтов в разных портах без хоста в докере с traefik - PullRequest
0 голосов
/ 02 января 2019

Предположим, у меня есть два веб-сервиса, которые говорят, что они w1 и w2, которые развернуты docker-compose.

Теперь я хочу создать несколько контейнеров для каждого из них и создать балансировщик нагрузкиперед ними, которые могут сделать доступ к сервисам следующим образом:

http://localhost:8880 //for service w1

http://localhost:8888 //for service w2

Я искал и получил dockercloud-haproxy и nginx-proxy .

Тем не менее, первое устарело, а последующие должны использоваться с именем хоста, чтобы различать разные службы.

Это довольно сложно для установки разных хостов, особенно в среде разработки.

Тогда я нашел трафик.Похоже, более настраиваемый.Это конфигурационный файл, который я использовал:

version: "3"
services:
    w1:
      image: jwilder/whoami
      labels:
        - "traefik.backend=whoami"
        - "traefik.protocol=http"
        - "traefik.port=8080"
        - "traefik.frontend.entryPoints=http_8080"

    w2:
      build: .  # a simple node server which use port 80
      labels:
        - "traefik.backend=node"
        - "traefik.protocol=http"
        - "traefik.port=80"
        - "traefik.frontend.entryPoints=http_80"

    lb:
      image: traefik
      command: "--docker \
                --logLevel=DEBUG \
                --entryPoints='Name:http_80 Address::80' \
                --entryPoints='Name:http_8080 Address::8080'"
      ports:
        - 8880:80
        - 8888:8080
      volumes:
        - /var/run/docker.sock:/var/run/docker.sock

Хотя он все еще не может удовлетворить мои требования.

Возможно ли это или любое другое альтернативное решение?

1 Ответ

0 голосов
/ 02 января 2019

Вам необходимо добавить совпадение -"traefik.frontend.rule=PathPrefixStrip:/" под w1 и w2. В противном случае значение по умолчанию равно Host:w1.project_name.

Кроме того, я считаю, что jwilder / whoami использует порт 8000 вместо 8080, поэтому измените - "traefik.port=8080" на - "traefik.port=8000"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...