On Thu, Sep 1, 2016 at 3:29 PM, Numan Siddique <nusid...@redhat.com> wrote:
> > > 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. > > Sorry for this comment. I see that these variables are indeed used in the demote function > >> + 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