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:
@ -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
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user