第 5 章 Nova - 030 - Launch和Shut Off操作详解

Launch

Launch instance 应该算 Nova 最重要的操作。

 

1、客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我创建一个 Instance”

2、API对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个 Instance”

3、Scheduler(nova-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计算节点中选出节点 A。

4、Scheduler 向 Messaging 发送了一条消息:“在计算节点 A 上创建这个 Instance”

5、计算节点 A 的 Compute(nova-compute)从 Messaging 中获取到 Scheduler 发给它的消息,然后通过本节点的 Hypervisor Driver 创建 Instance。

6、在 Instance 创建的过程中,Compute 如果需要查询或更新数据库信息,会通过 Messaging 向 Conductor(nova-conductor)发送消息,Conductor 负责数据库访问。

 

 

Shut Off

下面是 shut off instance 的流程图

 

1、向 nova-api 发送请求

2、nova-api 发送消息

3、nova-compute 执行操作

 

详细介绍:

1、向 nova-api 发送请求

客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我关闭这个 Instance”

 

在页面上查看,找到 Shut Off Instance 动作的 Request ID

 

使用 Request ID req-48e923a7-37ae-45cb-8622-47a7cddadf27 在 /var/log/messages 文件中找详细操作过程

 

查找日志的小窍门:

1、先确定大的范围,比如在操作之前用 tail -f 打印日志文件,这样需要查看的日志肯定在操作之后的打印输出的这些内容里。 另外也可以通过时间戳来确定需要的日志范围。

2、利用 “代码模块” 快速定位有用的信息。

nova-* 子服务都有自己特定的代码模块:

nova-api

nova.api.openstack.compute.servers

nova.compute.api

nova.api.openstack.wsgi

nova-compute

nova.compute.manager

nova.virt.libvirt.*

nova-scheduler

nova.scheduler.*

3. 利用 Request ID 查找相关的日志信息。 在上面的日志中个,我们可以利用 “req-48e923a7-37ae-45cb-8622-47a7cddadf27” 这个 Request ID 快速定位 log 中相与 shut off 操作的其他日志条目。

补充说明的是,Request ID 是跨日志文件的,可以在其他子服务的日志文件中找到相关信息。

 

 

2、nova-api 发送消息

nova-api 向 Messaging(RabbitMQ)发送了一条消息:“关闭这个 Instance”。

nova-api 没有将发送消息的操作记录到日志中,不过我们可以通过查看源代码来验证。上面日志已经清楚地标明源代码在 /opt/stack/nova/nova/compute/api.py 的 1977 行,方法是 force_stop。

 

force_stop 方法最后调用的是对象 self.compute_rpcapi 的 stop_instance 方法。

在 OpenStack 源码中,以 xxx_rpcapi 命名的对象,表示的就是 xxx 的消息队列。 xxx_rpcapi.yyy() 方法则表示向 xxx 的消息队列发送 yyy 操作的消息。

所以 self.compute_rpcapi.stop_instance() 的作用就是向 RabbitMQ 上 nova-compute 的消息队列里发送一条 stop instance 的消息。

 

补充说明一下: 关闭 instance 的前提是 instance 当前已经在某个计算节点上运行,所以这里不需要 nova-scheduler 再帮我们挑选合适的节点,这个跟 launch 操作不同。

 

 

3、nova-compute 执行操作

查看计算节点上的日志 /var/log/messages

 

这里我们利用了 Request ID “req-48e923a7-37ae-45cb-8622-47a7cddadf27” 在 log 中快速定位到 nova-compute 关闭 instance 的日志条目。

 

小结:

分析某个操作时,首先要理清该操作的内部流程,然后再到相应的节点上去查看日志。

例如shut off 的流程为:

1、向 nova-api 发送请求

2、nova-api 发送消息

3、nova-compute 执行操作

1,2 两个步骤是在控制节点上执行的,查看 nova-api 的日志。 第 3 步是在计算节点上执行的,查看 nova-compute 的日志。

 

----------------------------------------------------引用来自------------------------------------------------------

https://www.cnblogs.com/CloudMan6/p/5460464.html

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587828&idx=1&sn=c88414eb558550f9744604bad7577b0b&chksm=8d30816dba47087b1403b5efc346f283686b716761b9553acc78ed2856daf611a027ca9bbc15&scene=21#wechat_redirect

转载于:https://www.cnblogs.com/gsophy/p/11009129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值