【问题标题】:Grpc load balance with traefik is not working使用 traefik 的 Grpc 负载平衡不起作用
【发布时间】:2018-11-22 20:30:19
【问题描述】:

我希望使用 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 客户端将 grpc 请求发送到localhost:6565(服务器)会正常工作。但是当我将 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。所以我需要这样的解决方案。谁能给我一个更好的解决方案?

【问题讨论】:

    标签: load-balancing grpc traefik


    【解决方案1】:

    据官方issue和这个doc.

    首先我们需要把后端协议从http改成h2c,也就是http2不带s。

    其次,在v1.7 之前,traefik 将不支持h2c 后端,因此当前版本将无法运行。正如官方repo所说,他们每隔一个月发布一次,当前版本是v1.6.4,所以我们下个月可以有这个功能。

    但是,如果您现在想拥有它(像我一样),我们可以从源代码构建 traefik 的开发版本。看到这个doc,基本上只是克隆 repo 并构建。

    【讨论】:

      猜你喜欢
      • 2015-02-11
      • 2023-03-14
      • 2015-08-07
      • 2012-12-19
      • 2019-10-20
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多