3.3.2 Envoy的启动配置

Envoy目前提供了两个版本的API,即v1和v2,从Envoy 1.5.0起就有v2 API了,为了能够让用户顺利地向v2版本API迁移,Envoy启动的时候设置了一个参数--v2-conf ig-only。通过这个参数,可以明确指定Envoy使用v2 API的协议。幸运的是,v2 API是v1的一个超集,兼容v1的API。在当前的Istio 1.0之后的版本中,明确指定了其支持v2的API。通过查看使用Envoy作为Sidecar代理的容器启动命令,可以看到如下类似的启动参数,其中指定了参数--v2-conf ig-only:


$ /usr/local/bin/envoy -c /etc/istio/proxy/envoy-rev0.json --restart-epoch 0 --drain-time-s 45 --parent-shutdown-time-s 60 --service-cluster ratings --service-node sidecar~172.33.14.2~ratings-v1-8558d4458d-ld8x9.default~default.svc.cluster.local --max-obj-name-len 189 --allow-unknown-fields -l warn --v2-config-only

其中,参数-c表示的是基于版本v2的引导配置文件的路径,格式为JSON,也支持其他格式,如YAML、Proto3等。它会首先作为版本v2的引导配置文件进行解析,若解析失败,会根据[--v2-conf ig-only]选项决定是否作为版本v1的JSON配置文件进行解析。其他参数解释如下,以便读者及时理解Envoy代理启动时的配置信息:

·--restart-epoch表示热重启周期,对于第一次启动默认为0,每次热重启后都应该增加它。

·--service-cluster定义Envoy运行的本地服务集群名称。

·--service-node定义Envoy运行的本地服务节点名称。

·--drain-time-s表示热重启期间Envoy将耗尽连接的时间(秒),默认为600秒(10分钟)。通常耗尽时间应小于通过--parent-shutdown-time-s选项设置的父进程关闭时间。

·--parent-shutdown-time-s表示Envoy在热重启时关闭父进程之前等待的时间(秒)。

·--max-obj-name-len描述的是集群cluster、路由配置route_conf ig以及监听器listener中名称字段的最大长度,以字节为单位。此选项通常用于自动生成集群名称的场景,通常会超过60个字符的内部限制。默认为60。

Envoy的启动配置文件分为两种方式:静态配置和动态配置。具体表现为:

·静态配置是将所有信息都放在配置文件中,启动的时候直接加载。

·动态配置需要提供一个Envoy的服务端,用于动态生成Envoy需要的服务发现接口,也就是通常说的xDS,通过发现服务来动态调整配置信息,Istio实现了v2的xDS API。