计算节点宕机了怎么办?- 每天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-05 11:43:31

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

zookeeper模拟监控服务节点宕机

/**   * 模拟监控服务节点宕机   * 思路:   *  节点上线的时候,往/watch下创建一个节点,然后监控该节点,记录事件类型,判断节点是否宕机   * @throws Exception   */  public static void watch() throws Exception {   while(true) {    final ZooKeeper zkClient = new ZooKeeper("192.168.1.231,192.168.1.232,192.168.

redis集群节点宕机

redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的redis服务.这个备用的redis称为从节点(slave). 1.集群是如何判断是否有某个节点挂掉 首先要说的是,每一个节点都存有这个集群所有主节点以及从节点的信息.它们之间通过互相的ping-pong判断是否节点可以连接上.如果有一半以上的节点去ping一个节点的时候没有回应,集群就认为这个节点宕机了,然后去连接它的备用节点. 2.集群进入fail状态的必要条件

clickhouse高可用及节点宕机数据一致性方案

1. 集群节点及服务分配 说明: 1.1. 在每个节点上启动两个clickhouse服务(后面会详细介绍如何操作这一步),一个数据分片,一个数据备份,为了确保宕机数据一致性,数据分片和数据备份不能同一节点,比如gawh201上的shard不能备份在gawh201的replica,如果这样做,当gawh201宕机了,该节点shard的数据是找不到的. 1.2. 基于a所以shard和replica必须错开,但不是随意错开就可以了.按照上图给的规律错开(后面会详细介绍超大节点的集群的shard和re

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

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

MongoDB一次节点宕机引发的思考(源码剖析)

目录 简介 日志分析 副本集 如何实现 Failover 心跳的实现 electionTimeout 定时器 业务影响评估 参考链接 声明:本文同步发表于 MongoDB 中文社区,传送门: http://www.mongoing.com/archives/26759 简介 最近一个 MongoDB 集群环境中的某节点异常下电了,导致业务出现了中断,随即又恢复了正常. 通过ELK 告警也监测到了业务报错日志. 运维部对于节点下电的原因进行了排查,发现仅仅是资源分配上的一个失误导致. 在解决了问题

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

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

启动第一个 KVM 虚机 - 每天5分钟玩转 OpenStack(4)

本节演示如何使用 virt-manager 启动 KVM 虚机. 首先通过命令 virt-manager 启动图形界面 # virt-manager 点上面的图标创建虚机 给虚机命名为 kvm1,这里选择从哪里启动虚机.如果是安装新的 OS,可以选择第一项.如果已经有安装好的镜像文件,选最后一项(如上图) 接下来需要告诉 virt-manager 镜像的位置. 点击 “Browser” 在我的系统中存放了一个 cirros-0.3.3-x86_64-disk.img 镜像文件 .cirros 是

技术培训 | RAC 宕机罪犯案情探析之子游标

大家好,我是云和恩墨的李轶楠,不过网上的朋友更习惯叫我600,所以我也慢慢熟悉了这个称呼,其实这个称呼来自于ITPUB论坛上当时我注册的论坛ID"ORA-600",因为这个ID跟Oracle的著名错误号一样,很容易给大家留下深刻印象,所以被我借用了过来,呵呵.这些年通过论坛上认识了很多朋友,也结识了现在与我一起奋战的恩墨小伙伴们. 闲话不多说,我们来看看我们今天要分享的主题吧,这些年我们积累了大量的客户群体,也意味着我们面对着各种复杂的环境与事件,后续我会把我们小伙伴们所遭遇到的各种或

Oracle_RAC宕机和hang分析处理流程

目的:分享一下公司的db故障处理流程,主要是思想.事件描述及影响:2018年9月30日04:43点,zabbix告警odsdb2数据库疑似宕机,机房值班人员通过堡垒机无法登录数据库服务器,从其他机器也无法ssh登录该机器,同时odsdb1数据库也HANG住,通过命令无法登录数据库.根据数据库业务流程图初步分析影响的各业务.(涉及公司业务可忽略) 事件排查:4:46,机房值班人员通知DBA及亦庄值班人员分析情况4:57,按照公司流程在相关群通告故障5:23,值班人员反应数据库服务器已自动重启,但一