高可用方案
本文介绍 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。