Skip to content

Commit

Permalink
fix: get_leader_ip always return fist node ip
Browse files Browse the repository at this point in the history
  • Loading branch information
oilbeater committed May 6, 2021
1 parent 630e373 commit cbb2ddd
Showing 1 changed file with 158 additions and 174 deletions.
332 changes: 158 additions & 174 deletions dist/images/start-db.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,36 +27,20 @@ DB_SB_PORT=${DB_SB_PORT:-6642}
ENABLE_SSL=${ENABLE_SSL:-false}

function gen_conn_str {
t=$(echo -n "${NODE_IPS}" | sed 's/[[:space:]]//g' | sed 's/,/ /g')
if [[ "$ENABLE_SSL" == "false" ]]; then
x=$(for i in ${t}; do echo -n "tcp:[$i]:$1",; done| sed 's/,$//')
else
x=$(for i in ${t}; do echo -n "ssl:[$i]:$1",; done| sed 's/,$//')
fi
echo "$x"
}

function get_leader_ip {
while true;
do
leader=$(kubectl get ep -n "${POD_NAMESPACE}" ovn-"$1" -o jsonpath={.subsets\[0\].addresses\[0\].ip})
if [ "$leader" == "" ]; then
# no available leader
break
t=$(echo -n "${NODE_IPS}" | sed 's/[[:space:]]//g' | sed 's/,/ /g')
if [[ "$ENABLE_SSL" == "false" ]]; then
x=$(for i in ${t}; do echo -n "tcp:[$i]:$1",; done| sed 's/,$//')
else
if [[ "$leader" != "${POD_IP}" ]]; then
echo "$leader"
return
else
# "leader cannot be self, waiting new leader"
sleep 5
fi
x=$(for i in ${t}; do echo -n "ssl:[$i]:$1",; done| sed 's/,$//')
fi
done
echo "$x"
}

# If no available leader the first ip will be the leader
t=$(echo -n "${NODE_IPS}" | sed 's/[[:space:]]//g' | sed 's/,/ /g')
echo -n "${t}" | cut -f 1 -d " "
function get_leader_ip {
# Always use first node ip as leader, this option only take effect
# when first bootstrap the cluster.
t=$(echo -n "${NODE_IPS}" | sed 's/[[:space:]]//g' | sed 's/,/ /g')
echo -n "${t}" | cut -f 1 -d " "
}

function quit {
Expand All @@ -65,155 +49,155 @@ function quit {
}
trap quit EXIT
if [[ "$ENABLE_SSL" == "false" ]]; then
if [[ -z "$NODE_IPS" ]]; then
/usr/share/ovn/scripts/ovn-ctl restart_northd
ovn-nbctl --no-leader-only set-connection ptcp:"${DB_NB_PORT}":["${DB_NB_ADDR}"]
ovn-nbctl --no-leader-only set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only set-connection ptcp:"${DB_SB_PORT}":["${DB_SB_ADDR}"]
ovn-sbctl --no-leader-only set Connection . inactivity_probe=180000
else
if [[ ! "$NODE_IPS" =~ "$POD_IP" ]]; then
echo "ERROR! host ip $POD_IP not in env NODE_IPS $NODE_IPS"
exit 1
fi
/usr/share/ovn/scripts/ovn-ctl stop_northd

nb_leader_ip=$(get_leader_ip nb)
sb_leader_ip=$(get_leader_ip sb)
if [[ "$nb_leader_ip" == "${POD_IP}" ]]; then
# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--db-nb-create-insecure-remote=yes \
--db-sb-create-insecure-remote=yes \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
ovn-nbctl --no-leader-only set-connection ptcp:"${DB_NB_PORT}":[::]
ovn-nbctl --no-leader-only set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only set-connection ptcp:"${DB_SB_PORT}":[::]
ovn-sbctl --no-leader-only set Connection . inactivity_probe=180000
else
while ! nc -z "${nb_leader_ip}" "${DB_NB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-nb ${nb_leader_ip}:${DB_NB_PORT} ready "
sleep 5;
done
while ! nc -z "${sb_leader_ip}" "${DB_SB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-sb ${sb_leader_ip}:${DB_SB_PORT} ready "
sleep 5;
done

# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--db-nb-create-insecure-remote=yes \
--db-sb-create-insecure-remote=yes \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-cluster-remote-addr="[${nb_leader_ip}]" \
--db-sb-cluster-remote-addr="[${sb_leader_ip}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
fi
fi
if [[ -z "$NODE_IPS" ]]; then
/usr/share/ovn/scripts/ovn-ctl restart_northd
ovn-nbctl --no-leader-only set-connection ptcp:"${DB_NB_PORT}":["${DB_NB_ADDR}"]
ovn-nbctl --no-leader-only set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only set-connection ptcp:"${DB_SB_PORT}":["${DB_SB_ADDR}"]
ovn-sbctl --no-leader-only set Connection . inactivity_probe=180000
else
if [[ ! "$NODE_IPS" =~ "$POD_IP" ]]; then
echo "ERROR! host ip $POD_IP not in env NODE_IPS $NODE_IPS"
exit 1
fi
/usr/share/ovn/scripts/ovn-ctl stop_northd

nb_leader_ip=$(get_leader_ip nb)
sb_leader_ip=$(get_leader_ip sb)
if [[ "$nb_leader_ip" == "${POD_IP}" ]]; then
# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--db-nb-create-insecure-remote=yes \
--db-sb-create-insecure-remote=yes \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
ovn-nbctl --no-leader-only set-connection ptcp:"${DB_NB_PORT}":[::]
ovn-nbctl --no-leader-only set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only set-connection ptcp:"${DB_SB_PORT}":[::]
ovn-sbctl --no-leader-only set Connection . inactivity_probe=180000
else
while ! nc -z "${nb_leader_ip}" "${DB_NB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-nb ${nb_leader_ip}:${DB_NB_PORT} ready "
sleep 5;
done
while ! nc -z "${sb_leader_ip}" "${DB_SB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-sb ${sb_leader_ip}:${DB_SB_PORT} ready "
sleep 5;
done

# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--db-nb-create-insecure-remote=yes \
--db-sb-create-insecure-remote=yes \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-cluster-remote-addr="[${nb_leader_ip}]" \
--db-sb-cluster-remote-addr="[${sb_leader_ip}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
fi
fi
else
if [[ -z "$NODE_IPS" ]]; then
/usr/share/ovn/scripts/ovn-ctl \
--ovn-nb-db-ssl-key=/var/run/tls/key \
--ovn-nb-db-ssl-cert=/var/run/tls/cert \
--ovn-nb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-sb-db-ssl-key=/var/run/tls/key \
--ovn-sb-db-ssl-cert=/var/run/tls/cert \
--ovn-sb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-northd-ssl-key=/var/run/tls/key \
--ovn-northd-ssl-cert=/var/run/tls/cert \
--ovn-northd-ssl-ca-cert=/var/run/tls/cacert \
restart_northd
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_NB_PORT}":["${DB_NB_ADDR}"]
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_SB_PORT}":["${DB_SB_ADDR}"]
ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
else
if [[ ! "$NODE_IPS" =~ "$POD_IP" ]]; then
echo "ERROR! host ip $POD_IP not in env NODE_IPS $NODE_IPS"
exit 1
fi
/usr/share/ovn/scripts/ovn-ctl stop_northd

nb_leader_ip=$(get_leader_ip nb)
sb_leader_ip=$(get_leader_ip sb)
if [[ "$nb_leader_ip" == "${POD_IP}" ]]; then
# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--ovn-nb-db-ssl-key=/var/run/tls/key \
--ovn-nb-db-ssl-cert=/var/run/tls/cert \
--ovn-nb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-sb-db-ssl-key=/var/run/tls/key \
--ovn-sb-db-ssl-cert=/var/run/tls/cert \
--ovn-sb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-northd-ssl-key=/var/run/tls/key \
--ovn-northd-ssl-cert=/var/run/tls/cert \
--ovn-northd-ssl-ca-cert=/var/run/tls/cacert \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_NB_PORT}":[::]
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_SB_PORT}":[::]
ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
else
while ! nc -z "${nb_leader_ip}" "${DB_NB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-nb ${nb_leader_ip}:${DB_NB_PORT} ready "
sleep 5;
done
while ! nc -z "${sb_leader_ip}" "${DB_SB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-sb ${sb_leader_ip}:${DB_SB_PORT} ready "
sleep 5;
done

# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--ovn-nb-db-ssl-key=/var/run/tls/key \
--ovn-nb-db-ssl-cert=/var/run/tls/cert \
--ovn-nb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-sb-db-ssl-key=/var/run/tls/key \
--ovn-sb-db-ssl-cert=/var/run/tls/cert \
--ovn-sb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-northd-ssl-key=/var/run/tls/key \
--ovn-northd-ssl-cert=/var/run/tls/cert \
--ovn-northd-ssl-ca-cert=/var/run/tls/cacert \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-cluster-remote-addr="[${nb_leader_ip}]" \
--db-sb-cluster-remote-addr="[${sb_leader_ip}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
fi
fi
/usr/share/ovn/scripts/ovn-ctl \
--ovn-nb-db-ssl-key=/var/run/tls/key \
--ovn-nb-db-ssl-cert=/var/run/tls/cert \
--ovn-nb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-sb-db-ssl-key=/var/run/tls/key \
--ovn-sb-db-ssl-cert=/var/run/tls/cert \
--ovn-sb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-northd-ssl-key=/var/run/tls/key \
--ovn-northd-ssl-cert=/var/run/tls/cert \
--ovn-northd-ssl-ca-cert=/var/run/tls/cacert \
restart_northd
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_NB_PORT}":["${DB_NB_ADDR}"]
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_SB_PORT}":["${DB_SB_ADDR}"]
ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
else
if [[ ! "$NODE_IPS" =~ "$POD_IP" ]]; then
echo "ERROR! host ip $POD_IP not in env NODE_IPS $NODE_IPS"
exit 1
fi
/usr/share/ovn/scripts/ovn-ctl stop_northd

nb_leader_ip=$(get_leader_ip nb)
sb_leader_ip=$(get_leader_ip sb)
if [[ "$nb_leader_ip" == "${POD_IP}" ]]; then
# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--ovn-nb-db-ssl-key=/var/run/tls/key \
--ovn-nb-db-ssl-cert=/var/run/tls/cert \
--ovn-nb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-sb-db-ssl-key=/var/run/tls/key \
--ovn-sb-db-ssl-cert=/var/run/tls/cert \
--ovn-sb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-northd-ssl-key=/var/run/tls/key \
--ovn-northd-ssl-cert=/var/run/tls/cert \
--ovn-northd-ssl-ca-cert=/var/run/tls/cacert \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_NB_PORT}":[::]
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
ovn-nbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set NB_Global . options:use_logical_dp_groups=true

ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set-connection pssl:"${DB_SB_PORT}":[::]
ovn-sbctl --no-leader-only -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert set Connection . inactivity_probe=180000
else
while ! nc -z "${nb_leader_ip}" "${DB_NB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-nb ${nb_leader_ip}:${DB_NB_PORT} ready "
sleep 5;
done
while ! nc -z "${sb_leader_ip}" "${DB_SB_PORT}" >/dev/null;
do
echo "sleep 5 seconds, waiting for ovn-sb ${sb_leader_ip}:${DB_SB_PORT} ready "
sleep 5;
done

# Start ovn-northd, ovn-nb and ovn-sb
/usr/share/ovn/scripts/ovn-ctl \
--ovn-nb-db-ssl-key=/var/run/tls/key \
--ovn-nb-db-ssl-cert=/var/run/tls/cert \
--ovn-nb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-sb-db-ssl-key=/var/run/tls/key \
--ovn-sb-db-ssl-cert=/var/run/tls/cert \
--ovn-sb-db-ssl-ca-cert=/var/run/tls/cacert \
--ovn-northd-ssl-key=/var/run/tls/key \
--ovn-northd-ssl-cert=/var/run/tls/cert \
--ovn-northd-ssl-ca-cert=/var/run/tls/cacert \
--db-nb-cluster-local-addr="[${POD_IP}]" \
--db-sb-cluster-local-addr="[${POD_IP}]" \
--db-nb-cluster-remote-addr="[${nb_leader_ip}]" \
--db-sb-cluster-remote-addr="[${sb_leader_ip}]" \
--db-nb-addr=[::] \
--db-sb-addr=[::] \
--ovn-northd-nb-db="$(gen_conn_str 6641)" \
--ovn-northd-sb-db="$(gen_conn_str 6642)" \
start_northd
fi
fi
fi

# Reclaim heap memory after compaction
Expand Down

0 comments on commit cbb2ddd

Please sign in to comment.