与traefik的Grpc负载平衡不起作用

时间:2018-06-13 09:48:27

标签: load-balancing grpc traefik

我希望使用traefik作为grpc负载平衡。这是traefik.toml文件配置。

logLevel = "INFO"
[entryPoints]
[entryPoints.http]
   address = ":2525"

[file]
   [backends]
      [backends.backend1]
         [backends.backend1.servers.server1]
            url = "http://localhost:6565"
            weight = 10

   [frontends]
      [frontends.frontend1]
      backend = "backend1"
         [frontends.frontend1.headers]
            # SSLRedirect = true
         [frontends.frontend1.routes.Route1]
            rule = "Host:localhost"

我的grpc服务器主机为localhost,端口为6565。 Grpc客户端向localhost:6565(服务器)发送grpc请求将正常工作。但是当我配置traefik来监听端口2525并运行traefik时。将grpc客户端端口更改为2525不是我请求的负载平衡。

但是traefik根据访问日志检测到grpc(http2)请求。

127.0.0.1 - - [13/Jun/2018:05:23:16 +0000] "PRI * HTTP/2.0" 404 19 "-" "-" 1 "backend not found" "*" 0ms
127.0.0.1 - - [13/Jun/2018:05:23:16 +0000] "PRI * HTTP/2.0" 404 19 "-" "-" 2 "backend not found" "*" 0ms

它说backend not found。有点难以理解为什么会发生这种情况。我通过互联网寻求更好的解决方案。有人说使用https。但是当NGINX使用时,我们无需使用https。所以我需要这样的解决方案。有人能给我一个更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

根据官方issue和此doc

首先,我们需要将后端协议从http更改为h2c,这是不带s的http2。

第二,traefik将在h2c之前不支持v1.7后端,因此当前版本不起作用。正如官方仓库所说,它们每隔一个月发布一次,当前版本为v1.6.4,因此我们可以在下个月使用此功能。

但是,如果您现在想拥有此功能(例如我),我们可以从源代码构建traefik的开发版本。参见此doc,基本上只是克隆存储库并进行构建。