MovingToNeptune2 - v-l-m/vlm GitHub Wiki
Documentation et Todo-list pour migrer Neptune vers Neptune2
##Contexte On veut migrer :
- les services svn+trac du /home/dev
- les service vlm du /home/vlm
- minimiser le temps d'interruption
##Stratégie de bascule
- STEP 1 : préparation du serveur NEPTUNE2
- STEP 2 : environnement de dev
- STEP 3 : installation from scratch du /home/vlm + copie base
- STEP 4 : tests à réaliser
- STEP 5 : sync J-1 (Bascule à blanc)
- STEP 6 : Bascule
- STEP 7 : Phase de surveillance
- STEP 8 : Shutdown de NEPTUNE
STEP1 : Préparation Serveur
- install debian (fm)
- rsync du /root/.ssh (fm)
- authorisation de la clef publique du root neptune sur lui meme
-
apt-get install rsync
- maj du sytème :
apt-get update && apt-get upgrade
- rsync du /etc/ dans /root/etc/ for the record :
rsync -avz [email protected]:/etc /root/
(mis dans /root/sync-etc.sh) - Script de comparaison des paquets installés dans /root/cmp-dpkg.sh
- Passer le serveur en UTC
dpkg-reconfigure tzdata
- ntp client
apt-get install ntpdate && ntpdate-debian
STEP2 : Préparation dev.v-l-m.org
###Prérequis
- Création du user dev (uuid : 1001)
- Rsync du /home/dev de Neptune vers Neptune2
rsync -avz [email protected]:/home/dev/* /home/dev/
dans /root/sync-dev.sh
Migration (avortée) de svn+trac
- Relire : http://dev.virtual-loup-de-mer.org/vlm/wiki/ConfigurationServeur
- Ajustements conf svn :
- suppression du post-commit hook pour le bot cia (cause des lenteurs en commit)
- Ajustements conf apache
- copie de la conf apache de dev dans sites-available
- a2ensite dev.virtual-loup-de-mer.org
- apt-get install apache2
- a2enmod dav
- apt-get install libapache2-svn
- a2enmod authz_svn
- apt-get install python-setuptools trac trac-accountmanager
Remise à l'identique
- a2dissite dev.virtual-loup-de-mer.org
- apt-get remove libapache2-svn
- apt-get remove python-setuptools trac trac-accountmanager
Migration vers GitHub de dev.v-l-m.org
- Test import dans github du svn
- ... mais pb d'attribution de certains commits (ceux de paparazzia par exemple ;))
- Test import trac avec trac2github
- ... mais pb de dispositif anti-abuse
- A ajuster (tempo de 4 secondes + bugfix sur les commentaires)
- Association des comptes des membres de vlm au projet:
- Owners : Phille, FM, Sbs, spf, pzia
- Dev : Stephpen, Maitai ... to be continued
- Conversion des pages wiki trac en markdown avec un peu d'aide du gist https://gist.github.com/somebox/619537
- Import Github avec les auteurs (on ne touche plus à rien)
- Test import wiki dans projet test
- Faire débloquer le quota anti abuse par github pour pouvoir poster 3000 commentaires + les tickets sans se faire virer
- Copier le MOVE dans trunk
- Importer les tickets+comments+milesones+tags dans le projet 'vlm' (NB : les assignee doivent exister dans le projet)
- Importer le wiki une fois le projet 'vlm' stabilisé
- Mettre en place bot irc #769
- Déplacer MOVE dans le wiki
- Faire le mail sur la mailing liste
- Bloquer les comptes du trac+svn sur Neptune 1
- Redirection vers github depuis Neptune1
###Redirections et backups
- Créer une redirection de http://dev.v-l-m.org vers http://v-l-m.github.io/vlm/
- nettoyer le /home/dev + tar -cvf /root/dev.vlm.tar.gz /home/dev
- Backup local du tar.gz for the record
STEP3 : Installation VLM
###Installation de base
- Relire : http://dev.virtual-loup-de-mer.org/vlm/wiki/installation
- Suivre la doc (en s'aidant de la conf /etc/ précédente) pour catcher les manques
- Attention : sur neptune1 faire un base/scripts/dump-alive.sh a une heure creuse et entre 2 runs principaux du moteur
- Ajuster le script de déploiement pour github (et le script install.sh)
- Modifier les références au site dev.v-l-m.org (Cf. #771)
- Importer les clefs ssh pour l'user vlm depuis Neptun1
- Créer une clef pour l'user vlm@neptune2
ssh-keygen -t rsa -C "[email protected]"
et l'autoriser dans vlm@neptune1 - Paramètrer neptune2 dans apache en plus des autres
- Tester avec un client en changeant son /etc/hosts
- Prendre les gshhs de neptune1
rsync -avz [email protected]:/home/vlm/vlmdatas/gshhs /home/vlm/vlmdatas/
et redéployer maps - rsync archives gribs FIXME : Doc or script
- Vérifier le paramètrage du vhost grib.v-l-m.org
- Vérifier le paramètrage des vhosts de cache (cache, c1, c2, ...)
- Installation client mail
apt-get install mailutils
- Reconfiguration exim
dpkg-reconfigure exim4
- Curl pour les notifications twitter et facebook
apt-get install curl php5-curl
- Mettre à jour Installation.md sur le wiki et le copier dans INSTALL
Vérifier la configuration
- Comparer les fichiers de ~/conf entre les 2 serveurs et reporter dans hosting/conf pour améliorer les .dist
- Comparer le tuning /etc
-
Reprendre :
/etc/apache2/mods-available/disk_cache.conf
-
Reprendre :
/etc/default/apache2
-
apache.conf
:Timeout 60 #Prefork MPM StartServers 10 MinSpareServers 5 MaxSpareServers 10 ServerLimit 512 MaxClients 256 MaxRequestsPerChild 255
-
/etc/sudoers
-
- module status cleaning
- Taille des fichiers gribs sur Neptune 2 vs Neptune 1
Le cas histpos : test de stratégie
-
Ajuster taille fs #770 de mysql
-
Sur Neptune1
- Modifier le dump-history avec --no-create-info
-
~/vlmcode/base/scripts/dump-history.sh
(attention à l'espace disponible, il faut plusieurs Go)
-
Désactiver les logs binaires
-
Créer histpos vide
CREATE TABLE histpos_tmp (
time
bigint(20) DEFAULT NULL,long
double DEFAULT NULL,lat
double DEFAULT NULL,idusers
int(11) NOT NULL DEFAULT '0',race
int(11) DEFAULT NULL, KEY idu_race_time (idusers
,race
,time
) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -
Import données
cd ~/vlmcode/base/scripts scp [email protected]:/home/vlm/vlmcode/base/scripts/vlmdump-history.sql.gz ./ ./importdump.sh vlmdump-history.sql.gz
-
Réactiver les logs binaires
STEP4 : TESTS, TESTS, TESTS
- Test d'import de course depuis testing @Phille @Sbsrouteur
- Test de mails par @pzia
- Test de publication de news à faire par @pzia
- Irc
- Test des outils:
- Frogtools
- QtVlm @maitaivw
- SbsRouteur @sbsrouteur
- MobiVLM (pas sur que ce soit possible)
- Jvlm avec tiles locaux @paparazzia
STEP5 : Bascule à blanc J-1 et préparation
###Bascule à blanc
- ~/sync1.sh : 40"
###Préparation Bascule
- Sur Neptune1 :
- Renommer histpos en histpos2
- Recréer histpos vide
- Exporter histpos2
- Sur Neptune2 :
- Arrêt des binary logs
- Créer histpos2 vide
- Importer les données Neptune1
- Backup des fichiers histpos historiques en local
- Préparation bascule IP & DNS (TTL) @fmicaux & communication IP de l'ex Neptune à sbs & paparazzia
- Préparer les messages utilisateurs
- Neptune1 : modules_status cleaning.
- Release notes
- Brancher la 0.25 et en conséquence le fichier conf_script
STEP6 : BASCULE
###Amont (avant 22h)
- Presync des positions à T-15 min
- Neptune1 : Alterer temporairement
./base/scripts/dump-history.sh
pour histpos2 - Neptune1 :
RENAME TABLE histpos2 to histpos3;
- Neptune1 :
RENAME TABLE histpos to histpos2; CREATE TABLE histpos like histpos2;
-
./sync1.sh
- Neptune1 : Rétablir dump-history.sh pour histpos
- Neptune1 : Alterer temporairement
- Changement des paramètres (réactivation des mails, etc...)
- Arrêter les crons sur NEPTUNE2
-
DELETE FROM histpos;
###Au top !
- Stop les crons sur NEPTUNE1 Début indispo
-
~/sync1.sh
(1min) - Bascule IP (1min)
- (en root)
~/syncroot.sh
(Remise des binary logs pour mysql et mysql restart et apache restart) - Relance des crons Fin indispo
-
RENAME TABLE histpos histposnew; RENAME TABLE histpos2 histpos;
-
INSERT INTO histpos SELECT * FROM histposnew;
###Aval
- Publication news "Changement du serveur terminé" (sur le forum également)
- Annonce sur le forum
- Reboot du serveur NEPTUNE2 @fmicaux
STEP7 : Vérifications
- Vérifier la publication des news
- Vérifier l'import de course la première fois @Phille
- Vérifier les envois de mails
##STEP 8 : The end (J+7)
- Anonce sur le forum
- Fin de Neptune (so long)
##STEP 9 : Bonus
- Installer awstats
- mettre en place les sauvegardes rsync
- Mieux utiliser les fonctions d'hébergement de github (utiliser un cname de dev.v-l-m.org vers leur hébergement)
- Passage en gshhs 2.3.3 @stephpen #772
- Passer en 0.25 pour les gribs #777
- FTR : mettre les scripts de sync dans hosting/sync
- Reprendre les points restants de la doc
- difference php.ini à expertiser (serialize_precision - gd.jpeg_ignore_warning = 0)
- copier les scripts de sync dans sync/hosting?
- Release "Stick Lips Reloaded" sur la branche 0.25