Traefik 2.0 正式发布!


寄予厚望的 Traefik 2.0 经过了一年的等待,今天终于正式发布了,此次大版本的更新添加了许多新功能,特别是大家都期望的支持 TCP 的功能。接下来我们就来探索下 Traefik 2.0 中有哪些新增的功能呢?

01 SNI 路由和多协议端口的 TCP

在之前 2.0 alpha 声明中就讨论过这个最重要的功能,但实际上这个功能是第10个 feature request,所以花了很长时间来讨论并实现这个新功能。

下面是一个简单的示例配置 - 使用最新支持的 YAML 文件格式,将请求路由到一个数据库上面去:
tcp:
routers:
to-database:
  entrypoints:
  - database-entrypoint
  rule: 
HostSNI
(
`*`
)
  service: database-service
services:
database-service:
  loadBalancer:
    servers:
    - address: xx.xx.xx.xx:xx


上面这个配置示例表示每个以 database-entrypoint 结尾的请求都将被路由到 database-service 这个服务上去。

此外通过 TLS,Traefik 还可以根据 SNI 来路由 TCP 请求。在下面示例中,Traefik 就将根据 SNI 将请求路由到两个数据库:

tcp:
routers:
to-db-
1
:
  entrypoints:
  - web-secure
  rule: 
"HostSNI(`db1.domain`)"
  service: 
"db1"
  tls: {}
to-db-
2
:
  entrypoints:
  - web-secure
  rule: 
"HostSNI(`db2.domain`)"
  service: 
"db2"
  tls: {
}

另外 Traefik 还是支持 HTTP 和 TCP 在同一个端口上,如果你希望获得相同的入口的同时获取 HTTP 和 TCP 请求,那么 Traefik 可以很完美的来处理它。

tcp:
routers:
to-db-
1
:
  entrypoints:
  - web-secure
  rule: 
"HostSNI(`db1.domain`)"
  service: 
"db-1"
  tls: {}
http:
routers:
to-db1-dashboard:
  entrypoints:
  - web-secure
  rule: 
"Host(`dashboard.db1.domain`)"
  service: 
"db1-dashboard"
  tls: {
}

比如上面这个示例中, dashboard.db1.domain 上的 HTTP 请求将路由到数据库的 Dashboard 服务上,而上面的 db1.domain 上的 TCP 请求将路由到数据库上面去,这个功能是不是非常赞

0 个评论

要回复文章请先登录注册