集群管理器

    上游集群和主机是从网络/HTTP 过滤器堆栈中抽象而来,因为上游集群和主机可用于任意数量的不同代理任务。集群管理器向过滤器堆栈暴露 API,允许过滤器获得连接到上游集群的 L3/L4 连接,或者连接到上游集群的抽象 HTTP 连接池的句柄(上游主机是否支持 HTTP/1.1 或 HTTP/2 是隐藏的)。过滤器阶段判断是否需要 L3/L4 连接或新的 HTTP 流,而集群管理器处理所有的复杂性,包括获知哪些主机可用并且健康、负载均衡、上游连接数据的线程本地存储(因为大多数 Envoy 代码以单线程编写)、上游连接类型(TCP/IP、UDS)、适用的上游协议(HTTP/1.1、HTTP/2)等。

    当集群在服务器启动或者通过 CDS 进行初始化时,它们会“热身”。这意味着集群在下列操作发生之前不可用。

    • 初始主动通过,如果配置了主动健康检查。Envoy 将发送健康检查请求到每个被发现的主机上,以此来判断它的初始健康状态。

    在讨论集群热身时,集群 “变为可用” 意味着:

    • 对于更新后的集群,旧集群将继续存在并服务流量。当新集群被加热后,它将与旧集群进行原子交换,从而不会发生流量中断。