OpenStack在计算节点HA(High Available,高可用)上一直没有成熟且可靠的方案,碰巧项目中有遇到这种HA的功能需求,故尝试着做一个这种方案,以便能够实时保障用户的实例安全、持续可用,当节点发生故障时,影响情况对用户透明。
所以我们的方案是,及时监测计算节点的状态,当节点发生故障时将实例进行疏散,将原节点的实例转移到另外一个新节点上重新运行,保证实例的持续可用。
[方案背景]
由于我们底层数据存储用的是共享存储(Ceph),所以在实例迁移时对于数据的拷贝相对简单,相当于镜像的复制。疏散的核心函数用的是nova模块的evacuate方法,由此函数来决定选择新的节点。在实际运行环境中,存在多种网络,故需要对所有网络的正常情况来判定原节点是否有问题。
[总体架构]
计算节点HA方案主要分为两大模块:节点监测和实例疏散。其中,节点监测模块负责实时监测计算节点的状态,当发生故障时,及时获取状态信息;实例疏散模块负责在节点确定故障时,将故障节点的实例疏散到其他节点上。