On Thu, Sep 1, 2016 at 10:51 AM, <bscha...@redhat.com> wrote: > From: Babu Shanmugam <bscha...@redhat.com> > > This patch adds support to start_ovsdb() function in ovn-ctl to start the > ovn db servers in backup 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 active server. > 2. Create files $etcdir/ovnnb-active.conf and $etcdir/ovnsb-active.conf > with the tcp url of the active 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 > active server. > > Additional functions to promote a backup server to active and demote > active server to backup mode are also added in this patch > > Signed-off-by: Babu Shanmugam <bscha...@redhat.com> > --- > ovn/utilities/ovn-ctl | 75 ++++++++++++++++++++++++++++++ > +++++++++++++++++++++ > 1 file changed, 75 insertions(+) > > diff --git a/ovn/utilities/ovn-ctl b/ovn/utilities/ovn-ctl > index a4a9817..54c2a72 100755 > --- a/ovn/utilities/ovn-ctl > +++ b/ovn/utilities/ovn-ctl > @@ -26,6 +26,8 @@ for dir in "$sbindir" "$bindir" /sbin /bin /usr/sbin > /usr/bin; do > done > > > +ovnnb_active_conf_file="$etcdir/ovnnb-active.conf" > +ovnsb_active_conf_file="$etcdir/ovnsb-active.conf" > ## ----- ## > ## start ## > ## ----- ## > @@ -45,6 +47,42 @@ stop_ovsdb () { > fi > } > > +promote_ovnnb() { >
I think this function is setting the ovsdb-server to backup which is not a promotion, rather its demotion. I think better name would be to use "set_active" or something similar. Calling the unixctl command " ovsdb-server/ disconnect-active-ovsdb-server " would make the ovsdb-server to active (if it was in the backup state earlier). + if test ! -z "$DB_NB_SYNC_FROM_ADDR"; then > + echo "tcp:$DB_NB_SYNC_FROM_ADDR:$DB_NB_SYNC_FROM_PORT" > > $ovnnb_active_conf_file > + fi > + > + if test -e $ovnnb_active_conf_file; then > + ovs-appctl -t $rundir/ovnnb_db.ctl > > ovsdb-server/set-active-ovsdb-server `cat $ovnnb_active_conf_file` > + else > + echo >&2 "$0: active server details not set" > + exit 1 > + fi > +} > + > +promote_ovnsb() { > + if test ! -z "$DB_SB_SYNC_FROM_ADDR"; then > + echo "tcp:$DB_SB_SYNC_FROM_ADDR:$DB_SB_SYNC_FROM_PORT" > > $ovnsb_active_conf_file > + fi > + > + if test -e $ovnsb_active_conf_file; then > + ovs-appctl -t $rundir/ovnsb_db.ctl > > ovsdb-server/set-active-ovsdb-server `cat $ovnsb_active_conf_file` > + else > + echo >&2 "$0: active server details not set" > + exit 1 > + fi > +} > + > +demote_ovnnb() { > Similar comment as above. Its better to rename this function to "set_backup" or something similar. Calling the unixctl commands " ovsdb-server/set-active-ovsdb-server " followed by " ovsdb-server/ connect-active-ovsdb-server" should make the ovsdb-server to act as a backup server. Calling only " ovsdb-server/set-active-ovsdb-server " will not connect to the active server. + rm -f $ovnnb_active_conf_file > + ovs-appctl -t $rundir/ovnnb_db.ctl ovsdb-server/ > > disconnect-active-ovsdb-server > +} > + > +demote_ovnsb() { > + rm -f $ovnsb_active_conf_file > + ovs-appctl -t $rundir/ovnsb_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 +92,14 @@ 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 > > + if test ! -z "$ > > DB_NB_SYNC_FROM_ADDR"; then > + echo "tcp:$DB_NB_SYNC_FROM_ADDR:$DB_NB_SYNC_FROM_PORT" > > $ovnnb_active_conf_file > It is also possible that we can start ovsdb-server as active and then transition to backup. So it would be better to honor the variables " DB_NB /SB _SYNC_FROM_ADDR " and " DB_NB /SB _SYNC_ FROM_PORT" in the promote and demote functions. In the case of pacemaker resources, if proper preference constraints are not set, pacemaker/or any other HA manager can choose any one node as master after starting the resources. And when a new master is chosen, the other slaves should reconnect to the new master. so the client of this script can call demote (or set_backup) function setting these variables properly. > + fi > + > + if test -e $ovnnb_active_conf_file; then > + set "$@" --sync-from=`cat $ovnnb_active_conf_file` > + fi > + > $@ $DB_NB_FILE > fi > > @@ -64,6 +110,15 @@ 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 > + > + if test ! -z "$DB_SB_SYNC_FROM_ADDR"; then > + echo "tcp:$DB_SB_SYNC_FROM_ADDR:$DB_SB_SYNC_FROM_PORT" > > $ovnsb_active_conf_file > + fi > + > + if test -e $ovnsb_active_conf_file; then > + set "$@" --sync-from=`cat $ovnsb_active_conf_file` > + fi > + > $@ $DB_SB_FILE > fi > } > @@ -176,12 +231,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 +331,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 active db tcp address > (default: $DB_NB_SYNC_FROM_ADDR) > + --db-nb-sync-from-port=PORT OVN Northdbound active db tcp port > (default: $DB_NB_SYNC_FROM_PORT) > + --db-sb-sync-from-addr=ADDR OVN Southbound active db tcp address > (default: $DB_SB_SYNC_FROM_ADDR) > + --db-sb-sync-from-port=ADDR OVN Southbound active 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 +440,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 > ;; > -- > 1.9.1 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev