nova evacuate
各种实现方案基本无例外要调用nova的evacuate接口。
nova evacuate和热迁移很像。都是想实例从一个节点转移到另外一个节点。区别主要是热迁移在正常状态下进行的,疏散时在异常状态下进行的。用一个形象的比如就是热迁移发生在地震前从建筑物逃生出来,疏散发生在地震发生后,从被毁的建筑物里逃生出来。
但严格说来上面的比喻还不够严谨,准确说并不是从被毁的建筑物里逃生出来,而是被复活出来。
所以nova evacuate翻译成复活要比疏散更准确。
masakari
日本电信NTT的开源项目masakari已经成为了Openstack的一个独立项目,该项目就是是专门做compute node ha的。
masakari的日文是まさかり,斧头的意思。准确说是板斧。就是周星驰电影斧头帮用的板斧。不知道,项目的发起人,几个日本人是否受此影响。
取名masakari就是发现故障位置,使用斧头帮最高绝技,一斧头精准扔过去,隔离斩断故障。
detect 3 type of vm down
- unexpected vm down (monitoring libvirt’s events)
- vm manager down (monitoring manager process)
- host down (using pacemaker)
masakari 正在努力推进的新特性
1)现在只支持疏散active, stopped, error状态的vm
以后可以加上去疏散更多状态的vm,如shelved, rescued, paused and suspended
2)现在监测到故障后的流程都是固定死的,要改变只能改变代码。
以后可以通过编写yaml文件让用户自定义流程。
compute node ha 其他用到的技术
- consul
- raft
- gossip
compute node ha其他的相关开源项目
- Openstack Congress (策略即服务)
- pacemaker-remote (host monitor方案)
- mistral-evacuate (工作流程)
附录1:Gossip协议
在所有的Consul Agent之间(包括服务器模式和普通模式)运行着Gossip协议。服务器节点和普通Agent都会加入这个Gossip集群,收发Gossip消息。每隔一段时间,每个节点都会随机选择几个节点发送Gossip消息,其他节点会再次随机选择其他几个节点接力发送消息。这样一段时间过后,整个集群都能收到这条消息。
乍看上去觉得这种发送方式的效率很低,但在数学上已有论文论证过其可行性,并且Gossip协议已经是P2P网络中比较成熟的协议了。大家可以查看 Gossip的介绍 ,里面有一个模拟器,可以告诉你消息在集群里传播需要的时间和带宽。Gossip协议的最大的好处是,即使集群节点的数量增加,每个节点的负载也不会增加很多,几乎是恒定的。这就允许Consul管理的集群规模能横向扩展到数千个节点。
附录2:路径算法
为evacuate寻求最优路径。
不仅适用于compute node HA,还可以负载优化均衡
尝试设计迁移路径算法以优化vm所在节点的性能以实现硬件投资回报最大化。
转载请注明来源,欢迎指出任何有错误或不够清晰的表达。可以邮件至 backendcloud@gmail.com