Compare commits

...

12 Commits

3 changed files with 53 additions and 1 deletions

View File

@ -3,6 +3,7 @@
<files>
<!-- System configuration -->
<file filelist='redis' name='/etc/redis/redis.conf' mkdir='True' rm='True'/>
<file filelist='redisCl' name='/etc/redis/cluster.conf' source='redis-cluster.conf' mkdir='True' rm='True'/>
<service servicelist="svredis">redis-server</service>
<service_access service='redis-server'>
<port service_accesslist='saRedis' protocol='tcp' port_type='SymLinkOption'>redisPort</port>
@ -42,9 +43,12 @@
<value>Leader</value>
</variable>
<variable name='redisMasterIP' type='ip' description="Adresse IP du Leader Redis"/>
<variable name='redisMasterIP' type='ip' description="Adresse IP du Leader Redis"/>
<variable name='redisMasterPort' type='number' description="Port d'écoute du Leader Redis"/>
<variable name='redisMasterPassword' type='string' description="Passphrase d'accès à la grappe Redis"/>
<variable name='rdClMemberIP' type='ip' description="Adresse IP du Noeud"/>
<variable name='rdClMember' type='ip' description="Nom du noeud" multi='True'/>
<variable name='rdClMemberIP' type='ip' description="Adresse IP du noeud" multi='True'/>
<variable name='rdClMemberPort' type='number' description="Port d'écoute du noeud" multi='True'/>
<variable name='rdClMemberRole' type='ip' description="Rôle du membre"/>
<variable name='rdClMemberMaster' type='ip' description="Noeud source des données pour ce membre"/>
</family>
@ -69,6 +73,7 @@
<target type='variable'>redisMasterIP</target>
<target type='variable'>redisMasterPort</target>
<target type='variable'>redisMasterPassword</target>
<target type='filelist'>redisCl</target>
</condition>
<condition name='disabled_if_in' source='redisRole'>
@ -77,6 +82,11 @@
<target type='variable'>redisMasterPort</target>
</condition>
<condition name='disabled_if_in' source='redisRole'>
<param>Node</param>
<target type='filelist'>redisCl</target>
</condition>
<condition name='disabled_if_in' source='rdClMemberRole'>
<param>master</param>
<target type='variable'>rdClMemberMaster</target>
@ -85,6 +95,13 @@
<group master='rdClIP'>
<slave>rdClmask</slave>
</group>
<group master='rdClMember'>
<slave>rdClMemberIP</slave>
<slave>rdClMemberPort</slave>
<slave>rdClMemberRole</slave>
<slave>rdClMemberMaster</slave>
</group>
<check name="valid_enum" target="redisRole">
<param>['Leader','Node']</param>
</check>

29
postservice/91-redis-init Executable file
View File

@ -0,0 +1,29 @@
#!/bin/bash
#
# Cluster init !
#
redisTrib="/usr/share/doc/redis-tools/examples/redis-trib.rb"
CONF="/etc/redis/cluster.conf"
if [[ -f ${1} ]]
then
CONF=${1}
fi
if [[ -f "${CONF}" ]]
then
LEADER=$(awk -F ':' '/^leader/ {print $2 ":" $3}' ${CONF})
REPLICA=$(${redisTrib} check ${LEADER} | awk '/additional replica/ {print $1}')
if [[ ${REPLICA} -eq 0 ]]
then
# Create Cluster
yes yes | ${redisTrib} create --replicas 1 $(awk -F ':' '{printf "%s:%s ", $2, $3}' ${CONF})
fi
else
echo "${CONF} is missing"
exit 0
fi

6
tmpl/redis-cluster.conf Normal file
View File

@ -0,0 +1,6 @@
%if %%getVar('activer_redis','non') == 'oui' and %%getVar('redisRole','Node') == 'Leader'
Leader:127.0.0.1:%%{redisPort}:master::
%for %%node in %%getVar('rdClMember',[])
%%{node}:%%{node.rdClMemberIP}:%%{node.rdClMemberPort}:%%{node.rdClMemberRole}:%%{node.rdClMemberMaster}:
%end for
%end if