[Openstack] Compute Node shutdown how to prevent instance suspend

Tomáš Vondra vondra at homeatcloud.cz
Thu Nov 2 09:33:32 UTC 2017


Hi!

When I need to reboot a compute node (because of some driver lock-up or such problems), I first stop nova-compute so that it does not report the shutoff state of VMs to the database and resume_guests_state_on_host_boot=true does actually start them. Then I press the power switch on the VMs using virsh shutdown, one by one, and only after that I reboot the node. This is a script I scrounged somewhere and modified so that it does not take too much time:

Tomas

 

root at cmp03:~# cat vm-shutdown

#!/bin/bash

# file: /usr/local/sbin/vm-shutdown

# Description: shutdown active virtual machines

debug=1

#fake=1

 

# Get list of active virtual machines

vmList="`virsh list | (

while read vmID vmName vmStatus

do

  if [ -n "$vmName" -a "$vmName" != "Name" -a "$vmName" != "Domain-0" ]

  then

    [ -z "$vmList" ] && vmList="$vmName" || vmList="$vmList $vmName"

  fi

done

echo $vmList )`"

 

# check there are some active VM's

if [ -n "$vmList" ]; then

  # Shutdown VM's with verification

  for vmName in $vmList

  do

    # send initial request

    [ -n "$debug" ] && echo -n "Attempting to shutdown $vmName "

    [ -z "$fake" ] && virsh shutdown $vmName

    # wait a limited time for the VM to be not running

    count=30

    while $( virsh list | grep $vmName >/dev/null ) && [ $count -gt 0 ]

    do

      sleep 1

      let count=count-1

      [ -n "$debug" ] && echo -n "."

    done

    # report current status

    ( virsh list | grep $vmName >/dev/null ) && echo " failed!" || echo "down."

    # if still running, destroy it

    if ( virsh list | grep $vmName >/dev/null )

    then

      [ -n "$debug" ] && echo -n "Attempting to destroy $vmName "

      [ -z "$fake" ] && virsh destroy $vmName

      # wait a limited time for the VM to be not running

      count=30

      while $( virsh list | grep $vmName >/dev/null ) && [ $count -gt 0 ]

      do

        sleep 1

        let count=count-1

        [ -n "$debug" ] && echo -n "."

      done

      # report current status

      ( virsh list | grep $vmName >/dev/null ) && echo " failed!" || echo "down."

    fi

  done

 

From: Tzach Shefi [mailto:tshefi at redhat.com] 
Sent: Thursday, November 02, 2017 9:55 AM
To: Chris
Cc: openstack at lists.openstack.org
Subject: Re: [Openstack] Compute Node shutdown how to prevent instance suspend

 

Hi, 

 

A better Q would be why do you shutdown a compute node to begin with?

I mean if you need you should do so in an orderly fashion basically excavate instances

or shut instances down manually, put the compute node in maintenance mode. 

On rebooting compute node remove it from maintenance mode, turn on instances or migrate them back to this compute node should you need. 

Od delete them if you wish. 

 

There is this nova option:

resume_guests_state_on_host_boot=true

 

But it doesn't delete or shutdown instances but rather turns them on automatically once compute host resumes. 

which might also work for you, probably not just mentioning it any way.  

 

I don't know of an option to stop/delete instance on compute node shutdown. 

 

Another option check maybe you could shelve suspended instance and then later delete them. 

 

Shelving stops the instance and takes a snapshot of it. Then depending on the value of the shelved_offload_time config option, the instance is deleted from the hypervisor (0), never deleted (-1), or deleted after some period of time (> 0). Note that it's just destroying the backing instance on the hypervisor, the actual instance in the nova database is not deleted. Then you can later unshelve the instance:

 

 

This might help, but do not if you mess with kvm without updating Nova you might be left haning else where :)

https://ask.fedoraproject.org/en/question/8796/make-libvirt-to-shutdown-my-guests-not-suspend/

 

 

 

 

On Thu, Nov 2, 2017 at 9:03 AM, Chris <contact at progbau.de> wrote:

Hello,

When we shut down a compute node the instances running on it get suspended. This generates some difficulties with some applications like RabbitMQ dont like to be suspended. Is there a way to change this behavior so that the running instances gets killed or shutdown instead?

Thanks in advance.

Cheers,
Chris

_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to     : openstack at lists.openstack.org
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack





 

-- 

Tzach Shefi

Senior Quality Engineer, RHCSA

 <https://www.redhat.com> Red Hat 



 <mailto:tshefi at redaht.com> tshefi at redaht.com    M:  <tel:+972-54-4701080> +972-54-4701080     IM: tshefi


 <https://red.ht/sig> Obrázek byl odebrán odesílatelem.

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20171102/668b8225/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.jpg
Type: image/jpeg
Size: 440 bytes
Desc: not available
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20171102/668b8225/attachment.jpg>


More information about the Openstack mailing list