可靠性
云主机高可用
云主机高可用指平台检测到云主机故障后,自动在健康的物理机重新启动该云主机的机制。该机制可降低云主机宕机时间,保障业务连续性,且整个过程不依赖专有硬件。
- HostFailure:当云主机所在物理机发生故障时,执行高可用。该模式默认开启,主要用于处理物理机断电等底层故障。
- NeverStop:保证云主机永不停机(不包含手动关机场景),主要用于处理上层可见的云主机故障。该模式支持用户自定义配置。
前提条件
- 存储:云主机使用共享存储。如使用本地存储,物理机发生故障时,云主机无法高可用迁移到其他物理机。
- 计算资源:确保计算资源充足,云主机可找到健康的物理机启动。
- 策略设置:启用全局云主机高可用策略,并将云主机高可用模式设置为NeverStop。
实现原理
- 管理节点:负责处理云主机故障信息,并调度故障检测、恢复任务。管理节点定期获取云主机状态,当云主机处于停止状态时,将尝试启动该云主机。
- 物理机agent:负责汇报云主机故障信息,执行故障检测和Fencer机制,定期检查云主机网络及存储状态,检测到故障时,物理机agent将强制终止当前云主机进程,并由管理节点在健康物理机上重新启动。
关于故障检测
- 网络检测:
- 检查管理网络:通过管理网连接状态,判断物理机是否故障:
- 检查管理节点和当前物理机间的管理网络心跳,快速发现物理机管理网络连接异常。
- 管理节点通过其他健康的物理机检查疑似异常的物理机,判断该物理机是否彻底从管理网络断开。
- 检查物理机与共享存储的网络连接状态。
- 检查物理机业务网口状态。
- 检查管理网络:通过管理网连接状态,判断物理机是否故障:
- I/O心跳检测:通过存储层面的心跳记录检查物理机磁盘I/O是否正常。如I/O心跳检测与(管理)网络检测结果冲突,以I/O心跳检测结果为准:
- SAN存储:检测sanlock心跳记录是否按时更新。
- Ceph存储:检测自定义host心跳记录和云盘对应的RBD Watcher。
- 多存储场景(即云主机根云盘、数据盘使用不同主存储):以根云盘所在主存储记录为准。
关于防脑裂
为防止高可用过程中,因网络分区导致云主机脑裂(即不同物理机上同时运行同一个云主机进程),引入Fencer机制,当检测到故障时,将强制终止相关的云主机进程。
关于故障恢复与调度
故障恢复由Checker负责,云主机进程强制终止后,Checker将在健康的物理机重新启动该云主机,与Fencer形成闭环,确保云主机只在一台物理机上运行。

存储高可用
网络高可用
网络高可用是保障业务连续性的重要一环,ZStack Cloud通过多种技术手段,构建了从物理基础设施到网络服务的全方位网络高可用方案。
物理机网络高可用
ZStack Cloud通过交换机堆叠/M-LAG和网卡Bonding紧密配合,实现从物理机端到交换机端的高可用网络架构。
交换机端高可用:堆叠/M-LAG
- 交换机高可用:任一交换机故障时,流量可自动切换至其他交换机。
- 链路无环路:基于LACP协议,确保多交换机的链路聚合无环路且稳定。
- 带宽提升:聚合多条物理链路,提高网络总带宽。
物理机端高可用:网卡Bonding
- 模式1(Active-Backup):每张网卡分别连接到不同的交换机(堆叠或M-LAG的成员交换机)。同一时刻只有一张网卡处于活跃状态,其他网卡处于备用状态。该模式实现以下目标:
- 链路冗余:结合交换机堆叠/M-LAG技术,当主交换机或主网卡故障时,流量可快速切换到备用链路。
- 模式4(802.3ad):多张网卡通过LACP协议连接到不同的交换机,形成逻辑链路组(LAG)。该模式实现以下目标:
- 链路冗余:任一物理链路或交换机故障时,流量可快速切换。
- 带宽聚合:交换机与物理机Bonding协同实现流量负载均衡和高带宽。

网络服务高可用
网络服务包括基本网络服务(如DHCP)和由VPC路由器/负载均衡实例提供的其他网络服务(如负载均衡、端口转发等)。
基本网络服务(DHCP)
- 每台物理机均运行dnsmasq进程,为其上云主机提供DHCP服务。
- 云主机启动后,管理节点将其IP/MAC/DNS等信息下发到物理机agent。
- 物理机agent将信息写入本地DHCP服务端配置文件。
- 云主机发送DHCP广播请求,本地DHCP服务端接收并处理请求。
在该模式下,DHCP服务不依赖中心节点,管理节点故障不影响已有云主机正常获取IP地址。
其他网络服务
其他网络服务主要由VPC路由器或负载均衡实例提供,ZStack Cloud通过VPC路由器/负载均衡实例高可用保障网络服务高可用。
VPC路由器高可用
VPC路由器支持双机主备模式,即部署一对互为主备的VPC路由器,形成高可用组。配置变化实时同步主备路由器,确保主备路由器配置一致。当主路由器状态异常时,将自动切换至备路由器,保证业务持续运行。主备路由器建议分别部署在不同的物理机,进一步避免单点故障。
- 状态监控:
- 心跳检测:主路由器定期通过VRRP通告发送心跳给备路由器。
- ZVR监控:监控ZVR(ZStack VPC Router)进程状态。
- 故障检测:当出现以下任一情况时,认定主路由器故障:
- 备路由器在指定时间内未收到心跳。
- 主路由器ZVR进程异常。
- 主路由器监控IP不可达。
- 自动切换:当主路由器故障,且备路由器监控IP可达时,备路由器将接管VIP,升级为新的主路由器,提供网络服务。

负载均衡实例高可用
负载均衡实例高可用和VPC路由器高可用机制基本相同:部署一对互为主备的负载均衡实例,形成高可用组,并通过Keepalived监控主备实例状态,当主实例故障时,将自动切换至备实例,保障业务持续运行。
- 配置同步:配置变化在高可用组层面触发,先同步至主实例,再异步同步至备实例,确保主备实例配置一致。
- 一致性检查:定期检查主备实例是否与高可用组配置版本一致,自动补充未完成任务或全量下发配置,避免同步遗漏。
管理服务高可用
管理节点负责整个云平台的资源管控、监控、调度、分配和回收。管理节点若出现宕机,管理服务将不可用,直接影响到云平台的运维管理、监控报警、租户访问、自动化任务执行等,对平台或租户的运维工作产生较大影响。
- 安装两个管理节点,其中任何一个节点失联,将触发秒级高可用切换,保障持续提供管理服务。
- 数据库(包括MySQL和监控数据库)在掉电的节点恢复后能自动同步,无需人工参与。
- 系统能长时间在单节点情况下工作。
- 双管理节点的部署运维和单管理节点一样简单方便。
实现原理
双管理节点高可用架构采用主备模式,通常情况下由主节点提供管理服务,当主节点出现故障,将自动切换到备节点提供服务。节点间的数据库则采用主主同步模式,确保数据实时一致性,节点切换后,数据仍能保持最新状态。
- Keepalived:提供负载均衡功能,根据默认权重划分主备节点,并将VIP分配给权重较高的节点(主节点),由该节点提供管理服务。Keepalived每5秒执行一次VRRP协议检测脚本,检查以下内容:
- 检查VIP是否绑定在当前节点的网络接口。
- 检查对端节点是否可达。
- 检查本地MySQL服务是否正常运行。
- 检查VIP是否可访问,如可访问,则启动数据库同步,如不可访问,则停止数据库同步。
- 启动数据库同步时,检查备节点状态:如备节点成功启动,且数据库同步返回的数据对齐,则认为脚本检查成功;否则,认为脚本检查失败,导致节点权重变更。Note: ZStack Cloud为Keepalived设置不抢占模式,权限变更后不会自动切换主备节点,仅在网络或服务故障时自动切换。如需手动切换主备节点,可重启Keepalived服务。
- zstack-hamon:负责监控管理节点上的服务状态,包括管理节点进程、UI服务进程、MySQL数据库服务进程等。检测到任一服务异常时,将尝试启动该服务,或切换主备节点,确保管理服务高可用。zstack-hamon负责以下任务:
- 检测网络连通性和网关状态。
- 检测管理节点磁盘容量。
- 协调VIP切换。
- 高可用启动管理节点,并检查数据库同步状态,确保启动前,主备节点数据库完全同步。
- zsha2:提供双管理节点运维功能,包括:查看节点状态、查看VIP所在节点、执行数据库同步、修改节点IP、升级高可用套件、版本控制等。
系统配置备份
系统配置备份对于云平台来说至关重要。当云平台发生异常,或相关配置丢失时,可通过系统配置的备份数据进行恢复。
云平台提供备份服务模块,支持本地灾备、异地灾备、公有云灾备多种灾备方案,详情参考:灾备服务。




