Как установить бэкэнд службы TCP? - PullRequest
0 голосов
/ 03 мая 2019

У меня есть брокер MQTT, запущенный через docker-compose и управляемый traefik:

  mqtt:
    container_name: mqtt
    image: eclipse-mosquitto
    restart: always
    labels:
      - 'traefik.port=1883'
      - 'traefik.frontend.rule=Host:mqtt2.ex.com'
      - 'traefik.frontend.entryPoints=mqtt'
    ports:
      - 3883:1883

Соответствующая часть traefik.toml, где я пытаюсь настроить бэкэнд:

[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.mqtt]
address = ":2884"

[tcp] # YAY!
   [tcp.routers]
      [tcp.routers.mqtt]
         entrypoints = ["mqtt"]
         rule = "HostSNI(`*`)" # Catches every request       
         service = "mqtt"
   [tcp.services]
   [tcp.services.mqtt.LoadBalancer]


I can access the broker via port `3883` but this is not what I intend to do (the exposed port above is just to make sure that the container is OK): I would like to proxy it though `traefik` like all my other **HTTP** services.

This however is not a HTTP service, it is a TCP one and my problem is that **I do not know how to configure such a TCP backend**.

Документация очень легка в этой функции, она просто заявляет, что

В настоящее время LoadBalancer является единственным поддерживаемым видом службы TCP. Однако, поскольку Traefik - это постоянно развивающийся проект, другие виды TCP Услуги будут доступны в будущем, причина, почему вы должны укажите это.

Что это значит с точки зрения настройки бэкэнда? Что я должен добавить к docker-compose.yaml или traefik.toml, чтобы серверная часть распознавалась как служба TCP? На данный момент он рассматривается как HTTP и проксификация не работает:

enter image description here

...