监听器发现服务(LDS)¶
监听器发现服务是一个可选 API,Envoy 调用它来动态获取监听器。Envoy 将协调 API 响应,并根据需要来增加、修改或者删除已知监听器。
监听器的更新规则如下:
每一个监听器都必须有一个唯一的 名字。 如果没有提供名字,Envoy 将会创建一个 UUID。能够动态更新的监听器应该有一个由管理服务器提供的唯一名字。
当新增一个监听器时,在它接受流量以前需要先“预热”。比如,如果监听器参考了 RDS 配置,在监听器变成“激活”状态以前,配置需要被获取并解析。
监听器一旦被创建,就不会发生变化。因此,当更新监听器时,会创建一个新的监听器(使用相同的监听套接字)。新 创建的监听器会经过同样的上述预热流程。
当监听器在更新或删除时,老监听器会被放置在“排空”状态,这和整个服务器在重启时被排空的场景是非常像的。 在监听器被删除且剩余连接被关闭之前,属于监听器的连接将会在特定时间段内被优雅的关闭(如果可能)。 排空时间可以通过选项
--drain-time-s
来设定。 .. note:在 Envoy 配置内静态定义的任何监听器都是不能够通过 LDS API 来进行修改或删除的。