如何在 Envoy 中禁用路由超时?

Posted

技术标签:

【中文标题】如何在 Envoy 中禁用路由超时?【英文标题】:How to disable route timeout in Envoy? 【发布时间】:2021-04-30 00:36:24 【问题描述】:

我正在尝试使用 http2/grpc 流,但我的连接在 15 秒后断开。 documentation timeout 设置上的 documentation 表示将超时设置为 0。但是,当我这样做时,Envoy 会在启动时引发错误,抱怨 0 不是 Duration 类型的有效值。

如何禁用路由超时?

这是我的 Envoy 配置 .yml

    admin:
      access_log_path: "/dev/null"
      address:
        socket_address:
          address: 0.0.0.0
          port_value: 8801
    
    static_resources:
      listeners:
      - address:
          socket_address:
            address: 0.0.0.0
            port_value: 11001
        filter_chains:
        - filters:
          - name: envoy.filters.network.http_connection_manager
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
              stat_prefix: ingress_http
              http_filters:
              - name: envoy.filters.http.router
              route_config:
                name: grpc_route
                virtual_hosts:
                - name: grpc_service
                  domains: ["*"]
                  routes:
                  - name: grpc_proxy
                    match:
                      prefix: "/"
                    route:
                      timeout: 0 # How do I disable the timeout?
                      auto_host_rewrite: true
                      prefix_rewrite: "/"
                      cluster: grpc

      clusters:
      - name: grpc
        connect_timeout: 0.25s
        type: STRICT_DNS
        lb_policy: round_robin
        http2_protocol_options: 
        dns_lookup_family: V4_ONLY
        load_assignment:
          cluster_name: grpc
          endpoints:
          - lb_endpoints:
            - endpoint:
                address: 
                  socket_address: 
                    address: mygrpcservice
                    port_value: 50061 

【问题讨论】:

【参考方案1】:

你几乎明白了。您需要做的唯一更改是从整数变为持续时间。因此,您需要为零秒指定“0s”,而不是“0”。

我通过在您的 config.yaml 中设置 timeout: 0s 验证了这一点,一切都启动了。

【讨论】:

以上是关于如何在 Envoy 中禁用路由超时?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 symfony2 中禁用某些路由的监听器?

idou老师教你学Istio05: 如何用Isito实现智能路由配置

idou老师教你学Istio05: 如何用Isito实现智能路由配置

如何禁用 vuejs 路由器链接?

在 Laravel 5 中,如何禁用特定路由的 VerifycsrfToken 中间件?

微服务之服务治理:Envoy 全局 gRPC 限速服务 lyft/ratelimit 详解