Syncing Options

   The following options allow ovsdb-server to synchronize  its  databases
   with another running ovsdb-server.

          Sets up ovsdb-server to synchronize its databases with the data‐
          bases  in  server,  which must be an active connection method in
          one of the forms documented in ovsdb-client(1).  Every  transac‐
          tion  committed  by  server  will be replicated to ovsdb-server.
          This option makes ovsdb-server start as  a  backup  server;  add
          --active to make it start as an active server.

          Causes the specified tables to be excluded from replication.

          By  default, --sync-from makes ovsdb-server start up as a backup
          for server.  With --active, however, ovsdb-server starts  as  an
          active  server.  Use this option to allow the syncing options to
          be specified using command line options, yet start  the  server,
          as  the default, active server.  To switch the running server to
          backup mode, use ovs-appctl(1) to execute the  ovsdb-server/con‐
          nect-active-ovsdb-server command.


After creating a pacemaker cluster, use the following commands to create one active and multiple backup servers for OVN databases:

$ pcs resource create ovndb_servers ocf:ovn:ovndb-servers \
     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"

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 /usr/share/openvswitch/scripts/ovn-ctl.

  • master_ip is the IP address on which the active database server is expected to be listening, the slave node uses it to connect to the master node. You can add the optional parameters ‘nb_master_port’, ‘nb_master_protocol’, ‘sb_master_port’, ‘sb_master_protocol’ 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 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 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 resource with the active server, pacemaker will enable the active server to be connected with a single ip-address all the time. This is the ip-address that needs to be given as the parameter while creating the ovndb_servers resource.

Use the following command to create the IPAddr2 resource and colocate it 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 \

主从同步的实现方法可见OVSDB Replication Implementation