[ovs-dev] [PATCH] ovn: ovn-ctl support to start ovn db servers in standby mode

bschanmu at redhat.com bschanmu at redhat.com
Thu Aug 25 13:48:03 UTC 2016


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 <bschanmu at 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




More information about the dev mailing list