Migration
Comment se prépare et se déroule une migration ?
Il s'agit là d'une vision plutôt « interne » mais qui vous donnera les éléments à prendre en compte ainsi que l'ordre dans lequel les opérations doivent être faites.
Objectif
- migrer les applications vers un autre serveur ;
- limiter la durée d'indisponibilité.
Préparation
Côté Kokiris - auditer l'existant
Référencer les services :
- serveurs ;
- pile logicielle ;
- applications ;
- modules apache ;
- modules php ;
- utilisateurs et leurs id ;
- acl ;
- tâches crons ;
- iplb ;
- nasha ;
- ip ;
- vrack.
Côté Client
Il faut :
- planifier le passage en maintenance ;
- préparer la baisse du TTL DNS afin de pouvoir migrer rapidement.
Exemple de déroulé des opérations
Une migration à blanc doit être est en premier effectuée, si elle réussie, la migration définitive doit alors suivre.
n° | Acteurs | serveurs | Actions | Outils | Commentaires |
---|---|---|---|---|---|
1 | CLIENT | DNS | baisser les TTL DNS afin de faciliter la migration et le retour arrière | - | - |
2 | KOKIRIS | les deux | copier la clef ssh vers le nouveau serveur | - | - |
3 | KOKIRIS | les deux | vérifier que les uid des comptes clients soient identiques | - | afin d'éviter un problème de permission/appartenance |
4 | KOKIRIS | source | copier configurations apache et certificats ssl vers le nouveau serveur | scp/rsync | - |
5 | KOKIRIS | source | copier configurations globale apache/MySQL/php(fpm) spécifique vers le nouveau serveur | scp/rsync | - |
6 | KOKIRIS | source | copier configurations csync spécifique vers le nouveau serveur | les yeux | ne pas écraser bêtement le fichier cible ! |
7 | KOKIRIS | source | Si Multi avec HAP : copier le répertoire /home/adminXXX/ssl/hap vers le nouveau serveur | scp/rsync | Si multi et beaucoup de certificats |
8 | KOKIRIS | les deux | désactivation de l'alerting | shinken/icinga/ pingdom | - |
9 | CLIENT | source | passer les sites en maintenance | - | - |
10 | KOKIRIS | source | copier fichiers et répertoires client | scp/rsync | - |
11 | KOKIRIS | source | exporter les bases sql puis les transférer vers le nouveau serveur | mysqldump puis scp/rsync | - |
12 | KOKIRIS | source | copier fichiers et répertoires vers le nouveau serveur | scp/rsync | - |
13 | KOKIRIS | source | sauvegarder les permissions | getfacl -R mon rep | optionnel |
14 | KOKIRIS | cible | modifier les chaînes de connexions | vim | si réplication |
15 | KOKIRIS | source | copier les tâches cron vers le nouveau serveur, mais les commenter ( /etc/cron.d/* /var/spool/cron/*) | scp et vim | - |
16 | KOKIRIS | cible | activer la version cli de PHP par défaut (requis par les crons) | update-alternatives --set php /usr/bin/php8.2 | - |
17 | KOKIRIS | source | en théorie, copier les logs apache vers le nouveau serveur | scp/rsync | obligation légale de conserver un an de log |
18 | KOKIRIS | cible | vérifier les permissions et l'appartenance des nouvelles données | ls -la | - |
19 | KOKIRIS | cible | réinjecter le dump sql | mysql | - |
20 | KOKIRIS | cible | vérifier que les tâches cron soient présentent | /etc/cron.d && crontab | - |
21 | CLIENT | cible | vérifier que les sites fonctionnent, sinon corriger | navigateur et curl | - |
- | KOKIRIS et CLIENT | - | fin de migration à blanc et début de la migration définitive | - | - |
22 | KOKIRIS | source | copier fichiers et répertoires client | scp/rsync | - |
23 | KOKIRIS | source | exporter les bases sql puis les transférer vers le nouveau serveur | mysqldump puis scp/rsync | - |
24 | KOKIRIS | cible | réinjecter le dump sql | mysql | - |
25 | CLIENT | cible | vérifier que les sites fonctionnent, sinon corriger | navigateur et curl | - |
26 | CLIENT | dns | faire pointer le nom de domaine vers l'ip du serveur/iplb | - | - |
27 | KOKIRIS | cible | vérifier que LE renouvelle bien les certificats | - | - |
28 | CLIENT | cible | recette - vérification par le client | - | - |
29 | KOKIRIS ou CLIENT | cible | réactivation des cron en les décommentant | vim/nano | - |
30 | KOKIRIS | cible | réactivation de l'alerting | icinga/ uptime-kuma | - |
31 | KOKIRIS | cible | vérifier que les chemins de sauvegarde soient bons (/root/.config/resticprofile.yml) | vim | - |
Recette
Avant toute migration, le client devra préalablement avoir validé que son application soit fonctionnelle sur la nouvelle plateforme.
Aide à la migration MySQL
Création de compte sur Mariadb
CREATE USER 'client'@'%' IDENTIFIED BY 'password';
Changement des privileges
GRANT ALL PRIVILEGES ON * . * TO 'client'@'%';
Changement de mot de passe
ALTER USER 'client'@'%' IDENTIFIED BY 'new_password';
Création des comptes, exemple de méthode avec bash
Après obtenu la liste des bases, utilisateurs et mots passe, utilisez un script ressemblant à cela
#!/bin/bash -
db_list=("dolbarr" "17992" "sio")
user_list=("sio" "mpuser" "oste")
passwd_list=("u208" "l0rd" "m@020")
for i in ${!db_list[@]} ; do
user=${user_list[$i]}
passwd=${passwd_list[$i]}
for a in localhost "%" ; do
mysql -e "CREATE USER '$user'@'$a' IDENTIFIED BY '$passwd';"
mysql -e "CREATE DATABASE ${db_list[$i]} ;"
mysql -e "GRANT ALL PRIVILEGES ON ${db_list[$i]}.* To '$user'@'$a';"
done
done
Dump de la base
mysqldump madatabase --single-transaction > /tmp/madatabase.sql
Synchronisation des fichiers et répertoires avec rsync
Exemple de ligne de commande
rsync -e 'ssh -p 65022' -avPz --delete-after /home/if65891/htdocs kks1234.kokiris.net:/home/if65891/
Synchronisation de la Configuration apache avec rsync
rsync -e 'ssh -p 65022' -avPz --delete-after /home/adminpj2352/sites-enabled/apache/* kks1234.kokiris.net://home/adminpj2352/sites-enabled/apache/