TCP-Routen für Datenbanken

Zielgruppe: Betreuer · Stand: 06.11.2026

Datenbanken erreichen Clients über eigene TCP-Entrypoints am Edge, z. B. Port 33xx für einen MariaDB-Cluster hinter MaxScale. Der Entrypoint kommt aus Consul KV, der Router aus den Tags des Datenbank-Service. Diese Seite zeigt beide Teile. Lab-PoC: Umgesetzt ist das bisher nur im Lab.

Voraussetzungen

Vorgehen

  1. Entrypoint in KV eintragen. Je Entrypoint ein Schlüssel traefik/<kv_stage>/tcp/<entrypoint> mit JSON-Wert:
{"port": <port>, "service": "<dienst>"}
  1. Edge-Stack neu ausrollen. Entrypoints sind statische Konfiguration. Die Pipeline des Edge-Stacks liest den KV-Präfix beim Plan und gibt die Entrypoints an die Rolle traefik (traefik_tcp_entrypoints). Traefik lauscht dann auf der internen VIP (traefik_tcp_bind_address). Ein CIDR-Präfix an der Adresse schneidet die Rolle ab.

  2. Router per Tags am Service. Die Rolle consul.maxscale setzt sie so:

tags = [
  "traefik.enable=true",
  "<stage-tag>",
  "traefik.tcp.routers.<name>.rule=HostSNI(`*`)",
  "traefik.tcp.routers.<name>.entrypoints=<entrypoint>",
  "traefik.tcp.routers.<name>.service=<name>",
  "traefik.tcp.services.<name>.loadbalancer.server.port=<db-port>",
]

HostSNI(*) leitet reines TCP weiter. Die TLS-Verbindung, die MariaDB im Protokoll aushandelt, läuft unverändert durch.

Prüfen

Stolperfallen

Die Datenbank sieht als Client-Adresse die Adresse des Edge, nicht die des echten Clients. Grants mit Host-Beschränkung müssen das berücksichtigen.

Weiterführend


Revision #1
Created 2026-11-06 20:24:06 UTC by Alexander Golembek
Updated 2026-11-06 20:24:06 UTC by Alexander Golembek