07.計算Nova→3.場景學習→3.Shut Off Instance

背景:html




描述 詳細
  1. 向 nova-api 發送請求控制節點
    1. 客戶(能夠是 OpenStack 最終用戶,也能夠是其餘程序)向 API(nova-api)發送請求:「幫我關閉這個 Instance」
    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 req-61557e25-a5dd-4556-9f86-d82356338c1e admin admin]
[instance: 0af39618-5d8c-4fc8-bb44-781246bff6dd] Going to try to stop instance
{{(pid=14738) force_stop /opt/stack/nova/nova/compute/api.py:2256
  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 操做不一樣。
  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 req-61557e25-a5dd-4556-9f86-d82356338c1e admin admin]
[instance: 0af39618-5d8c-4fc8-bb44-781246bff6dd] Shutting down instance from state 1
{{(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]
Instance shutdown successfully after 3 seconds.
相關文章
相關標籤/搜索