traefik多端口端点路由

时间:2018-11-30 11:37:02

标签: docker endpoint traefik swarm

我有一个处于群集模式和镜像的泊坞窗,该端口使用80端口作为websocket,使用8000端口作为http。

此配置使traefik达到它们之间的粘性负载平衡,但是我需要不同的映射-http @ 8000端口的443 TLS和ws @ 80端口的80 TLS。 严格。每种可能都有不同的LB模式。

任何人都可以解释实现此目标的方式吗? 谢谢!

最初的错误Webapp容器标签:

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 :(得分:0)

尝试在其中更改web

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

对于其他名称,已过时的Web提供商将使用该名称。

答案 1 :(得分:0)

负载均衡器后端混乱不堪,只能粘在一个节点上。 拥有不同后端以服务于来自不同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"