многопортовая маршрутизация конечной точки traefik - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть докер в режиме роя и образ, который использует порты 80 для веб-сокетов и порт 8000 для http.

Этот конфиг переводит трафик в липкий баланс между ними, но мне нужны разные сопоставления - 443TLS для порта http @ 8000 и 80 TLS для порта ws @ 80.Строго.Вероятно, с разными режимами LB на каждом.

Кто-нибудь может объяснить, как этого можно достичь?Спасибо!

Первоначально неправильные ярлыки контейнера веб-приложения:

deploy:
  labels:
    - "traefik.backend.loadbalancer.stickiness=true"
    - "traefik.backend.loadbalancer.swarm=true"
    - "traefik.backend=webapp"
    - "traefik.docker.network=webapp-out"
    - "traefik.entrypoints=http,https"
    - "traefik.frontend.passHostHeader=true"
    - "traefik.ws.frontend.rule=Host:host.domain.local"
    - "traefik.ws.port=80"
    - "traefik.web.frontend.rule=Host:host.domain.local"
    - "traefik.web.port=8000"
    - "traefik.enable=true"

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Существует бэкэнд беспорядок с балансировщиком нагрузки с привязками к одному узлу.Правильный способ иметь разные бэкэнды для обслуживания запросов из разных точек входа:

deploy:
  labels:
    - "traefik.backend.loadbalancer.stickiness=true"
    - "traefik.backend.loadbalancer.swarm=true"
    - "traefik.backend=no_matter"
    - "traefik.docker.network=webapp-out"
    - "traefik.entrypoints=http,https"
    - "traefik.frontend.passHostHeader=true"
    - "traefik.port=80" #No matter this section. It will be discarded.
    - "traefik.ws.frontend.rule=Host:host.domain.local"
    - "traefik.ws.backend=ws_app"
    - "traefik.ws.backend.loadbalancer.stickiness=true"
    - "traefik.ws.backend.loadbalancer.swarm=true"
    - "traefik.ws.frontend.entryPoints=http"
    - "traefik.ws.port=80"
    - "traefik.web.frontend.rule=Host:host.domain.local"
    - "traefik.web.frontend.entryPoints=https"
    - "traefik.web.backend=web_app"
    - "traefik.web.backend.loadbalancer.stickiness=true"
    - "traefik.web.backend.loadbalancer.swarm=true"
    - "traefik.web.port=8000"
    - "traefik.enable=true"
0 голосов
/ 30 ноября 2018

Попробуйте изменить web в

- "traefik.web.frontend.rule=Host:host.domain.local"
- "traefik.web.port=8000"

на что-то другое, имя используется устаревшим веб-провайдером.

...