Многопортовая маршрутизация конечной точки traefik

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

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

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

Исходные неправильные ярлыки контейнера веб-приложения:

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 ответа

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

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

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

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

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"
Другие вопросы по тегам