视频讲解:Envoy手把手入门视频讲解

Envoy 的 Listener 配置详解

Listener 是 envoy 最重要的配置,也是最复杂的配置,它是 envoy 的监听配置,指定了 envoy 监听地址,以及请求如何处理、转发到哪里。Listener 中可以包含多个不同 filter,有一些 filter 本身又是比较复杂的,可以继续包含 filter,譬如 HTTP Connection Manager

Listener 配置格式

Listener 的配置格式如下,可以在 api 文档 中找到:

{
  "name": "...",
  "address": "{...}",
  "filter_chains": [],
  "use_original_dst": "{...}",
  "per_connection_buffer_limit_bytes": "{...}",
  "metadata": "{...}",
  "drain_type": "...",
  "listener_filters": [],
  "listener_filters_timeout": "{...}",
  "transparent": "{...}",
  "freebind": "{...}",
  "socket_options": [],
  "tcp_fast_open_queue_length": "{...}",
  "traffic_direction": "..."
}

其中 address 是监听地址,filter_chainslistener_filters 是 listener 中最重要也最复杂的配置,剩余的都是一些细节配置,相对简单一些。

注意事项:

  • listener 的监听地址是互斥的,两个 listener 不能监听同一个 socket 地址
  • listener_filters 是 listener filter
  • filter_chains 是 network filter,可以有多组

go-control-plane 中的 listener 在 envoy/api/ve/lds.pb.go 中定义,每个字段都有非常详细的注释,api文档 就是通过这些注释生成的。

参考