华为云UCS-UCS双集群可靠性提升建议:容器级容错实施建议

时间:2025-03-18 14:32:57

容器级容错实施建议

容器级容错旨在通过配置健康检查和自动重启机制,确保容器应用的高可用性和可靠性。应用部署需要遵守以下规范:

项目

描述

说明

应用无状态化

应用必须做无状态和幂等处理。

服务的无状态化是部署的多个服务模块(进程),使其完全对等。也就是部署多个Pod实例,请求到任一实例的处理结果是一样的。这些Pod实例不存储业务的上下文信息,比如session、登录、业务上下文相关的信息。只会根据每次请求携带的数据进行相应的业务处理。

幂等指的是使用相同的参数多次调用相同的API,对后端产生的影响是一致的。

应用副本数

每个应用负载实例数满足业务容量规划和可用性要求。

  • 必须:每个负载的实例数不小于2。
  • 建议:4个实例,每个集群有2个实例。

配合多集群方案,满足生产中应用高可用性要求。为集群级别和可用区(AZ)级别故障域隔离创造条件。

应用健康检查

每个应用必须配置:

  • 启动探针(Startup Probe):适用于启动时间较长的应用,可以避免在应用尚未完全启动时就进行就绪检查。
  • 存活探针(Liveness Probe):用于检测容器是否还在运行,如果失败,Kubernetes会重启容器。
  • 就绪探针(Readiness Probe):用于确定容器是否已经准备好接受流量,如果失败,该容器将不会被认为是“就绪状态”,从而不会接收到服务流量。

配置合理的检查间隔和超时:

  • 设置合理的periodSeconds(检查间隔)和timeoutSeconds(超时时间),以平衡检查频率和系统负载。
  • 对于启动探针,可以设置较长的间隔和超时,以适应应用的启动时间。

容器出现故障或无法正常工作,系统可以自动重启该容器,从而提高应用的可用性和可靠性。

弹性伸缩

业务支持自动扩缩容的能力即配置指标弹性HPA,并且要求:

  • 必须:HPA minReplicas不小于2,HPA maxReplicas大于等于minReplicas。
  • 建议:HPA minReplicas值为4。

业务按需使用资源,最大程度地减少资源浪费。在业务流量突增以及集群级故障时,应用能够自动扩容,保障业务不受损。

优雅停机

应用必须支持优雅停机。

优雅停机是在对应用进程发送停止指令之后,能保证正在执行的业务操作不受影响。应用接收到停止指令之后的步骤应该是,停止接收访问请求,等待已经接收到的请求处理完成,并能成功返回,这时才真正停止应用。

ELB健康检查

弹性负载均衡ELB流量分发正常工作的后端。

必须:应用提供健康检查接口,并在ELB上配置健康检查。

在个别实例异常、节点异常或者整个AZ、整个集群故障时,能快速地隔离故障实例,保证业务访问成功率。

容器镜像

容器镜像体积最大应不超过1G。容器镜像标签使用具体的版本号。

必须:容器镜像标签禁止使用latest。

体积小的镜像有利于分发、快速启动;镜像使用具体的版本号才能做版本控制。

资源配额

资源配额应为资源申请量的两倍数值。

预防应用升级、应用扩容场景时,因资源配额不足导致失败的情况。

support.huaweicloud.com/bestpractice-ucs/ucs_03_0022.html