1
0
Fork 0
scripts-admin-quickndirty-p.../ovh/script_bascule-maitre-vers-esclave.sh

72 lines
2.3 KiB
Bash
Executable file

#!/bin/sh
SERVEUR_ESCLAVE="srv2"
SERVEUR_MAITRE="srv1"
RSYNCD_SECRETS="/etc/rsyncd.secrets"
RSYNCD_SECRETS_USER="admin"
# Par défaut, on s'arrête à la première erreur non "catchée"
set -ex
# On vérifie que le script PHP est dans le coin
if [ ! -f soapi-ovh-bascule.php ]; then
echo "ERREUR: script php de bascule 'soapi-ovh-bascule.php' non présent." >&2
exit 1
fi
cat <<EOF
AVERTISSEMENT :
Ce script va désactiver tous les processus de réplication
sur le serveur esclave et promouvoir celui-ci comme serveur
maître.
La bascule inverse ou le rétablissement de la situation normale
devront être fait à la main.
Ce script s'arrêtera à la première erreur rencontrée, sans retour
en arrière. À vous de déboguer et exécuter les étapes restantes.
Si possible, commencez par éteindre le serveur Apache du maître :
ssh root@$SERVEUR_MAITRE service apache2 stop
Êtes-vous sûr de vouloir continuer ?
EOF
read TOTO
if [ "$( echo "$TOTO" | egrep -ic "^(o|y|oui|yes)$" )" -ne 1 ]; then
exit 1
fi
# On commence par arrêter la synchro des fichiers :
# - on arrête le serveur rsync qui recevait les connexions du serveur maître
# - au cas où le serveur rsync serait redémarré par erreur, on change le mot de passe desdites connexions.
echo "Arrêt du serveur rsyncd sur le serveur esclave..."
ssh "root@$SERVEUR_ESCLAVE" service rsync stop
echo
echo
echo "Réinitialisation du mot de passe dans $RSYNCD_SECRETS..."
ssh "root@$SERVEUR_ESCLAVE" sed -i.bascule-old "/^$RSYNCD_SECRETS_USER:/d" $RSYNCD_SECRETS
echo
echo
# On promeut toutes les instances PostgreSQL
# pour ce faire, on charge la bibliothèque de scripts de démarrage
# de Debian, histoire de faire un simili "service postgresql promote"
echo "Promotion des instances PostgreSQL..."
ssh "root@$SERVEUR_ESCLAVE" "if ! type do_ctl_all >/dev/null 2>&1; then . /usr/share/postgresql-common/init.d-functions; fi; do_ctl_all promote 9.1 'Promotion des instances...'"
echo
echo
# On démarre Apache
echo "Démarrage d'Apache..."
ssh "root@$SERVEUR_ESCLAVE" service apache2 start
echo
echo
echo "Appel à l'API d'OVH pour rediriger l'IP failover vers le serveur esclave..."
php soapi-ovh-bascule.php srv1 srv2 && echo "Bascule demandée, attendre qq dizaines de secondes..."
echo
echo
echo "End of script."