高可用
高可用 (High Availability, HA) 用于降低基础设施故障造成的业务中断。SelectDB Cloud 将持久化数据与计算资源分离,并支持在具备条件的仓库中,将计算集群部署到不同可用区。集群拓扑和应用连接方式决定了计算故障后采用人工恢复还是自动故障转移。
多可用区高可用面向同一地域内的故障,不处理误删、错误写入或整个地域不可用。数据恢复点参见备份与恢复,跨地域保护参见灾难恢复。
多可用区高可用的工作方式
仓库的可靠性涉及三个层面:
| 层面 | 工作方式 | 你需要配置的内容 |
|---|---|---|
| 托管服务与元数据 | 在支持多可用区的部署中,平台管理跨可用区的服务与元数据冗余。 | 确认所选地域、部署方式和仓库支持多可用区。 |
| 计算资源 | 每个物理集群位于一个可用区,访问仓库的共享数据。其他可用区的集群可提供替代计算资源。 | 选择人工恢复、应用切换到其他集群,或使用主备虚拟集群自动故障转移。 |
| 共享存储 | 持久化数据保存在对象存储中,其可用性取决于所选云基础设施的存储配置。 | BYOC 部署时确认存储与基础设施满足跨可用区保护需求。 |
计算与存储分离使替代集群无需复制仓库的全量持久化数据,但集群启动及本地缓存预热仍需要时间。多可用区计算资源不能弥补底层网络或存储的单点。
选择集群配置
根据业务 RTO、对失败请求的容忍度和成本约束选择配置。
| 配置 | 故障响应 | 适用情况与取舍 |
|---|---|---|
| 单个集群 | 故障后,在可用的可用区创建替代集群并切换业务。 | 计算成本较低,但恢复依赖人工响应、集群启动和缓存预热。 |
| 多个独立集群 | 由应用或路由层将负载切换到另一可用区的运行中集群。 | 具备备用计算容量,但应用负责健康检查、集群选择和故障切换。 |
| 主备虚拟集群 | 检测到主集群故障后,平台自动切换到备集群。 | 通过逻辑集群名称使用主备关系,需要两个符合条件的物理集群;检测和切换并非瞬时完成。 |
主备物理集群应位于不同可用区,并使用一致的 CPU 架构、计算资源和缓存空间。平台将主集群的缓存同步到备集群预热,以减少切换后的性能下降。
准备仓库与集群
创建专有仓库(SaaS)或私有仓库(BYOC)时,确认目标地域和部署环境的多可用区支持情况。不要假定所有地域、仓库或试用资源均支持相同拓扑。
创建物理集群时,从仓库支持的可用区中选择位置。为冗余计算资源选择不同可用区,并确保备用容量足以承接关键负载。创建和资源配置参见创建集群。
需要自动故障转移时,继续创建和管理主备虚拟集群。
让应用适应故障切换
- 使用控制台提供的仓库域名连接,并配置所需的虚拟集群名称;不要依赖固定物理节点地址。
- 对失败连接和可安全重复执行的请求设置有上限的退避重试。写入重试需结合幂等或去重策略,避免重复数据。
- 重连后重新建立必要的会话状态,不假定会话或未完成事务能够跨连接故障保留。
- 按故障后的负载为备用集群配置资源,避免切换后容量不足。
- 通过监控指标和告警中心观察错误、延迟、资源压力和备集群健康。
公网连接应使用控制台提供的域名与端口。私网连接还应避免依赖单个可用区的网络路径,具体拓扑按云厂商和连接方式设计。连接与网络配置参见连接方式和网络设置。
故障响应
| 故障 | 响应与操作 |
|---|---|
| 某个可用区的托管服务或存储路径异常 | 平台依赖部署中的服务与存储冗余恢复;应用监控业务并重试过渡期间的失败请求。 |
| 仓库唯一的计算集群不可用 | 准备其他可用区的集群,按需预热缓存,再切换负载。 |
| 虚拟集群的主集群不可用 | 等待平台检测故障并提升备集群;应用重连和重试,随后验证容量及性能。 |
| 备集群或其可用区不可用 | 主集群可继续服务,但无法依赖备集群完成切换;应恢复或更换备集群。 |
| 某条私网连接路径不可用 | 使用预先准备的健康路径,并检查应用侧网络依赖。 |
验证高可用方案
- 验证主备计算资源均能承接生产负载。
- 在维护窗口对虚拟集群执行计划内的 切换主备,确认应用通过同一虚拟集群名称重连。
- 验证查询和写入能够安全重试,会话相关操作能够恢复。
- 测量故障发现、切换、重连和缓存预热时间,并与业务 RTO 比较。
- 验证监控和故障处理流程,记录结果并更新恢复手册。
集群规格、连接拓扑、客户端重试逻辑或业务规模显著变化后,应重新演练。