配置高性能和高可用的ASM网关,可以保障业务的连续性,提高用户体验。本文介绍如何配置ASM网关实现业务请求的高性能和高可用。
背景信息
ASM网关是Istio的一个重要组件,主要用于管理服务的入口和出口流量。
当创建一个ASM网关时,同时会在Kubernetes集群的istio-system命名空间下创建一个对应的istio-ingressgateway Deployment ,这个Deployment会关联一个CLB,相关实例作为CLB的后端实例。
如上图所示,可以看到业务请求流量会经过的路径。从高性能、高可用角度来说,请求经过的每个路径都会影响实际请求的响应时间以及可用性。接下来将从CLB、ASM网关两个关键节点介绍如何实现业务请求的高性能和高可用。
高性能
业务多地域部署,客户端就近访问
ASM支持管理多个集群,多地域场景支持地域就近访问,以及区域感知的负载均衡。具体操作,请参见基于多集群实现跨地域容灾和流量负载均衡。
结合DNS智能解析,可以将域名解析到客户端最近的IP(也就是CLB)。
使用CLB访问ASM网关实例
创建Kubernetes集群时,如果您使用的是Terway CNI,CLB将会直接对接Gateway Pod网络。如果您使用的是Flannel CNI,则会通过Node节点的NodePort多一层网络转发。如果您想提高性能,推荐使用Terway。关于Terway和Flannel对比,请参见Terway与Flannel对比。
当网关流量较大,单个CLB无法满足性能需求时,您可以配置多个CLB关联同一个网关,从而可以使用多个CLB访问ASM网关。具体操作,请参见使用多个CLB访问ASM网关。
TLS加速
商业版的ASM网关支持基于Intel的MultiBuffer实现HTTPS请求加速,实测QPS提升80%的性能。具体操作,请参见启用Multi-Buffer实现TLS加速。
高可用
业务多地域部署,多地域多活,实现跨地域容灾
关于跨地域容灾的具体操作,请参见基于多集群实现跨地域容灾和流量负载均衡。
CLB高可用
ASM支持配置多个CLB实例关联同一网关,当其中一个CLB故障时,您可以使用另一个CLB。具体操作,请参见使用多个CLB访问ASM网关。
ASM网关节点级别的高可用
您可以将ASM网关的Pod分布到不同的Node节点或者可用区,增强网关高可用性。具体操作,请参见增强ASM网关高可用性。
业务服务部署优雅上下线
业务服务对应的Deployment可以配置PreStop脚本来实现Pod的优雅终止,避免请求失败或丢失。具体操作,请参见方案二:配置Sidecar代理生命周期。
ASM网关的优雅上下线
使用ASM网关的优雅上下线功能后,当对网关进行扩缩容时,现有连接在一定时间内仍能正常传输,流量将不会有损失。具体操作,请参见使用优雅下线功能避免流量损失。