大规格实例优化-凯发k8国际娱乐官网入口
当网格内实例规模持续增大时,会引起istio控制面组件istiod和数据面组件envoy的内存飙升问题。在购买网格时,可以为网格启用mantis插件来解决此问题。
大规格实例优化特性仅在“华东-上海一”区域开放。
mantis插件介绍
mantis致力于解决由网格内实例规模增大而引起的istio控制面组件istiod和数据面组件envoy的内存飙升问题。同时,从多个维度输出了istio相关性能模型,填补了istio在大规模实例场景下的性能模型空白,为istio性能提升提供了有力支撑。
- 提高控制面istiod稳定性
istio采用的是全局更新配置信息策略,如下图所示,当服务b的相关信息发生变化时,istiod会生成全量xds并推送给网格内所有proxy,这会导致istiod的瞬时cpu、内存占用过高,可能导致istiod重启。
mantis根据服务依赖关系按需更新配置,当服务b的相关信息发生变化时,istiod会将服务b相关的更新推送给调用服务b的相关服务(服务a和服务d)的所有endpoint中,包括生成配置和下发配置,可极大缓解istiod cpu、内存占用过高的问题,提高控制面的稳定性。
- 减小数据面sidecar资源消耗
istio使用envoy作为网格数据面的sidecar。目前istio采用的是全局更新配置信息策略,即网格内每一个实例中的envoy都储存了网格内其他所有服务的相关信息,包括listener、route、cluster和endpoint。这在实例规模不断增大的情况下,将会发生内存爆炸,在实际生产环境中是不可接受的。
mantis根据服务依赖关系按需更新配置,即每一个实例的envoy只存储和本服务需要调用的服务的相关信息,可以将envoy的内存占用最小化。
mantis工作原理
mantis的架构和工作流程如下图所示:
网格安装mantis后,会在用户集群安装centralgateway(cgw)组件。cgw包含网格全局的服务路由信息,用于转发首包流量;网格控制面会根据服务调用关系按需更新服务路由信息。
网格安装初始化完成后,所有服务实例(pod)的envoy中只存储了cgw组件的路由信息。
- 当某个服务service a的实例(pod)第一次访问另一个服务service b时,由于service a实例的envoy中没有service b的路由信息,envoy会将请求发送到cgw上。
- cgw保存了网格全局的服务路由信息,所以cgw可以将请求转发到service b的实例。
- 同时,cgw会将service b的路由信息上报到mantis控制面。
- 然后再由mantis控制面下发给service a的所有实例。
- 在后续service a访问service b时,由于service a所有实例的envoy中已经存在service b的路由信息,请求将会被直接转发给service b的实例。
而对于service a未访问过的服务,service a所有实例的envoy中不会存储服务的路由信息,可以有效减小envoy内存消耗。
mantis使用约束
- 启用mantis插件对网格有如下限制:
企业版网格,1.8.4-r4及以上网格版本,扁平网络拓扑。
- mantis插件仅针对http协议的服务做优化。
- 安装mantis插件后,暂时不支持卸载。
- 安装mantis插件的网格升级时,会同步升级mantis插件。
- 启用mantis插件后,如有访问外部服务的需求,需要为集群所在vpc子网配置nat网关。
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨