Différences entre les versions de « Synchro bidirectionnelle »

De BlaxWiki
Aller à la navigationAller à la recherche
Ligne 1 : Ligne 1 :
Un double synchronisation bidirectionnelle est en place entre les 2 serveurs via rsync et ssh. Chaque serveur va lancer une mise a jour distante puis locale. Ainsi, si le serveur distant est plus recent, la premiere mise a jour ne sera pas faite, par contre, la mise a jour locale elle sera appliquee. Les heures de synchronisation sont decalees pour limiter les risques. A chaque mise a jour, un backup est realise dans /etc/mail/backup  
Un double synchronisation bidirectionnelle est en place entre les 2 serveurs via rsync et ssh. Chaque serveur va lancer une mise a jour distante puis locale. Ainsi, si le serveur  
distant est plus recent, la premiere mise a jour ne sera pas faite, par contre, la mise a jour locale elle sera appliquee. Les heures de synchronisation dans la crontab sont decalees  
pour limiter les risques. A chaque mise a jour, un backup est realise dans /opt/data/backup


Ce script est installé sur 2 serveurs squid, il sert à copier la configuration de squid entre ces 2 serveurs. Ce script est en crontab sur les 2 serveurs, seul la variable DISTANT  
Ce script est installé sur 2 serveurs squid, il sert à copier la configuration de squid entre ces 2 serveurs. Ce script est en crontab sur les 2 serveurs, seul la variable DISTANT  
Ligne 5 : Ligne 7 :


La partie "display" et "send" est propre à la supervision utilisée ici, mais peut etre reprise pour d'autre chose.
La partie "display" et "send" est propre à la supervision utilisée ici, mais peut etre reprise pour d'autre chose.
<pre>
#!/bin/bash
# Script de synchronisation bi directionnelle du fichier access avec archivage
DATE=`date +%Y-%m-%d-%H-%M`
VISION="/opt/agarik/Vision/bin/bb_send_raw"
DISPLAY="supervision.agarik.com"
TARGET="$(hostname | sed -e 's/\./,/g')"
SERVICE="sync"
LIFE_MESSAGE="65"
LOGFILE="/var/log/synchro.log"
DISTANT=172.26.0.9
exec > /var/log/synchro.log
exec 2>&1
Send()
{
"${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}"
}
color=green
if ! `/usr/bin/rsync -u -e /opt/applis/openssh/bin/ssh root@$DISTANT:/etc/mail/access* /etc/mail/` || ! `/usr/bin/rsync -u -e /opt/applis/openssh/bin/ssh  /etc/mail/access* root@$DISTANT:/etc/mail/`
then
        color=red
fi
if [ "$color" == "green" ]
then
        if [ `diff /etc/mail/access /etc/mail/backup/access.last | wc -l` -gt 0 ];
        then
                cp /etc/mail/access /etc/mail/backup/access.$DATE
                ln -sf /etc/mail/backup/access.$DATE /etc/mail/backup/access.last
        fi
fi
Send "${color}" "Resultat de la synchronisation du fichier access
$(cat $LOGFILE)"
</pre>


<pre>
<pre>

Version du 10 août 2012 à 15:40

Un double synchronisation bidirectionnelle est en place entre les 2 serveurs via rsync et ssh. Chaque serveur va lancer une mise a jour distante puis locale. Ainsi, si le serveur distant est plus recent, la premiere mise a jour ne sera pas faite, par contre, la mise a jour locale elle sera appliquee. Les heures de synchronisation dans la crontab sont decalees pour limiter les risques. A chaque mise a jour, un backup est realise dans /opt/data/backup

Ce script est installé sur 2 serveurs squid, il sert à copier la configuration de squid entre ces 2 serveurs. Ce script est en crontab sur les 2 serveurs, seul la variable DISTANT (qui est l'ip de l'autre serveur squid) change

La partie "display" et "send" est propre à la supervision utilisée ici, mais peut etre reprise pour d'autre chose.

#!/bin/bash
# Script de synchronisation bi directionnelle du fichier squid.conf avec archivage
DATE=`date +%Y-%m-%d-%H-%M`
VISION="/opt/agarik/Vision/bin/bb_send_raw"
DISPLAY="supervision.agarik.com"
TARGET="$(hostname | sed -e 's/\./,/g')"
SERVICE="sync"
LIFE_MESSAGE="65"
LOGFILE="/var/log/synchro.log"
DISTANT=192.168.26.11

exec > /var/log/synchro.log
exec 2>&1

Send()
{
 "${VISION}" "${DISPLAY}" "status+${LIFE_MESSAGE} ${TARGET}.${SERVICE} ${1} $(date) ${SERVICE} ${2}"
}

color=green

if ! `/usr/bin/rsync -u -e /opt/applis/openssh/bin/ssh root@$DISTANT:/opt/applis/squid/etc/squid.conf /opt/applis/squid/etc/` || ! `/usr/bin/rsync -u -e /opt/applis/openssh/bin/ssh 
 /opt/applis/squid/etc/squid.conf root@$DISTANT:/opt/applis/squid/etc/`
then
        color=red
fi

if [ "$color" == "green" ]
then
        if [ `diff /opt/applis/squid/etc/squid.conf /opt/data/backup/squid.last | wc -l` -gt 0 ];
        then
                cp /opt/applis/squid/etc/squid.conf /opt/data/backup/squid.$DATE
                ln -sf /opt/data/backup/squid.$DATE /opt/data/backup/squid.last
                service squid reload
        fi
fi

Send "${color}" "$(cat $LOGFILE)"