【问题标题】:Envoy's Logical DNS connection managementEnvoy 的逻辑 DNS 连接管理
【发布时间】:2019-02-03 05:26:06
【问题描述】:

Envoy 在其关于逻辑 DNS 服务发现的文档 (https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/service_discovery#logical-dns) 中说:

"仅在需要新连接时使用返回的第一个 IP 地址 被启动”

envoy 如何决定何时需要启动新的上游连接?

它还说:

“连接永远不会耗尽”

如果上游主机无法访问,旧连接会怎样?健康检查是否适用于当前已建立连接的所有上游主机,或者它们是否仅监视具有当前“第一个 IP 地址”的主机?如果是后者,我是否可以假设 Envoy 只会在尝试写入并且对等 ACK 超时时删除失败的上游连接(并因此停止尝试向这些主机发送流量)?如果可以,是否可以配置超时时间?

【问题讨论】:

    标签: tcp load-balancing envoyproxy


    【解决方案1】:

    查看代码并进行一些测试后,这是我所看到的:

    envoy 如何决定何时需要建立新的上游连接 启动?

    • 对于连接建立,在 TCP 代理(我使用的过滤器)的情况下,下游和上游连接之间存在 1:1 映射,因此在建立新的下游连接时会建立新的上游连接。

    如果上游主机变为旧连接会发生什么 无法访问?

    • 这取决于连接是否正常终止(发送 TCP RST 数据包)。如果是,则连接将被破坏(连同下游连接),如果不是,则在 TCP 连接超时之前什么都不会发生(我相信由于 TCP_USER_TIMEOUTtcp_retries2 重试 - 它需要更多时间在我的本地机器上超过 15 分钟)。

    健康检查是否适用于当前拥有的所有上游主机 已建立连接,还是仅使用 当前的“第一个 IP 地址”?

    • 它们仅适用于当前的“第一个 IP 地址”。

    如果是后者,我是否可以假设 Envoy 只会删除 上游连接失败(因此停止尝试发送 到这些主机的流量)一旦它尝试写入它和对等方 ACK 超时?

    • 是的。通常,下游客户端超时将首先启动并破坏连接。

    如果可以,是否可以配置超时时间?

    • 我在 envoy 中找不到设置套接字 TCP_USER_TIMEOUT 的选项。更改操作系统tcp_retries2 可能会有所帮助,但根据文档,总时间还受 TCP 连接的平滑往返时间的影响,因此更改tcp_retries2 将无法定义绝对超时价值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-20
      • 1970-01-01
      • 2012-01-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-02
      • 2010-09-22
      • 2010-12-23
      相关资源
      最近更新 更多