1

假设有两个 MariaDB 容器在 Docker swarm 的同一主机上运行。每个容器都有其内部端口 3306,该端口动态暴露给例如 30004 和 30056。

我想要一个外部容器(未在堆栈中定义)通过主机名和固定端口访问一个堆栈的数据库,例如mariadb_s1:3306(重定向到端口 30004 上堆栈 1 的 MariaDB),如下图所示。

我们还在 Docker 主机上运行了一个 Traefik 实例。Traefik 有能力创建这些路线吗?

原理图概览

4

1 回答 1

2

我认为 traefik 目前不支持 TCP 代理,但似乎已计划好https://github.com/containous/traefik/issues/10

但即使支持 TCP 代理,也可能很难基于主机名进行路由,因为我认为 MySQL 协议不包含主机名(可能是错误的)。如果是这样,一种解决方案可能是使用 TLS 和基于 SNI 的路由。

于 2019-02-15T23:31:07.573 回答