高可用方案

本文介绍 Zadig 高可用保障相关的配置和建议。

高可用保障

包括 K8s 基础设施、Zadig 系统组件和数据库的高可用。

K8s 资源高可用

基础资源的高可用,由 Kubernetes 集群的提供者(公有云/自建云)保障。

应用高可用

提供以下建议保障应用高可用:

  • 使用 K8s 原生的 deployment 部署,保证服务出现极端情况异常退出后可以被迅速拉起
  • 通过内置的 metric 接口,结合 Prometheus 以及预配置的 Grafana 面板实时展现 Zadig 组件的性能指标(CPU / Memory 利用率)
  • 根据当前环境中实际的业务规模,为各组件配置合适的资源规格。请参考 Zadig Chart 的 values.yaml 文件中 microservice.{service}.resources 配置项进行配置
  • 结合 Prometheus alertmanager 配置核心组件监控报警,报警触发后请及时检查组件的运行状态,部分核心组件的报警规则建议如下:
    • aslan,cron,hub-server 组件:当 CPU 或内存占用率达到资源配置上限的 70%,持续超过 2 分钟时触发报警
    • dind 组件:当 CPU 或内存占用率达到资源配置上限的 80%,持续超过 2 分钟时触发报警
  • 备份当前安装参数以及 Chart:
    • 通过 helm get values <Zadig Release Name> -n <Zadig Namespace> > Zadig.yaml 获取当前安装参数
    • 通过 helm pull koderover-chart/zadig --version=<version> 备份当前 Chart

提示

Zadig 中部分组件支持多副本策略,可根据组件的实时资源占用情况按需调整实际副本数。支持多副本配置的组件如下:

  • deployment/zadig-portal
  • deployment/aslan
  • deployment/user
  • deployment/gateway-proxy
  • statefulSet/dind

数据高可用

建议安装时使用高可用 MongoDB、MySQL 存储介质,并对 Zadig 系统数据定时备份。建议如下:

  • 使用高可用的数据库,以阿里云为例:
    • MySQL 建议使用 RDS MySQL 高可用版
    • MongoDB 选用独占型实例
  • 使用高可用的制品仓库:
    • 使用云厂商提供的高可用镜像仓库 / Helm 仓库
    • 若使用 K8s Helm Chart 项目,建议集成高可用的对象存储并设为默认使用,数据备份建议:一天一次
  • 定期备份数据库数据
    • 若使用公有云,需要手动设置公有云 MySQL/MongoDB 实例的自动备份策略
    • 备份策略建议:一天一次
    • MinIO 备份策略:一天一次

FAQs

参考文档:部署运维 FAQs