系列文章:
总目录索引:九析带你轻松完爆 istio 服务网格系列教程
目录
1 前言
2 邀约
3 上章总结
4 监听器
4.1 TCP 监听器
4.2 UDP 监听器
1 前言
如果你对博客有任何疑问,请告诉我。
2 邀约
你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:
3 上章总结
上节介绍了 Envoy 的基础配置信息,如下图所示:
上面配置信息重点介绍了两块内容,管理信息(admin 部分)和静态配置信息(static_resources 部分)。管理信息包括 Envoy 的 web 管理控制台。在用 Docker 运行时可对外开放 9901 端口(并对所有客户端可见,即 address 为 0.0.0.0)。关于如何运行 Envoy 可参考我上一篇文章,轻松完爆就是。运行后的结果如下图所示:
从上图可知,对外服务端口 9901 已经开启。打开浏览器访问,如下图所示:
静态配置信息主要包括两部分内容,分别是监听器(listener,今天介绍的主角)和集群(cluster),如下图所示:
listener 是 Envoy 对外提供的监听端口,默认 10000。客户端通过此端口可以与 Envoy 建立通讯,获取连接(connection)。此外,在监听器上还可设置过滤器链(filter_chains),链上设置多过滤器,这样的设置可保证对进入 Envoy 的网络流量(请求)进行相应的处理,比如:上图就设置了http 过滤器,即:进入 Envoy 的所有 http 网络流量,都将被路由到集群(clusters)配置中,在集群(clusters)配置了 http 网络流量最终流向端点(endpoints,即 baidu.com)。整个过程如图所示:
4 监听器
Envoy 配置在单个进程中支持任意数量的监听器(listener)。Envoy 支持 TCP 和 UDP 的监听器。
4.1 TCP 监听器
监听器上可以配置一系列的过滤器构成的链,并且根据匹配条件来选择某个链。单个过滤器链由一个或多个 L3 / L4 过滤器组成。当监听器上收到连接时,将选择匹配的过滤器链,实例化本地过滤器,并开始处理后续事件。这样通用的监听器体系架构设计使得 Envoy 可以执行绝大多数的代理任务(比如,速率限制、TLS 客户端身份认证、HTTP 连接管理、MongoDB 嗅探、原始 TCP 代理)等。
如上可知,监听器可以配置监听过滤器。这些过滤器在网络过滤器(以后会讲)之前进行处理。并且监听过滤器还可以操作连接(connection)的元数据,这通常会影响以后的过滤器(filter)、集群(cluster)如何处理该连接。
监听器也可以通过监听器发现服务(LDS)动态获取。
有关监听器的详细配置,请点击这里。
4.2 UDP 监听器
Envoy 还支持 UDP 监听器,尤其是 UDP 监听器过滤器。每个监听器过滤器都会处理工作进程在监听器端口上监听的每个 UDP 数据报。实际上,UDP 监听器配置有 SO_REUSEPORT 内核选项(该选项作用是可以将多个进程绑定在同一个端口上),这将导致内核将每个 UDP 四元组一致地散列到同一个工作程序。如果需要,这可使 UDP 监听器过滤器面向“会话”。
自此,九析带你轻松完爆 Envoy 监听器简介,有关监听器更多的内容,请查看本人接下来的文章。
来源:oschina
链接:https://my.oschina.net/u/4373561/blog/4333610