RETIRED, Lightweight composition layer for Puppet TripleO
Go to file
Michele Baldessari a0cfe0afdd Close OVN VIP race by adding an ordering constraint
Currently there is a race with the high-availability of ovn when resetting a
controller. Namely, the VIP that OVN uses (namely the internal_api VIP
by default) only has a colocation constraint with the master role of the
ovn-dbs resource. This leaves the following race open:
1) We reboot ctrl-0 hosting the master role of ovn-dbs
2) OVN becomes master on ctrl-1 from pacemaker's POV (but the
   promotion operation running in the background is not completed)
3) OVN VIP moves to ctrl-1 even though it is still in slave mode
  (there is only a colocation constraint between vip and master role for
ovn)
4) OVN controllers on the overcloud connect to the VIP but it is in
  read-only mode because it was a slave
5) OVN controllers that connected at 4) stay in read-only forever
   until they get restarted manually.

With the addition of this constraint we force the VIP move only after
the master role has been promoted. This makes it much more unlikely
for a client to connect to the VIP and get a read-only db in the
background. With only this patch applied I did not manage to reproduce
the issue (even after 7 reboots of controllers).
Note that there is still a small race window possible because the
current OVN resource agent has a bug: it promotes a resource to master
after issuing the promotion command to the DB but without waiting for
this promotion to complete. A patch for OVN-ra will also be submitted
but from initial testing this change seems to be largely sufficient.

Also note that this change introduces a small less desirable
side-effect:
A failover of the internal VIP will now take a bit longer because it
will happen only after ovn-dbs gets promoted to master.
We plan to take care of this fully by decoupling the OVN VIP from the
internal_api one. This change addresses the immediate issue related
to ovn_controllers being stuck in read-only due to premature promotion.
(OVN upstream is discussing how to make connections to read-only VIP
trigger a reconnection eventually)

Closes-Bug: #1835830

Change-Id: I3fa07e28c4e37197890664d12a265f1673c780f2
(cherry picked from commit 5c10f33197)
(cherry picked from commit dc4bb7e7cb)
(cherry picked from commit bcea8ea1aa)
2019-08-12 10:06:20 +00:00
files neutron dhcpd: Add script for certmonger postsave_cmd 2019-02-14 11:22:35 +01:00
lib Fix interface_for_ip for newer facter versions 2019-07-08 09:32:50 -06:00
manifests Close OVN VIP race by adding an ordering constraint 2019-08-12 10:06:20 +00:00
releasenotes Merge "Add dateext and related parameters for logrotate" into stable/queens 2019-07-31 22:35:25 +00:00
spec Merge "Configure cinder's default volume type" into stable/queens 2019-07-26 19:42:09 +00:00
templates Add dateext and related parameters for logrotate 2019-07-16 00:50:02 +00:00
zuul.d Remove scenario008 jobs 2019-06-13 22:58:13 +00:00
.gitignore Update gitignore not to exclude fixture hieradata 2017-05-17 14:45:35 -06:00
.gitreview OpenDev Migration Patch 2019-04-19 19:35:29 +00:00
.sync.yml Initial msync run for all Puppet OpenStack modules 2015-08-18 14:30:54 +02:00
Gemfile Load puppet-openstack_spec_helper locally during tests 2018-02-12 10:53:40 +08:00
LICENSE Add basic structure for a Puppet module 2015-02-02 11:39:21 -05:00
Puppetfile_extras Fix ntp module version to an existing tag/branch 2019-04-09 09:28:12 +02:00
README.md Update the doc link 2017-12-16 02:49:05 +00:00
Rakefile Composable HA 2017-01-25 19:32:31 +00:00
bindep.txt Add Puppet package to bindep, for module build 2017-10-27 13:50:15 -07:00
metadata.json Release 8.5.0 (queens) 2019-06-18 10:55:50 -04:00
setup.cfg Fixes license to explicitly be Apache 2.0 2017-10-09 11:06:29 -04:00
setup.py chmod +x setup.py 2017-10-06 12:28:56 -07:00
test-requirements.txt Remove pinned versions from test-requirements.txt 2018-01-16 12:29:50 +08:00
tox.ini Update UPPER_CONSTRAINTS_FILE for stable/queens 2018-03-03 11:40:56 +00:00

README.md

Team and repository tags

Team and repository tags

puppet-tripleo

Lightweight composition layer for Puppet TripleO.

Contributing