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

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

6回答

大天使之剑大天使之剑  售前技术支持 , 杭州才云科技
半夏蒲公英gz_kevin凌度等赞同了此回答
虚拟机的高可用 虚拟机误删除 可以设置nova 软删除 虚拟机意外死亡,不可恢复的错误 使用ceph的快照特性,回滚至备份时间节点 计算节点down 使用ceph作为openstack后端,保证实例疏散的成功(注意虚拟机的cpu模式) ...显示全部
  • 虚拟机的高可用
    • 虚拟机误删除
      • 可以设置nova 软删除
    • 虚拟机意外死亡,不可恢复的错误
      • 使用ceph的快照特性,回滚至备份时间节点
    • 计算节点down
      • 使用ceph作为openstack后端,保证实例疏散的成功(注意虚拟机的cpu模式)
收起
 2018-09-19
浏览1864
aixchina 邀答
付广平付广平  研发工程师 , 民生银行
gz_kevinaixchina赞同了此回答
OpenStack目前没有组件可以直接拿来实现虚拟机高可用,但OpenStack目前支持虚拟机疏散迁移(evacuate),即虚拟机所在计算节点down掉并且使用共享存储情况下,把虚拟机迁移到其他正常的计算节点中重新运行,实现虚拟机故障快速恢复,结合外部的监控工具可以大致实现虚拟机的高可用。...显示全部

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
浏览2249
chinesezzqiangchinesezzqiang  信息技术经理 , M
TonyWang赞同了此回答
原生的方法目前没有,我们是通过应用高可用和第三方的脚本来支持实现。显示全部

原生的方法目前没有,我们是通过应用高可用和第三方的脚本来支持实现。

收起
 2018-09-20
浏览1741
aixchina 邀答
Henry2017Henry2017  研发工程师 , 金融行业
用nova evacuate做计算节点虚机的高可用,当计算节点挂掉时候,通过监控系统发出请求执行驱散,会把故障节点的虚机迁移到其他节点,前提是要有共享存储。显示全部

用nova evacuate做计算节点虚机的高可用,当计算节点挂掉时候,通过监控系统发出请求执行驱散,会把故障节点的虚机迁移到其他节点,前提是要有共享存储。

收起
 2018-09-21
浏览1678
ccz320ccz320  数据库架构师 , 自谋职业
虚拟机的高可用最终是为了解决应用的高可用,所以解决这个问题可以把着眼点放在应用层高可用上,譬如软负载、弹性扩容等方式,不一定非要在openstack层解决问题。显示全部

虚拟机的高可用最终是为了解决应用的高可用,所以解决这个问题可以把着眼点放在应用层高可用上,譬如软负载、弹性扩容等方式,不一定非要在openstack层解决问题。

收起
 2018-09-21
浏览1725
lixiang11lixiang11  系统运维工程师 , 华晟经世
目前还没有很好方法实现虚拟机的高可用显示全部

目前还没有很好方法实现虚拟机的高可用

收起
 2018-09-19
浏览1768

提问者

付广平研发工程师, 民生银行

问题状态

  • 发布时间:2018-09-19
  • 关注会员:6 人
  • 问题浏览:3574
  • 最近回答:2018-09-21
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30