Update: clean keepalived and radvd instances after pcs cluster stop
authorJiri Stransky <jistr@redhat.com>
Tue, 24 Nov 2015 12:18:44 +0000 (13:18 +0100)
committerJiri Stransky <jistr@redhat.com>
Tue, 24 Nov 2015 13:10:53 +0000 (14:10 +0100)
Older neutron versions have a bug which makes them leave keepalived and
radvd running even after all neutron services are stopped, preventing
neutron router failover from happening. Router can then get stuck on the
inactive node, like this:

[stack@instack ~]$ neutron l3-agent-list-hosting-router default_router
+--------------------------------------+------------------------------------+----------------+-------+----------+
| id                                   | host                               | admin_state_up | alive | ha_state |
+--------------------------------------+------------------------------------+----------------+-------+----------+
48ca9477-b93b-4305-9e6d-9f1c5d3388f0 | overcloud-controller-1.localdomain | True           | :-)   | standby  |
eba0575c-654f-4da6-b1cd-f7fdf1cd3726 | overcloud-controller-2.localdomain | True           | :-)   | standby  |
68815390-251f-4425-a5f8-38bdbf3bdb90 | overcloud-controller-0.localdomain | True           | xxx   | active   |
+--------------------------------------+------------------------------------+----------------+-------+----------+

We need to kill the leftover processes manually to prevent the state
described above from happening.

See https://review.gerrithub.io/#/c/248931

Change-Id: I2deaa176222983daa0c33ab52a6aa5dbe7365302

extraconfig/tasks/yum_update.sh

index 6ab2501..5c0760d 100755 (executable)
@@ -126,6 +126,13 @@ openstack-nova-scheduler"
     else
         pcs cluster stop
     fi
+
+    # clean leftover keepalived and radvd instances from neutron
+    # (can be removed when we remove neutron-netns-cleanup from cluster services)
+    # see https://review.gerrithub.io/#/c/248931/1/neutron-netns-cleanup.init
+    killall neutron-keepalived-state-change 2>/dev/null || :
+    kill $(ps ax | grep -e "keepalived.*\.pid-vrrp" | awk '{print $1}') 2>/dev/null || :
+    kill $(ps ax | grep -e "radvd.*\.pid\.radvd" | awk '{print $1}') 2>/dev/null || :
 else
     echo "Excluding upgrading packages that are handled by config management tooling"
     command_arguments="$command_arguments --skip-broken"