OpenStack如何实现虚拟机高可用?

OpenStack社区目前还没有标准方式实现虚拟机高可用,假设底层使用统一分布式存储系统,如Ceph,如何实现OpenStack虚拟机的高可用。显示全部

OpenStack社区目前还没有标准方式实现虚拟机高可用,假设底层使用统一分布式存储系统,如Ceph,如何实现OpenStack虚拟机的高可用。

收起
参与22

查看其它 5 个回答int32bit的回答

int32bitint32bit研发工程师民生银行

OpenStack目前没有组件可以直接拿来实现虚拟机高可用,但OpenStack目前支持虚拟机疏散迁移(evacuate),即虚拟机所在计算节点down掉并且使用共享存储情况下,把虚拟机迁移到其他正常的计算节点中重新运行,实现虚拟机故障快速恢复,结合外部的监控工具可以大致实现虚拟机的高可用。

正好这几天徐超这几天写了一篇关于OpenStack的运维架构的总结,里面涉及虚拟机高可用的实现,大家可以参考。https://mp.weixin.qq.com/s?__biz=MzU0NDEyODkzMQ==&;mid=2247487432&idx=1&sn=84ea57933867f03934a3eca5f183244d&chksm=fb01a504cc762c12b96e438cc03dafd4cd25c82592bef0f9d94b6b93ba2133469c27aa20b71b&mpshare=1&scene=1&srcid=0921U6SWclCtvLEO74VqDOSY&pass_ticket=dwA3C%2F41CXvlA3LabKxo8n6U55Xu42iKGixrwfiLBfI%3D#rd

这里我引用虚拟机高可用的部分。

注意以下内容均摘自徐超的文章:<4年!我对OpenStack运维架构的总结></4年!我对OpenStack运维架构的总结>

计算节点和虚拟机 HA

计算节点和虚拟机的HA,社区从2016年9月开始一直致力于一个虚拟机HA的统一方案,但目前仍然没有一个成熟的方案。实现计算节点和虚拟机HA,要做的事情基本有三件,即。

① 监控

监控主要做两个事情,一个是监控计算节点的硬件和软件故障。第二个是触发故障的处理事件,也就是隔离和恢复。

OpenStack 计算节点高可用,可以用pacemaker和pacemaker_remote来做。使用pacemaker_remote后,我们可以把所有的计算节点都加入到这个集群中,计算节点只需要安装pacemaker_remote即可。pacemaker集群会监控计算节点上的pacemaker_remote是否 “活着”,你可以定义什么是“活着”。比如在计算节点上监控nova-compute、neutron-ovs-agent、libvirt等进程,从而确定计算节点是否活着,亦或者租户网络和其他网络断了等。如果监控到某个pacemaker_remote有问题,可以马上触发之后的隔离和恢复事件。

② 隔离

隔离最主要的任务是将不能正常工作的计算节点从OpenStack集群环境中移除,nova-scheduler就不会在把create_instance的message发给该计算节点。

Pacemaker 已经集成了fence这个功能,因此我们可以使用fence_ipmilan来关闭计算节点。Pacemaker集群中fence_compute 会一直监控这个计算节点是否down了,因为nova只能在计算节点down了之后才可以执行host-evacuate来迁移虚拟机,期间等待的时间稍长。这里有个更好的办法,就是调用nova service-force-down 命令,直接把计算节点标记为down,方便更快的迁移虚拟机。

③ 恢复

恢复就是将状态为down的计算节点上的虚拟机迁移到其他计算节点上。Pacemaker集群会调用host-evacuate API将所有虚拟机迁移。host-evacuate最后是使用rebuild来迁移虚拟机,每个虚拟机都会通过scheduler调度在不同的计算节点上启动。

当然,还可以使用分布式健康检查服务Consul等。

虚拟机操作系统故障恢复

OpenStack 中的 libvirt/KVM 驱动已经能够很好地自动化处理这类问题。具体地,你可以在flavor的 extra_specs 或者镜像的属性中加上 hw:watchdog_action ,这样一个 watchdog 设备会配置到虚拟机上。如果 hw:watchdog_action 设置为 reset,那么虚拟机的操作系统一旦奔溃,watchdog 会将虚拟机自动重启。

银行 · 2018-09-21
浏览5534

回答者

int32bit
研发工程师民生银行
擅长领域: 云计算私有云云管平台

int32bit 最近回答过的问题

回答状态

  • 发布时间:2018-09-21
  • 关注会员:6 人
  • 回答浏览:5534
  • X社区推广