openvswitch: Use ansible_hostname for system-id

Currently openvswitch sets system-id based on inventory_hostname, but when
Ansible inventory contains ip addresses - then it will only take first ip
octet - resulting in multiple OVN chassis being named i.e. "10".
Then Neutron and OVN have problems functioning, because a chassis named "10"
will be created and deleted multiple times per second - this ends up in
ovsdb and neutron-server processes using up to 100% CPU.

Adding openvswitch role to ovn CI job triggers.

Change-Id: Id22eb3e74867230da02543abd93234a5fb12b31d
Closes-Bug: #1884734
This commit is contained in:
Michal Nasiadka 2020-06-25 10:24:22 +02:00
parent 475901d9f6
commit cecdb6a175
3 changed files with 12 additions and 2 deletions

View File

@ -75,4 +75,4 @@ openvswitch_vswitchd_extra_volumes: "{{ openvswitch_extra_volumes }}"
# OpenvSwitch
#############
openvswitch_system_id: "{{ inventory_hostname_short }}"
openvswitch_system_id: "{{ ansible_hostname }}"

View File

@ -0,0 +1,10 @@
---
fixes:
- |
Fixes an issue when using ip addresses instead of hostnames in Ansible
inventory. OpenvSwitch role sets system-id based on inventory_hostname,
which in case of ip addresses in is first ip octet.
Such a deployment would result in multiple OVN chassis with duplicate name
e.g. "10" connecting to OVN Southbound database - which spawns high numbers
of create/delete events in Encap database table - leading to near 100% CPU
usage of OVN/OVS/Neutron processes.

View File

@ -168,7 +168,7 @@
parent: kolla-ansible-base
voting: false
files:
- ^ansible/roles/(ovn|neutron)/
- ^ansible/roles/(neutron|openvswitch|ovn)/
- ^tests/test-ovn.sh
- ^tests/test-core-openstack.sh
vars: