Hi Mark, Thanks for reviewing this patch and for your feedback.
On Fri, Oct 16, 2026 at 10:01 PM Mark Michelson <[email protected]> wrote: > Hi Xavier, > > I did a bit of research, and pacemaker changed their "master/slave" > nomenclature to "promoted/unpromoted" with the release of 2.1.0 in > 2021. I think the guide would be easier to follow if we state at the > top that the configuration defined in this document works with > pacemaker 2.1.0 or later, and don't make mention of what to do on > older releases of pacemaker. That can be an exercise for anyone that > is trying to use our guide in 2026 or later but using a pacemaker > version from pre-2021. > I agree it would be more clear, as we can't keep up with documenting external tools that are over five years old. I'll send v2. > > Other than that, the patch looks good to me. > > > On Wed, Oct 14, 2026 at 10:24 AM Xavier Simonart via dev > <[email protected]> wrote: > > > > Document that OVN's native RAFT-based clustered database mode is a > > simpler alternative to the Pacemaker-based active-backup setup for new > > deployments, and fix various grammar issues along the way. > > > > Modernize the Pacemaker/OCF guidance for the ovndb_servers OCF resource > > agent: refresh stale clusterlabs.org links, and update the pcs command > > examples from the deprecated Master/Slave resource terminology to the > > current Promoted/Unpromoted roles and "promotable" clone syntax used by > > Pacemaker 2.0+, while keeping a note for sites still running older > > Pacemaker/pcs releases. > > > > Assisted-by: Claude Sonnet 5, Claude Code > > Signed-off-by: Xavier Simonart <[email protected]> > > --- > > Documentation/topics/integration.rst | 71 +++++++++++++++++++--------- > > 1 file changed, 49 insertions(+), 22 deletions(-) > > > > diff --git a/Documentation/topics/integration.rst > b/Documentation/topics/integration.rst > > index cb3c6d937..16923cd0a 100644 > > --- a/Documentation/topics/integration.rst > > +++ b/Documentation/topics/integration.rst > > @@ -28,23 +28,35 @@ Integration Guide for Centralized Control > > HA for OVN DB servers using pacemaker > > ------------------------------------- > > > > +.. note:: > > + OVN's northbound and southbound databases also support a native, > RAFT > > + based clustered database mode (three or five ovsdb-server instances > > + forming a cluster with no external dependency such as Pacemaker). > For > > + most new deployments this is simpler to operate than the > active-backup > > + plus Pacemaker setup described below, has built-in quorum-based > > + protection against split-brain (see the "Service Models" section of > > + :manpage:`ovsdb(7)` for a comparison of the two). See the > "Clustering > > + options" and "Creating a clustered db" sections of > :manpage:`ovn-ctl(8)` > > + for details. The approach described in this section is mainly of > > + interest to sites that already operate this active-backup setup. > > + > > The ovsdb servers can work in either active or backup mode. In backup > mode, db > > -server will be connected to an active server and replicate the active > servers > > +server will be connected to an active server and replicate the active > server's > > contents. At all times, the data can be transacted only from the active > server. > > When the active server dies for some reason, entire OVN operations will > be > > stalled. > > > > -`Pacemaker <http://clusterlabs.org/pacemaker.html>`__ is a cluster > resource > > -manager which can manage a defined set of resource across a set of > clustered > > -nodes. Pacemaker manages the resource with the help of the resource > agents. > > -One among the resource agent is `OCF > > -<http://www.linux-ha.org/wiki/OCF_Resource_Agents>`__ > > +`Pacemaker <https://clusterlabs.org/projects/pacemaker/>`__ is a > cluster > > +resource manager which can manage a defined set of resources across a > set of > > +clustered nodes. Pacemaker manages the resource with the help of the > resource > > +agents. One among the resource agent is `OCF > > +< > https://clusterlabs.org/projects/pacemaker/doc/2.1/Pacemaker_Administration/html/agents.html > >`__ > > > > OCF is nothing but a shell script which accepts a set of actions and > returns an > > appropriate status code. > > > > With the help of the OCF resource agent > ovn/utilities/ovndb-servers.ocf, one > > -can defined a resource for the pacemaker such that pacemaker will always > > +can define a resource for the pacemaker such that pacemaker will always > > maintain one running active server at any time. > > > > After creating a pacemaker cluster, use the following commands to > create one > > @@ -54,9 +66,17 @@ active and multiple backup servers for OVN databases:: > > master_ip=x.x.x.x \ > > ovn_ctl=<path of the ovn-ctl script> \ > > op monitor interval="10s" \ > > - op monitor role=Master interval="15s" > > - $ pcs resource master ovndb_servers-master ovndb_servers \ > > - meta notify="true" > > + op monitor role=Promoted interval="15s" \ > > + promotable meta notify="true" > > + > > +.. note:: > > + The command above uses the ``pcs`` syntax for current Pacemaker > releases > > + (2.0+), which renamed the "Master/Slave" resource roles to > > + "Promoted/Unpromoted" and replaced the ``pcs resource master`` > command > > + with the ``promotable`` clone option. On older Pacemaker/pcs > releases, > > + use ``role=Master`` and create the promotable clone with a separate > > + ``pcs resource master ovndb_servers-master ovndb_servers meta > > + notify="true"`` command instead. > > > > The `master_ip` and `ovn_ctl` are the parameters that will be used by > the OCF > > script. `ovn_ctl` is optional, if not given, it assumes a default value > of > > @@ -67,13 +87,13 @@ to connect to the master node. You can add the > optional parameters > > to set the protocol and port. > > > > Whenever the active server dies, pacemaker is responsible to promote > one of the > > -backup servers to be active. Both ovn-controller and ovn-northd needs > the > > +backup servers to be active. Both ovn-controller and ovn-northd need the > > ip-address at which the active server is listening. With pacemaker > changing the > > node at which the active server is run, it is not efficient to instruct > all the > > ovn-controllers and the ovn-northd to listen to the latest active > server's > > ip-address. > > > > -This problem can be solved by two ways: > > +This problem can be solved in two ways: > > > > 1. By using a native ocf resource agent ``ocf:heartbeat:IPaddr2``. The > IPAddr2 > > resource agent is just a resource with an ip-address. When we colocate > this > > @@ -86,25 +106,32 @@ with the active server:: > > > > $ pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=x.x.x.x \ > > op monitor interval=30s > > - $ pcs constraint order promote ovndb_servers-master then VirtualIP > > - $ pcs constraint colocation add VirtualIP with master > ovndb_servers-master \ > > - score=INFINITY > > + $ pcs constraint order promote ovndb_servers-clone then VirtualIP > > + $ pcs constraint colocation add VirtualIP \ > > + with Promoted ovndb_servers-clone score=INFINITY > > + > > +On older Pacemaker/pcs releases, where the promotable clone was created > with > > +a separate ``pcs resource master ovndb_servers-master ovndb_servers`` > command, > > +use the resulting ``ovndb_servers-master`` resource id and the > ``master`` role > > +instead of ``ovndb_servers-clone``/``Promoted``. > > > > 2. Using load balancer vip ip as a master_ip. In order to use this > feature, > > -one needs to use listen_on_master_ip_only to no. Current code for load > > -balancer have been tested to work with tcp protocol and needs to be > > -tested/enchanced for ssl/tls. Using load balancer, standby nodes will > not > > +one needs to set listen_on_master_ip_only to no. Current code for load > > +balancer has been tested to work with tcp protocol and needs to be > > +tested/enhanced for ssl/tls. Using load balancer, standby nodes will not > > listen on nb and sb db ports so that load balancer will always > communicate to > > the active node and all the traffic will be sent to active node only. > Standby > > will continue to sync using LB VIP IP in this case. > > > > -Use the following command to create pcs resource using LB VIP IP:: > > +Use the following command to create a pcs resource using LB VIP IP:: > > > > $ pcs resource create ovndb_servers ocf:ovn:ovndb-servers \ > > master_ip="<load_balance_vip_ip>" \ > > listen_on_master_ip_only="no" \ > > ovn_ctl=<path of the ovn-ctl script> \ > > op monitor interval="10s" \ > > - op monitor role=Master interval="15s" > > - $ pcs resource master ovndb_servers-master ovndb_servers \ > > - meta notify="true" > > + op monitor role=Promoted interval="15s" \ > > + promotable meta notify="true" > > + > > +See the note above regarding ``role=Master`` and ``pcs resource > master`` on > > +older Pacemaker/pcs releases. > > -- > > 2.55.0 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > > Thanks Xavier _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
