计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)

Rebuild 可以恢复损坏的 instance。

那如果是宿主机坏了怎么办呢? 比如硬件故障或者断电造成整台计算节点无法工作,该节点上运行的 instance 如何恢复呢?

用 Shelve 或者 Migrate 可不可以? 很不幸,这两个操作都要求 instance 所在计算节点的 nova-compute 服务正常运行。 幸运的是,还有 Evacuate 操作。

Evacuate 可在 nova-compute 无法工作的情况下将节点上的 instance 迁移到其他计算节点上。但有个前提: Instance 的镜像文件必须放在共享存储上。

下面是 Evacuate instance 的流程图

  1. 向 nova-api 发送请求
  2. nova-api 发送消息
  3. nova-scheduler 执行调度
  4. nova-scheduler 发送消息
  5. nova-compute 执行操作

下面我们详细讨论每一个步骤。

向 nova-api 发送请求

我们的实验场景如下: Instance c2 运行在 devstack-compute1 上。

通过断电模拟计算节点故障,然后执行 Evacuate 操作恢复 instance c2。 目前 Evacuate 只能通过 CLI 执行。

这里需要指定 --on-shared-storage 这个参数

查看日志 /opt/stack/logs/n-api.log

nova-api 发送消息

nova-api 向 Messaging(RabbitMQ)发送了一条消息:“Evacuate 这个 Instance” 查看源代码 /opt/stack/nova/nova/compute/api.py,方法是 evacuate。

大家注意到没有,evacuate 实际上是通过 rebuild 操作实现的。 这是可以理解的,因为 evacuate 是用共享存储上 instance 的镜像文件重新创建虚机

nova-scheduler 执行调度

nova-scheduler 收到消息后,会为 instance 选择合适的计算节点。 查看日志 /opt/stack/logs/n-sch.log。

nova-scheduler 最后选择在 devstack-controller 计算节点上重建 instance。

nova-scheduler 发送消息

nova-scheduler 发送消息,通知计算节点可以创建 instance 了。 源代码在 /opt/stack/nova/nova/scheduler/filter_scheduler.py 第 95 行,方法为 select_destinations。

nova-compute 执行操作

计算节点上的工作是用共享存储上的镜像文件重建 instance。 日志在 devstack-controller:/opt/stack/logs/n-cpu.log。

为instance分配资源

使用共享存储上的镜像文件

启动 instance

Evacuate 操作完成后,instance 在 devstack-controller 上运行。

以上是 Evacuate 操作的详细分析。
至此,我们已经学习完 Nova 所有的操作,下一节将用一张图总结这些操作的用途和使用场景。

 

时间: 2024-10-08 04:19:27

计算节点宕机了怎么办?- 每天5分钟玩转 OpenStack(43)的相关文章

MySQL集群节点宕机,数据库脑裂!如何排障?

作者介绍 王晶,中国移动DBA,负责"移动云"业务系统的数据库集成架构设计.运维.优化等工作:擅长技术领域MySQL,获Oracle颁发的"MySQL DBA"官方认证,熟悉MySQL复制结构.MHA.cluster等多种架构及运维优化.   发现故障的时间正值大年初二,在各种铺天盖地的拜年信息和微信红包之中,我发现了手机上的这条告警通知:   PROBLEM:Disaster: Galera cluster has node down.我生产环境的Galera集群

由重启引起的Oracle RAC节点宕机分析及追根溯源

作者介绍 裴征峰,现就职于北京海天起点,二线专家成员,南京办事处负责人,OCP 10g.OCP 11g.OCM11g.超八年Oracle服务经验,擅长数据库故障诊断和性能调优.目前主要从事客户的现场维护.重大问题的解决.数据库性能分析.二线服务质量保证等工作.     1 背景说明  某省份的电信业务系统由于业务量较大,按地市划分部署在4套配置相同的RAC上,相同主机版本,相同的CRS和数据库版本.该系统已正常运行3年多,其间也有重启主机等正常维护操作.从4月24日 开始,这个系统的4套RAC的

mongodb副本集中其中一个节点宕机无法重启的问题

2-8日我还在家中的时候,被告知mongodb副本集中其中一个从节点因未知原因宕机,然后暂时负责代管的同事无论如何就是启动不起来. 当时mongodb的日志信息是这样的: 实际上这里这么长一串最重要的信息应该是在后边几行: 2017-02-08T17:10:28.754+0800 I REPL [rsBackgroundSync] replSet our last op time fetched: Feb 8 17:08:52:212 2017-02-08T17:10:28.754+0800 I

看 nova-scheduler 如何选择计算节点 - 每天5分钟玩转 OpenStack(27)

本节重点介绍 nova-scheduler 的调度机制和实现方法:即解决如何选择在哪个计算节点上启动 instance 的问题. 创建 Instance 时,用户会提出资源需求,例如 CPU.内存.磁盘各需要多少. OpenStack 将这些需求定义在 flavor 中,用户只需要指定用哪个 flavor 就可以了. 可用的 flavor 在 System->Flavors 中管理. Flavor 主要定义了 VCPU,RAM,DISK 和 Metadata 这四类. nova-schedule

远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机.其实 virt-manager 也可以管理其他宿主机上的虚机.只需要简单的将宿主机添加进来 填入宿主机的相关信息,确定即可. 接下来,我们就可以像管理本地虚机一样去管理远程宿主机上的虚机了. 这里其实有一个要配置的地方. 因为 KVM(准确说是 Libvirt)默认不接受远程管理,需要按下面的内容配置被管理宿主机中的两个文件 /etc/default/libvirt-bin start_libvirtd="yes&q

【分布式系统工程实现】如何检测一台机器是否宕机?

检测一台机器是否宕机的应用场景如下: 1, 工作机器宕机,总控节点需要能够检测到并且将原有服务迁移到集群中的其它节点. 2, 总控节点宕机,总控节点的备份节点(一般称为Slave)需要能够检测到并替换成主节点继续对外服务. 检测一台机器是否宕机必须是可靠的.在大规模集群中,机器可能出现各种异常,比如停电,磁盘故障,过于繁忙导致假死等.对于机器假死,如果总控节点认为机器宕机并将服务迁移到其它节点,假死的机器又认为自己还可以提供服务,则会出现多个节点服务同一份数据而导致数据不一致的情况. 首先必须明

《OpenStack实战指南》—— 2.1.3 计算节点的安装

2.1.3 计算节点的安装 计算节点主要负责运行虚拟机.在这个测试案例中,使用KVM作为底层的虚拟化技术,OpenStack采用libvirt库来管理KVM.网络使用Open vSwitch来和其他计算节点及网络节点通信.在计算节点上,需要安装以下几个部分: Open vSwitch neutron-plugin-openvswitch-agent nova-compute open-iscsi 1.?系统环境准备 操作系统仍旧使用Ubuntu 12.04 LTS.网络节点需要两个网口,分别连接

亚马逊网站宕机约半小时 销售额损失数百万美元

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 凤凰科技讯 北京时间8月20日消息,据VentureBeat网站报道,美国东部时间19日14:50左右,亚马逊网站Amazon.com出现宕机,包括加拿大在内的部分地区零售商的主页也无法加载.此次宕机时间约半小时,当地15:30分左右恢复正常. 各地报告的宕机时长在15.25.40.45分钟不等.据<普吉特海湾商业杂志>(Puge

宕机发生时,斯通正在出席SXSW大会

大谈Twitter的强大组织力量.BI中文站 3月12日从美国东部时间3月11日下午2时05分(北京时间3月12日凌晨2时05分)开始,Twitter出现了宕机,宕机持续了约45分钟的时间,目前已经完全恢复正常.事实上,Twitter在创建之初,经常遭遇宕机现象.不过,Twitter为此而招聘了大量的工程师,以确保网站不再出现宕机困境.当然,话又说回来,要想让Twitter永远不宕机,那也不可能,毕竟,即使是使用了最好燃油的机器,也不可能一直保持顺畅的运行状态.非常有意思的是,Twitter此次