视频讲解: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_chains 和 listener_filters 是 listener 中最重要也最复杂的配置,剩余的都是一些细节配置,相对简单一些。
注意事项:
- listener 的监听地址是互斥的,两个 listener 不能监听同一个 socket 地址
- listener_filters 是 listener filter
- filter_chains 是 network filter,可以有多组
go-control-plane 中的 listener 在 envoy/api/ve/lds.pb.go 中定义,每个字段都有非常详细的注释,api文档 就是通过这些注释生成的。