9.2.3 Istio配置参数优化

通过前面章节可知,Istio的配置参数非常复杂,这些参数的设置无疑对系统的性能和稳定有极大的帮助。本节着重从几个性能相关的参数来介绍Istio的配置参数优化。

我们知道,在Istio的数据平面的每一个Sidecar代理,都需要与控制平面的Pilot进行通信。随着Istio访问量的增大,Pilot的实例也可以增多,默认的Istio设置中就启用了HPA扩容,即当Pilot CPU利用率达到80%时就会触发Pilot的实例扩容。那么问题来了,当Pilot有多个实例之后,Sidecar会在什么时候连接到新的Polit呢?

在Istio的众多配置参数中,有一个名称为keepaliveMaxServerConnectionAge的参数描述了Sidecar代理与Pilot连接的最长时间。该参数试图平衡跨Pilot实例的负载,但代价是增加系统的改动。因此,设置合理的参数值对于系统的稳定性非常重要。参数值如果设置的太小,可能会由于Sidecar与Polit的频繁重连接而造成访问流量的丢失;反之,如果设置的太大,将会造成Polit负载的不均衡。

在Istio的默认配置中该参数设置为30分钟。读者可以根据自身Istio的情况进行测试后设置合理的值。

另外一个会影响Sidecar的资源利用率和延迟的参数是concurrency。它用于设置Sidecar代理的worker线程数量,也就是说,如果为Sidecar代理分配的CPU计算能力越强,它的性能就会越好、应用延迟会越小,当然资源消耗也会越大。默认数值是2,也就是说,两个Sidecar代理的worker线程共享一个CPU core。如果将其值设置为0,那么每个Sidecar代理的worker线程就会占用一个CPU core。