У меня есть брокер 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 и проксификация не работает: