【问题标题】:How istio do weight-based tcp traffic shifting?istio 如何进行基于权重的 tcp 流量转移?
【发布时间】:2020-12-31 18:41:10
【问题描述】:

offical doc 展示了基于权重的 tcp 流量路由,我很好奇 istio 是如何完成这项工作的,因为 tcp 是流数据,其中没有分隔符。 istio 不知道它会得到什么 tcp 数据。

所以我查看了 example code 发现目标 go 服务器使用 byte('\n') 作为分隔符。这是否意味着 istio tcp 流量路由(不包括不需要检查数据内容的端口转发)要求用户 tcp 数据必须使用 '\n' 作为分隔符?

【问题讨论】:

  • AFAIK 感谢特使,它正在工作。正如提到的hereA listener tells Envoy a TCP port on which it should listen, and a set of filters with which Envoy should process what it hears. A cluster tells Envoy about one or more backend hosts to which Envoy can proxy incoming requests。它不应该要求有 '\n' 作为分隔符。让我知道这是否能回答您的问题。

标签: istio


【解决方案1】:

envoy 无法路由自定义的 L4 流量。它的 L4 流量路由只用于 http,作为 http 数据格式的定义,以\n 结尾的字符串是合法的Simple-Request,这就是示例运行良好的原因。

custom defined filters 分别在Envoy::Networks::ReadFilter::onDataEnvoy::Networks::WriteFilter::onWrite 中进行编码和解码。然而,这两个函数没有向特使传递关于数据包的知识。这意味着 envoy 不能对那些自定义的 tcp 流进行流量管理,例如重定向到另一个 pod

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-28
    • 2010-09-14
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多