Différences entre les versions de « Synchro bidirectionnelle »
| 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 | |||
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 | ||
(qui est l'ip de l'autre serveur squid) change | (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. | 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:38
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
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 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)"
#!/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)"