This patch adds support to start_ovsdb() function in ovn-ctl to start the ovn db servers in standby mode. This can be done in the following ways 1. Use parameters --ovn-nb-sync-from-addr and --ovn-sb-sync-from-addr to set the addresses of the master server. 2. Create files $etcdir/ovnnb-master.conf and $etcdir/ovnsb-master.conf with the tcp url of the master servers.
If --ovn-nb-sync-from-addr and --ovn-sb-sync-from-addr is used, it will overwrite the contents in the $etcdir/*.conf and use that server as the master. Additional functions to promote a standby server to master and demote master server to standby mode are also added in this patch Signed-off-by: Babu Shanmugam <bscha...@redhat.com> --- ovn/utilities/ovn-ctl | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/ovn/utilities/ovn-ctl b/ovn/utilities/ovn-ctl index a4a9817..2f2538f 100755 --- a/ovn/utilities/ovn-ctl +++ b/ovn/utilities/ovn-ctl @@ -45,6 +45,22 @@ stop_ovsdb () { fi } +promote_ovnsb() { + ovs-appctl -t $rundir/ovnsb_db.ctl ovsdb-server/connect-active-ovsdb-server +} + +promote_ovnnb() { + ovs-appctl -t $rundir/ovnnb_db.ctl ovsdb-server/connect-active-ovsdb-server +} + +demote_ovnsb() { + ovs-appctl -t $rundir/ovnsb_db.ctl ovsdb-server/disconnect-active-ovsdb-server +} + +demote_ovnnb() { + ovs-appctl -t $rundir/ovnnb_db.ctl ovsdb-server/disconnect-active-ovsdb-server +} + start_ovsdb () { # Check and eventually start ovsdb-server for Northbound DB if ! pidfile_is_running $DB_NB_PID; then @@ -54,6 +70,15 @@ start_ovsdb () { set "$@" --detach $OVN_NB_LOG --log-file=$OVN_NB_LOGFILE --remote=punix:$DB_NB_SOCK --remote=ptcp:$DB_NB_PORT:$DB_NB_ADDR --pidfile=$DB_NB_PID --unixctl=ovnnb_db.ctl + ovnnb_master_conf_file="$etcdir/ovnnb-master.conf" + if test ! -z $DB_NB_SYNC_FROM_ADDR; then + echo "tcp:$DB_NB_SYNC_FROM_ADDR:$DB_NB_SYNC_FROM_PORT" > $ovnnb_master_conf_file + fi + + if test -e $ovnnb_master_conf_file; then + set "$@" --sync-from=`cat $ovnnb_master_conf_file` + fi + $@ $DB_NB_FILE fi @@ -64,6 +89,16 @@ start_ovsdb () { set ovsdb-server set "$@" --detach $OVN_SB_LOG --log-file=$OVN_SB_LOGFILE --remote=punix:$DB_SB_SOCK --remote=ptcp:$DB_SB_PORT:$DB_SB_ADDR --pidfile=$DB_SB_PID --unixctl=ovnsb_db.ctl + + ovnsb_master_conf_file="$etcdir/ovnsb-master.conf" + if test ! -z $DB_SB_SYNC_FROM_ADDR; then + echo "tcp:$DB_SB_SYNC_FROM_ADDR:$DB_SB_SYNC_FROM_PORT" > $ovnsb_master_conf_file + fi + + if test -e $ovnsb_master_conf_file; then + set "$@" --sync-from=`cat $ovnsb_master_conf_file` + fi + $@ $DB_SB_FILE fi } @@ -176,12 +211,16 @@ set_defaults () { DB_NB_FILE=$dbdir/ovnnb_db.db DB_NB_ADDR=0.0.0.0 DB_NB_PORT=6641 + DB_NB_SYNC_FROM_ADDR= + DB_NB_SYNC_FROM_PORT=6641 DB_SB_SOCK=$rundir/ovnsb_db.sock DB_SB_PID=$rundir/ovnsb_db.pid DB_SB_FILE=$dbdir/ovnsb_db.db DB_SB_ADDR=0.0.0.0 DB_SB_PORT=6642 + DB_SB_SYNC_FROM_ADDR= + DB_SB_SYNC_FROM_PORT=6642 DB_NB_SCHEMA=$datadir/ovn-nb.ovsschema DB_SB_SCHEMA=$datadir/ovn-sb.ovsschema @@ -272,6 +311,10 @@ File location options: --db-sb-port=PORT OVN Southbound db ptcp port (default: $DB_SB_PORT) --ovn-nb-logfile=FILE OVN Northbound log file (default: $OVN_NB_LOGFILE) --ovn-sb-logfile=FILE OVN Southbound log file (default: $OVN_SB_LOGFILE) + --db-nb-sync-from-addr=ADDR OVN Northbound master db tcp address (default: $DB_NB_SYNC_FROM_ADDR) + --db-nb-sync-from-port=PORT OVN Northdbound master db tcp port (default: $DB_NB_SYNC_FROM_PORT) + --db-sb-sync-from-addr=ADDR OVN Southbound master db tcp address (default: $DB_SB_SYNC_FROM_ADDR) + --db-sb-sync-from-port=ADDR OVN Southbound master db tcp port (default: $DB_SB_SYNC_FROM_PORT) Default directories with "configure" option and environment variable override: logs: /usr/local/var/log/openvswitch (--with-logdir, OVS_LOGDIR) @@ -377,6 +420,18 @@ case $command in status_controller_vtep) daemon_status ovn-controller-vtep || exit 1 ;; + promote_ovnnb) + promote_ovnnb + ;; + promote_ovnsb) + promote_ovnsb + ;; + demote_ovnnb) + demote_ovnnb + ;; + demote_ovnsb) + demote_ovnsb + ;; help) usage ;; -- 2.5.5 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev