Skip to content

Commit 5406d70

Browse files
lut777oilbeater
authored andcommitted
add master check when a node adding to a cluster and config sb/nb address
(cherry picked from commit a3cac53)
1 parent 136ead4 commit 5406d70

File tree

1 file changed

+87
-2
lines changed

1 file changed

+87
-2
lines changed

dist/images/start-db.sh

+87-2
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,33 @@ function quit {
4747
/usr/share/ovn/scripts/ovn-ctl stop_northd
4848
exit 0
4949
}
50+
51+
function is_clustered {
52+
t=$(echo -n "${NODE_IPS}" | sed 's/,/ /g')
53+
if [[ "$ENABLE_SSL" == "false" ]]; then
54+
x=$(for i in ${t}; do echo -n "tcp:[${i}]:6641,"; done | sed 's/,/ /g')
55+
for i in ${x};
56+
do
57+
nb_leader=$(timeout 10 ovsdb-client query ${i} "[\"_Server\",{\"table\":\"Database\",\"where\":[[\"name\",\"==\", \"OVN_Northbound\"]],\"columns\": [\"leader\"],\"op\":\"select\"}]")
58+
if [[ $nb_leader =~ "true" ]]
59+
then
60+
return 0
61+
fi
62+
done
63+
else
64+
x=$(for i in ${t}; do echo -n "ssl:[${i}]:6641,"; done| sed 's/,/ /g')
65+
for i in ${x};
66+
do
67+
nb_leader=$(timeout 10 ovsdb-client -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert query ${i} "[\"_Server\",{\"table\":\"Database\",\"where\":[[\"name\",\"==\", \"OVN_Northbound\"]],\"columns\": [\"leader\"],\"op\":\"select\"}]")
68+
if [[ $nb_leader =~ "true" ]]
69+
then
70+
return 0
71+
fi
72+
done
73+
fi
74+
return 1
75+
}
76+
5077
trap quit EXIT
5178
if [[ "$ENABLE_SSL" == "false" ]]; then
5279
if [[ -z "$NODE_IPS" ]]; then
@@ -66,7 +93,12 @@ if [[ "$ENABLE_SSL" == "false" ]]; then
6693

6794
nb_leader_ip=$(get_leader_ip nb)
6895
sb_leader_ip=$(get_leader_ip sb)
69-
if [[ "$nb_leader_ip" == "${POD_IP}" ]]; then
96+
set +eo pipefail
97+
is_clustered
98+
result=$?
99+
set -eo pipefail
100+
# leader up only when no cluster and on first node
101+
if [[ ${result} -eq 1 && "$nb_leader_ip" == "${POD_IP}" ]]; then
70102
# Start ovn-northd, ovn-nb and ovn-sb
71103
/usr/share/ovn/scripts/ovn-ctl \
72104
--db-nb-create-insecure-remote=yes \
@@ -85,6 +117,31 @@ if [[ "$ENABLE_SSL" == "false" ]]; then
85117
ovn-sbctl --no-leader-only set-connection ptcp:"${DB_SB_PORT}":[::]
86118
ovn-sbctl --no-leader-only set Connection . inactivity_probe=180000
87119
else
120+
# known leader always first
121+
set +eo pipefail
122+
if [ ${result} -eq 0 ]; then
123+
t=$(echo -n "${NODE_IPS}" | sed 's/,/ /g')
124+
for i in ${t};
125+
do
126+
nb_leader=$(timeout 10 ovsdb-client query "tcp:${i}:6641" "[\"_Server\",{\"table\":\"Database\",\"where\":[[\"name\",\"==\", \"OVN_Northbound\"]],\"columns\": [\"leader\"],\"op\":\"select\"}]")
127+
if [[ $nb_leader =~ "true" ]]
128+
then
129+
nb_leader_ip=${i}
130+
break
131+
fi
132+
done
133+
for i in ${t};
134+
do
135+
nb_leader=$(timeout 10 ovsdb-client query "tcp:${i}:6642" "[\"_Server\",{\"table\":\"Database\",\"where\":[[\"name\",\"==\", \"OVN_Southbound\"]],\"columns\": [\"leader\"],\"op\":\"select\"}]")
136+
if [[ $nb_leader =~ "true" ]]
137+
then
138+
sb_leader_ip=${i}
139+
break
140+
fi
141+
done
142+
fi
143+
set -eo pipefail
144+
# otherwise go to first node
88145
# Start ovn-northd, ovn-nb and ovn-sb
89146
/usr/share/ovn/scripts/ovn-ctl \
90147
--db-nb-create-insecure-remote=yes \
@@ -128,7 +185,11 @@ else
128185

129186
nb_leader_ip=$(get_leader_ip nb)
130187
sb_leader_ip=$(get_leader_ip sb)
131-
if [[ "$nb_leader_ip" == "${POD_IP}" ]]; then
188+
set +eo pipefail
189+
is_clustered
190+
result=$?
191+
set -eo pipefail
192+
if [[ ${result} -eq 1 && "$nb_leader_ip" == "${POD_IP}" ]]; then
132193
# Start ovn-northd, ovn-nb and ovn-sb
133194
/usr/share/ovn/scripts/ovn-ctl \
134195
--ovn-nb-db-ssl-key=/var/run/tls/key \
@@ -154,6 +215,30 @@ else
154215
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}":[::]
155216
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
156217
else
218+
# get leader if cluster exists
219+
set +eo pipefail
220+
if [[ ${result} -eq 0 ]]; then
221+
t=$(echo -n "${NODE_IPS}" | sed 's/,/ /g')
222+
for i in ${t};
223+
do
224+
nb_leader=$(timeout 10 ovsdb-client -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert query "ssl:[${i}]:6641" "[\"_Server\",{\"table\":\"Database\",\"where\":[[\"name\",\"==\", \"OVN_Northbound\"]],\"columns\": [\"leader\"],\"op\":\"select\"}]")
225+
if [[ $nb_leader =~ "true" ]]
226+
then
227+
nb_leader_ip=${i}
228+
break
229+
fi
230+
done
231+
for i in ${t};
232+
do
233+
nb_leader=$(timeout 10 ovsdb-client -p /var/run/tls/key -c /var/run/tls/cert -C /var/run/tls/cacert query "ssl:[${i}]:6642" "[\"_Server\",{\"table\":\"Database\",\"where\":[[\"name\",\"==\", \"OVN_Southbound\"]],\"columns\": [\"leader\"],\"op\":\"select\"}]")
234+
if [[ $nb_leader =~ "true" ]]
235+
then
236+
sb_leader_ip=${i}
237+
break
238+
fi
239+
done
240+
fi
241+
set -eo pipefail
157242
# Start ovn-northd, ovn-nb and ovn-sb
158243
/usr/share/ovn/scripts/ovn-ctl \
159244
--ovn-nb-db-ssl-key=/var/run/tls/key \

0 commit comments

Comments
 (0)