07.计算Nova→3.场景学习→3.Shut Off Instance

背景:paste-139152645423107.jpg


描述详细
  1. 向 nova-api 发送请求控制节点
    1. 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我关闭这个 Instance”paste-136867722821635.jpg
    2. 查看n-api的日志。debug 选项打开之后,如何在日志文件中快速查找到有用的信息不是一件容易的事情,小窍门如下:
      1.  先确定大的范围,比如在操作之前用 journalctl -af 非devstack使用tail -f打印日志文件,这样需要查看的日志肯定在操作之后的打印输出的这些内容里。 另外也可以通过时间戳来确定需要的日志范围。
      2. 利用 “代码模块” 快速定位有用的信息。 nova-* 子服务都有自己特定的代码模块:
        1. nova-api
          1. nova.api.openstack.compute.servers
          2. nova.compute.api
          3. nova.api.openstack.wsgi
        2. nova-compute
          1. nova.compute.manager
          2. nova.virt.libvirt.
        3. nova-scheduler
          1. nova.scheduler.
      3. 利用 Request ID 查找相关的日志信息。 在日志中,可以利用 “req-61557e25-a5dd-4556-9f86-d82356338c1e” 这个 Request ID 快速定位 n-api.log 中与 shut off 操作相关的其他日志条目。 需要补充说明的是,Request ID 是跨日志文件的,这一个特性能帮助我们在其他子服务的日志文件中找到相关信息,
1
2
3
4
5
Jun 18 14:08:51 controller devstack@n-api.service[14704]: 
DEBUG nova.compute.api
[None admin admin]

{{(pid=14738)
  1. nova-api 发送消息控制节点
    1. nova-api 向 Messaging(RabbitMQ)发送了一条消息:“关闭这个 Instance”。nova-api 没有将发送消息的操作记录到日志中,不过我们可以通过查看源代码来验证。
    2. 上面日志已经清楚地告诉我们需要查看的源代码在 /opt/stack/nova/nova/compute/api.py 的 2256 行,方法是 force_stop。
    3. 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 操作不同。
paste-149366077652995.jpg
  1. nova-compute 执行操作
    1. 查看计算节点上n-cpu的日志
    2. 这里我们利用了 Request ID “req-61557e25-a5dd-4556-9f86-d82356338c1e” 在 n-cpu.log 中快速定位到 nova-compute 关闭 instance 的日志条目。
1
2
3
4
5
Jun 18 14:08:52 compute nova-compute[5685]: 
DEBUG nova.virt.libvirt.driver
[None admin admin]

{{(pid=5685) _clean_shutdown /opt/stack/nova/nova/virt/libvirt/driver.py:2887
代码注释:
 _clean_shutdown:Attempt to shutdown the instance gracefully

1
2
3
4
5
Jun 18 14:08:55 compute nova-compute[5685]: 
INFO nova.virt.libvirt.driver
[None req-61557e25-a5dd-4556-9f86-d82356338c1e admin admin]
[instance: 0af39618-5d8c-4fc8-bb44-781246bff6dd]
.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值