记录一下istio服务网格的问题
前言
如果启用了istio 服务网格,那么会自动的注入 istio-proxy
sidecar
这里的proxy
容器与我们的业务容器启动顺序是不确定的,如果在istio-proxy
未正确启动之前,在业务容器中就尝试对外进行网络通信,这个时候就会出现问题。 例如:数据库连接 redis连接初始化问题
所以需要注意在业务代码中做好重试,当然现在大多数框架都自带重连机制。
但在实际业务场景下,一旦开启了日志告警,每次服务重启就会导致一堆告警,会很麻烦,这个时候就还是需要控制一下istio 服务网格容器的启动。
解决方法
高版本使用istio自带配置
自Istio 1.7 版本开始,增加了holdApplicationUntilProxyStarts
配置项,解决上述问题
参考官网的changelog
低版本使用手动控制
istio-proxy
有一个健康检查的接口,我们可以通过主动探测的方式来确认istio-proxy
启动完成,最后再启动自己的服务
|
|
注意以上脚本 最后的./http 请替换成自己的业务运行脚本
如果运行参数过多,可以自行编写start.sh
启动脚本,或者使用supervision