Adding support for a second instance !

Redis cluster needs 6 hosts for work ... it's a lot.
To trick him each node can be Master and slave for another node.

;)
This commit is contained in:
2018-05-15 12:17:25 +02:00
parent 36b8982e25
commit 2031ec7d64
5 changed files with 1007 additions and 23 deletions

View File

@ -52,8 +52,17 @@ function getNodeID()
else
searchCmd="awk '/${3}:${4}@/ { print \$1 }'"
fi
redisRun $1 $2 cluster nodes | eval ${searchCmd}
return ${?}
result=$(redisRun $1 $2 cluster nodes | eval ${searchCmd})
rcode=${?}
if [[ -z ${result} ]]
then
searchCmd="awk '/${3}:${4}@/ { print \$1 }'"
result=$(redisRun $1 $2 cluster nodes | eval ${searchCmd})
rcode=${?}
fi
echo ${result}
return ${rcode}
}
function redisClusterForgetAll()
@ -112,10 +121,13 @@ declare -A PORTS
declare -A ROLES
declare -A MASTERS
declare -A NIDS
declare LeaderIP
declare LeaderPort
index=0
while read line
do
[[ ${line} =~ ^# ]] && continue
line=${line//::/:none:}
li=(${line//:/ })
@ -124,7 +136,13 @@ do
port=${li[2]}
role=${li[3]}
master=${li[4]}
ntype=${li[5]}
if [[ ${ntype} == "Leader" ]]
then
LeaderIP=${ip}
LeaderPort=${port}
fi
NAMES+=(${name})
IPADDRS+=([${name}]=${ip})
PORTS+=([${name}]=${port})
@ -133,12 +151,12 @@ do
done < ${CONF}
# If the cluster is "ok" don't do anything
st=$(redisClusterIsOK ${IPADDRS["Leader"]} ${PORTS["Leader"]})
st=$(redisClusterIsOK ${LeaderIP} ${LeaderPort})
#[[ ${?} -eq 0 ]] && exit 0
if [[ ${1} == "forget" ]]
then
redisClusterForgetAll ${IPADDRS["Leader"]} ${PORTS["Leader"]}
redisClusterForgetAll ${LeaderIP} ${LeaderPort}
exit ${?}
fi
@ -160,7 +178,7 @@ for node in ${NAMES[@]}
do
try=3
scmd="awk '/${IPADDRS[$node]}:${PORTS[${node}]}/ {print \$8}'"
while [[ $(redisRun ${IPADDRS['Leader']} ${PORTS['Leader']} "cluster nodes" | eval ${scmd}) != "connected" ]]
while [[ $(redisRun ${LeaderIP} ${LeaderPort} "cluster nodes" | eval ${scmd}) != "connected" ]]
do
sleep 1
try=$((try-1))
@ -196,7 +214,7 @@ echo " * Configuring replication."
NIDS+=()
for node in ${NAMES[@]}
do
NIDS+=([${node}]=$(getNodeID ${IPADDRS["Leader"]} ${PORTS["Leader"]} ${IPADDRS[${node}]} ${PORTS[${node}]}))
NIDS+=([${node}]=$(getNodeID ${LeaderIP} ${LeaderPort} ${IPADDRS[${node}]} ${PORTS[${node}]}))
done
for node in ${NAMES[@]}
@ -206,12 +224,12 @@ do
redisAddReplica ${IPADDRS[${node}]} ${PORTS[${node}]} ${NIDS[${MASTERS[${node}]}]}
done
sleep 2
sleep 5
echo
echo "Cluster status :"
echo
redisRun ${IPADDRS["Leader"]} ${PORTS["Leader"]} cluster info
redisRun ${LeaderIP} ${LeaderPort} cluster info
echo