[ovs-dev] [PATCH v1] ovn-ctl and ovndb-servers set connection table

aginwala amginwal at gmail.com
Mon Jun 4 02:50:52 UTC 2018


only for master node with remote option when using load balancer to manage
ovndb clusters via pacemaker.

This is will allow setting inactivity probe on the masters.
For pacemaker to manage ovndb resources via LB, we skipped creating connection
table and hence the inactivity probe was getting set to 5000 by default.
In order to over-ride it we need this table. However, we need to skip slaves
listening on local sb and nb connections table so that LB feature is
intact and only master is listening on 0.0.0.0

e.g --remote=db:OVN_Southbound,SB_Global,connections and
    --remote=db:OVN_Northbound,NB_Global,connections

will only be set on master node when using load balancer for sb and nb dbs
respectively.

Signed-off-by: aginwala <aginwala at ebay.com>
---
 ovn/utilities/ovn-ctl           |  6 +++++-
 ovn/utilities/ovndb-servers.ocf | 31 ++++++++++++++++++-------------
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/ovn/utilities/ovn-ctl b/ovn/utilities/ovn-ctl
index 4b7eef5..2df8580 100755
--- a/ovn/utilities/ovn-ctl
+++ b/ovn/utilities/ovn-ctl
@@ -176,7 +176,9 @@ $cluster_remote_port
         set exec "$@"
     fi
 
-    set "$@" --remote=db:$schema_name,$table_name,connections
+    if test X"$OVN_USE_REMOTE_CONN" != Xno; then
+        set "$@" --remote=db:$schema_name,$table_name,connections
+    fi
     set "$@" --private-key=db:$schema_name,SSL,private_key
     set "$@" --certificate=db:$schema_name,SSL,certificate
     set "$@" --ca-cert=db:$schema_name,SSL,ca_cert
@@ -463,6 +465,7 @@ set_defaults () {
 
     OVN_NORTHD_NB_DB="unix:$DB_NB_SOCK"
     OVN_NORTHD_SB_DB="unix:$DB_SB_SOCK"
+    OVN_USE_REMOTE_CONN="yes"
 }
 
 set_option () {
@@ -577,6 +580,7 @@ File location options:
   transport (default: $DB_SB_CLUSTER_REMOTE_PROTO)
   --ovn-northd-nb-db=NB DB address(es) (default: $OVN_NORTHD_NB_DB)
   --ovn-northd-sb-db=SB DB address(es) (default: $OVN_NORTHD_SB_DB)
+  --ovn-use-remote-conn=yes|no Listen on target connection table (default: $OVN_USE_REMOTE_CONN)
 
 Default directories with "configure" option and environment variable override:
   logs: /usr/local/var/log/openvswitch (--with-logdir, OVS_LOGDIR)
diff --git a/ovn/utilities/ovndb-servers.ocf b/ovn/utilities/ovndb-servers.ocf
index 9391b89..25b4811 100755
--- a/ovn/utilities/ovndb-servers.ocf
+++ b/ovn/utilities/ovndb-servers.ocf
@@ -172,25 +172,27 @@ ovsdb_server_notify() {
             ${OVN_CTL} --ovn-manage-ovsdb=no start_northd
         fi
 
-        # Not needed while listening on 0.0.0.0 as we do not want to allow
-        # local binds. However, it is needed if vip ip is binded to nodes.
-        if [ "x${LISTEN_ON_MASTER_IP_ONLY}" = xyes ]; then
-            conn=`ovn-nbctl get NB_global . connections`
-            if [ "$conn" == "[]" ]
-            then
-                ovn-nbctl -- --id=@conn_uuid create Connection \
+        # In order to over-ride inactivity_probe for LB use case, we need to
+        # create connection entry to listen on 0.0.0.0 for master node.
+        if [ "x${LISTEN_ON_MASTER_IP_ONLY}" = xno ]; then
+           MASTER_IP="0.0.0.0"
+        fi
+        conn=`ovn-nbctl get NB_global . connections`
+        if [ "$conn" == "[]" ]
+        then
+            ovn-nbctl -- --id=@conn_uuid create Connection \
 target="p${NB_MASTER_PROTO}\:${NB_MASTER_PORT}\:${MASTER_IP}" \
 inactivity_probe=$INACTIVE_PROBE -- set NB_Global . connections=@conn_uuid
-            fi
+        fi
 
-            conn=`ovn-sbctl get SB_global . connections`
-            if [ "$conn" == "[]" ]
-            then
-                ovn-sbctl -- --id=@conn_uuid create Connection \
+        conn=`ovn-sbctl get SB_global . connections`
+        if [ "$conn" == "[]" ]
+        then
+            ovn-sbctl -- --id=@conn_uuid create Connection \
 target="p${SB_MASTER_PROTO}\:${SB_MASTER_PORT}\:${MASTER_IP}" \
 inactivity_probe=$INACTIVE_PROBE -- set SB_Global . connections=@conn_uuid
-            fi
         fi
+
     else
         if [ "$MANAGE_NORTHD" = "yes" ]; then
             # Stop ovn-northd service. Set --ovn-manage-ovsdb=no so that
@@ -355,6 +357,9 @@ ovsdb_server_start() {
         set $@ --db-nb-sync-from-proto=${NB_MASTER_PROTO}
         set $@ --db-sb-sync-from-port=${SB_MASTER_PORT}
         set $@ --db-sb-sync-from-proto=${SB_MASTER_PROTO}
+        if [ "x${LISTEN_ON_MASTER_IP_ONLY}" = xno ]; then
+            set $@ --ovn-use-remote-conn="no"
+        fi
 
     fi
 
-- 
1.9.1



More information about the dev mailing list