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

简介: Rebuild 可以恢复损坏的 instance。 那如果是宿主机坏了怎么办呢? 比如硬件故障或者断电造成整台计算节点无法工作,该节点上运行的 instance 如何恢复呢? 用 Shelve 或者 Migrate 可不可以? 很不幸,这两个操作都要求 instance 所在计算节点的 nova-compute 服务正常运行。

Rebuild 可以恢复损坏的 instance。

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

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

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

下面是 Evacuate instance 的流程图

image146.png

  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。

image254.png

nova-compute 执行操作

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

为instance分配资源


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

启动 instance

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

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

 


目录
相关文章
|
存储
etcd 受损节点重新加入集群
etcd 受损节点重新加入集群
515 0
|
15天前
|
Kubernetes 应用服务中间件 nginx
使用kubeadm搭建生产环境的多master节点k8s高可用集群
使用kubeadm搭建生产环境的多master节点k8s高可用集群
57 0
|
4月前
|
Kubernetes Cloud Native 虚拟化
云原生|kubernetes|找回丢失的etcd集群节点---etcd节点重新添加,扩容和重新初始化k8s的master节点
云原生|kubernetes|找回丢失的etcd集群节点---etcd节点重新添加,扩容和重新初始化k8s的master节点
95 0
|
7月前
|
Kubernetes API 调度
在K8S集群中,如何正确选择工作节点资源大小?1
在K8S集群中,如何正确选择工作节点资源大小?
|
7月前
|
存储 Kubernetes API
在K8S集群中,如何正确选择工作节点资源大小? 2
在K8S集群中,如何正确选择工作节点资源大小?
|
Kubernetes 调度 C++
kubernetes的节点与节点池概念 vs karpenter的去节点池理念 在调度上的思考
kubernetes的节点与节点池概念 vs karpenter的去节点池理念。 k8s在给定的节点资源或集群资源上调度并运行应用,其先决条件是资源某种程度上既定(即资源总量某种程度上是一定的,虽然有弹性扩容,但资源的规格是固定的,并且一旦扩容完成后再在此资源总量上执行调度决策,这仍然可以看做是资源总量固定),然后在该资源范围上做调度决策。调度的碎片化不可避免。 karpenter的逻辑是去节点
421 0
|
Kubernetes Ubuntu 应用服务中间件
k8s学习四-部署节点加入集群
k8s学习四-部署节点加入集群
262 0
k8s学习四-部署节点加入集群
|
存储 NoSQL
Cassandra集群删除宕机节点
Cassandra集群删除宕机节点
Cassandra集群删除宕机节点
Openstack-M版(双节点)热迁移记录
Openstack-M版(双节点)热迁移记录
149 0
Openstack-M版(双节点)热迁移记录
|
存储 Kubernetes API
Kubernetes Master节点 灾备恢复操作指南
本文档简述了Kubernetes主节点灾备恢复的相关步骤,供在发生k8s master崩溃时操作。 就算是在k8s里部署了etcd群集, 主节点控制组件的高可用节点,灾备恢复也是必须要实现的操作,才能形成完备的企业级服务方案。
9412 0