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

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
    • Mail
    • Twitter
    • Facebook
  • 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
  • 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