71 lines
2.3 KiB
Bash
Executable file
71 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."
|