假设有两个 MariaDB 容器在 Docker swarm 的同一主机上运行。每个容器都有其内部端口 3306,该端口动态暴露给例如 30004 和 30056。
我想要一个外部容器(未在堆栈中定义)通过主机名和固定端口访问一个堆栈的数据库,例如mariadb_s1:3306
(重定向到端口 30004 上堆栈 1 的 MariaDB),如下图所示。
我们还在 Docker 主机上运行了一个 Traefik 实例。Traefik 有能力创建这些路线吗?
假设有两个 MariaDB 容器在 Docker swarm 的同一主机上运行。每个容器都有其内部端口 3306,该端口动态暴露给例如 30004 和 30056。
我想要一个外部容器(未在堆栈中定义)通过主机名和固定端口访问一个堆栈的数据库,例如mariadb_s1:3306
(重定向到端口 30004 上堆栈 1 的 MariaDB),如下图所示。
我们还在 Docker 主机上运行了一个 Traefik 实例。Traefik 有能力创建这些路线吗?
我认为 traefik 目前不支持 TCP 代理,但似乎已计划好https://github.com/containous/traefik/issues/10
但即使支持 TCP 代理,也可能很难基于主机名进行路由,因为我认为 MySQL 协议不包含主机名(可能是错误的)。如果是这样,一种解决方案可能是使用 TLS 和基于 SNI 的路由。