chore: supprot DNS discovery test for 4.x

This commit is contained in:
Zaiming (Stone) Shi 2022-09-28 21:10:09 +02:00
parent c3f6c302ec
commit d49675cde5
1 changed files with 57 additions and 5 deletions

View File

@ -1,12 +1,18 @@
#!/usr/bin/env bash
## Test two nodes-cluster discover each other using DNS A records lookup result.
## Test two-nodes cluster discover each other using DNS A records lookup result.
set -euo pipefail
cd -P -- "$(dirname -- "$0")/.."
IMAGE="${1}"
IMAGE="${1:-}"
if [ -z "$IMAGE" ]; then
echo "Usage: $0 <EMQX_IMAGE_TAG>"
echo "e.g. $0 docker.io/emqx/emqx:5.0.8"
exit 1
fi
NET='test_node_discovery_dns'
NODE1='emqx1'
@ -56,7 +62,9 @@ docker run -d -t --name dnsmasq \
--cap-add=NET_ADMIN \
storytel/dnsmasq dnsmasq --no-daemon --log-queries
start_emqx() {
# Node names (the part before '@') should be all the same in the cluster
# e.g. emqx@${IP}
start_emqx_v5() {
NAME="$1"
IP="$2"
DASHBOARD_PORT="$3"
@ -66,6 +74,7 @@ start_emqx() {
--ip "$IP" \
--dns "$IP0" \
-p "$DASHBOARD_PORT:18083" \
-e EMQX_NODE_NAME="emqx@${IP}" \
-e EMQX_LOG__CONSOLE_HANDLER__LEVEL=debug \
-e EMQX_NODE_COOKIE="$COOKIE" \
-e EMQX_cluster__discovery_strategy='dns' \
@ -74,5 +83,48 @@ start_emqx() {
"$IMAGE"
}
start_emqx "$NODE1" "$IP1" 18083
start_emqx "$NODE2" "$IP2" 18084
## EMQX v4 has different configuration schema:
# EMQX_NODE_NAME="emqx@${IP}":
# This is necessary because 4.x docker entrypoint
# by default uses docker container ID as node name
# (the part before @ of e.g. emqx@172.18.0.101)
# EMQX_cluster__dns__app
# This must be the same as node name in 4.x
# EMQX_cluster__discovery
# This in 5.0 is EMQX_cluster__discovery_strategy
# EMQX_cluster__dns__name
# The DNS domain to lookup for peer nodes
# EMQX_cluster__dns__record_type
# The DNS record type. (only 'a' type is tested)
start_emqx_v4() {
NAME="$1"
IP="$2"
APP_NAME="emqx"
DASHBOARD_PORT="$3"
docker run -d -t \
--name "$NAME" \
--net "$NET" \
--ip "$IP" \
--dns "$IP0" \
-p "$DASHBOARD_PORT:18083" \
-e EMQX_NODE_NAME="${APP_NAME}@${IP}" \
-e EMQX_LOG__LEVEL=debug \
-e EMQX_NODE_COOKIE="$COOKIE" \
-e EMQX_cluster__discovery='dns' \
-e EMQX_cluster__dns__name="$DOMAIN" \
-e EMQX_cluster__dns__app="${APP_NAME}" \
-e EMQX_cluster__dns__record_type="a" \
"$IMAGE"
}
case "${IMAGE}" in
*emqx:4.*|*emqx-ee:4.*)
start_emqx_v4 "$NODE1" "$IP1" 18083
start_emqx_v4 "$NODE2" "$IP2" 18084
;;
*)
start_emqx_v5 "$NODE1" "$IP1" 18083
start_emqx_v5 "$NODE2" "$IP2" 18084
;;
esac