[ovs-dev] [PATCH] ovsdb-cs: Avoid unnecessary re-connections when updating remotes.

Ben Pfaff blp at ovn.org
Tue Jun 29 15:43:43 UTC 2021

On Tue, Jun 29, 2021 at 12:56:18PM +0200, Ilya Maximets wrote:
> If a new database server added to the cluster, or if one of the
> database servers changed its IP address or port, then you need to
> update the list of remotes for the client.  For example, if a new
> OVN_Southbound database server is added, you need to update the
> ovn-remote for the ovn-controller.
> However, in the current implementation, the ovsdb-cs module always
> closes the current connection and creates a new one.  This can lead
> to a storm of re-connections if all ovn-controllers will be updated
> simultaneously.  They can also start re-dowloading the database
> content, creating even more load on the database servers.
> Correct this by saving an existing connection if it is still in the
> list of remotes after the update.
> 'reconnect' module will report connection state updates, but that
> is OK since no real re-connection happened and we only updated the
> state of a new 'reconnect' instance.
> If required, re-connection can be forced after the update of remotes
> with ovsdb_cs_force_reconnect().

I think one of the goals here was to keep the load balanced as servers
are added.  Maybe that's not a big deal, or maybe it would make sense to
flip a coin for each of the new servers and switch over to it with
probability 1/n where n is the number of servers.

More information about the dev mailing list