Envoy 监听管理

简介: 【2月更文挑战第29天】Envoy使用监听器管理网络请求,支持多个监听器处理不同类型的请求。监听器分为虚拟监听器(需绑定端口和Iptables规则)和真实监听器(处理实际流量,不需绑定端口)。

监听是处理网络请求的第一步,Envoy使用监听器来具体管理监听请求工作,可以同时支持多个监听器,每个监听器负责一类网络请求的监听行为。

1、监听器类型

为了减少对业务的影响,Istio对业务流量采取了透明拦截的方式,Iptables等将拦截后的流量转发到Envoy,因此,为了实现正确的流量路由和转发,Envoy的监听器分为两类:


1)虚拟监听器:需要绑定相应的端口号,同时配置相应的Iptables规则,将Iptables拦截的流量转发到虚拟监听器对应的端口上;


2)真实监听器:用于处理Iptables拦截前的“真实目的地址”,虚拟监听器接收到监听请求时,按照一定的匹配规则查找对应的真实监听器,将新监听请求转交给真实监听器进行处理,真实监听器由于不需要和网络进行交互,因此不需要配置和绑定具体的端口号。

2、监听器建立

LDS配置首次获取或者更新时,均需要建立新的监听器。新建监听器主要有两个工作:一个是对监听过滤插件和网络过滤插件进行初始化,供后续建立新连接时使用;还有一个是创建监听器对应的套接字。


Envoy当前支持UNIX域套接字、UDP和TCP 3种监听方式,对于需要绑定具体端口号的监听器来说,创建相应的套接字后,绑定到相应的端口。


对于热重启的场景来说,为了保证旧的Envoy进程优雅退出,新启动的Envoy进程直接使用旧进程的监听套接字,保证新旧进程之间完美衔接,从而不会带来流量的损失。

3、监听器和工作线程绑定

上面创建的监听器只是“逻辑”上的监听器,并没有和真实的网络建立起联系,因此还不能提供实际的监听工作。Envoy下各个工作线程拥有独自的事件调度器,创建“逻辑”监听器后,会遍历当前所有的工作线程,将监听器加入到每个工作线程中,各个工作线程独立建立自己网络层面的监听器。

4、监听器匹配

Envoy对通信进行接管的基础是透明拦截,拦截后请求的目的地址被统一替换为Envoy虚拟监听器地址,为了完成后续的请求流量识别和路由转发,需要能够有相应的机制还原出原来的目的地址,并根据该目的地址查找到匹配的监听器。新连接到来时会触发逻辑监听器的接收新连接逻辑onAccept函数,onAccept函数的主要逻辑是创建并执行监听过滤插件。

5、协议过滤器匹配

在Envoy中,每个监听器下会对应多个网络过滤插件,每个过滤插件对应一种网络协议类型,处理相应协议的请求解析和路由。在进行监听器配置时会配置每个过滤插件的匹配条件(通过FilterChainMatch字段表示),具体包含目的地址、目的端口号、源地址等,创建新连接时依次根据目的地址、目的端口号等进行匹配判断,查找最合适的网络过滤插件。

6、创建新连接

确定好新连接的网络过滤插件后,新连接对应的传输层也相应确定了,接下来就可以进行传输层新连接的创建流程。newConnection负责新连接的创建。首先创建传输层的连接,然后提交读写就绪事件到事件调度器,等待新数据的到来。

相关文章
|
编解码 Linux C语言
探索C++与Live555实现RTSP服务器的艺术(一)
探索C++与Live555实现RTSP服务器的艺术
1038 1
|
消息中间件 Java Kafka
docker-compose快速搭建kafka集群
docker-compose快速搭建kafka集群
docker-compose快速搭建kafka集群
|
11月前
|
存储 物联网 PyTorch
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
**Torchtune**是由PyTorch团队开发的一个专门用于LLM微调的库。它旨在简化LLM的微调流程,提供了一系列高级API和预置的最佳实践
547 59
基于PyTorch的大语言模型微调指南:Torchtune完整教程与代码示例
|
11月前
|
SQL 分布式计算 Hadoop
【赵渝强老师】Hadoop生态圈组件
本文介绍了Hadoop生态圈的主要组件及其关系,包括HDFS、HBase、MapReduce与Yarn、Hive与Pig、Sqoop与Flume、ZooKeeper和HUE。每个组件的功能和作用都进行了简要说明,帮助读者更好地理解Hadoop生态系统。文中还附有图表和视频讲解,以便更直观地展示这些组件的交互方式。
724 5
|
12月前
|
数据采集 监控 安全
厂区地图导航制作:GIS技术与路径导航算法融合
在智能化、数字化时代,GIS技术为厂区的运营管理带来了革命性变化。本文探讨了如何利用GIS技术,通过数据采集、地图绘制、路径规划、位置定位和信息查询等功能,打造高效、精准的智能厂区地图导航系统,提升企业的竞争力和管理水平。
571 0
厂区地图导航制作:GIS技术与路径导航算法融合
|
存储 安全 Linux
CTFHuB靶场命令执行题型过关总结
本篇博文是对自己学习rce漏洞后,因为没有进行实战练习,仅仅停留在概念上,因此做了一次靶场实战练习,来帮助自己熟悉rce漏洞的利用类型以及利用方法,写下这篇文章对此做个总结..其实关于这个练习已经过去了很久了,但我还是要那出来进行一次复习吧,对与命令执行相关的一些操作,对自己在漏洞挖掘方面能有更多的帮助,通过这次练习也对自己关于代码审计或是关于linux命令的常见命令的同意替换有了更多的了解.
|
SQL 存储 安全
【less-24】基于SQLI的二次注入
【less-24】基于SQLI的二次注入
|
12月前
|
关系型数据库 数据挖掘 数据库
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
258 1
|
12月前
|
存储 JSON 前端开发
JSON与现代Web开发:数据交互的最佳选择
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。它以文本格式存储数据,常用于Web应用中的数据传输,尤其是在客户端和服务器之间。
478 1
|
存储 监控 持续交付
Docker容器的优化和性能调优技巧
Docker已经成为了现代应用程序开发和部署的核心工具之一。然而,要确保Docker容器在生产环境中运行稳定、高效,需要一些优化和性能调优的技巧。本文将介绍一些关键的Docker容器优化和性能调优策略,并提供丰富的示例代码,以帮助大家充分利用Docker的潜力。