[ovs-dev] [patch v1] ovn: ovn-ctl support to start ovn db servers in backup mode
Numan Siddique
nusiddiq at redhat.com
Thu Sep 1 09:59:14 UTC 2016
On Thu, Sep 1, 2016 at 10:51 AM, <bschanmu at redhat.com> wrote:
> From: Babu Shanmugam <bschanmu at 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 <bschanmu at 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 at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list