Closed guillett closed 7 years ago
J'ai réalisé des tests pour la redirection via un upstream mais en fait les choses peuvent être simplifiées car il n'y a qu'un serveur dans le upstream.
J'ai donc préparé les fichiers :
/etc/nginx/conf.d/dds.conf_PRE_UPSTREAM_CHANGE
/etc/nginx/conf.d/dds.conf_POST_UPSTREAM_CHANGE
Dont le diff
est le suivant :
44c44
< proxy_pass http://dds/tests;
---
> proxy_pass https://vps.mes-aides.gouv.fr/tests;
66c66
< proxy_pass http://dds;
---
> proxy_pass https://vps.mes-aides.gouv.fr;
Le script de déploiement est donc :
cp -f /etc/nginx/conf.d/dds.conf_POST_UPSTREAM_CHANGE /etc/nginx/conf.d/dds.conf && sudo service nginx restart
Celui de rollback :
cp -f /etc/nginx/conf.d/dds.conf_PRE_UPSTREAM_CHANGE /etc/nginx/conf.d/dds.conf && sudo service nginx restart
@MattiSG cela te semble bon/pertinent ?
👍
J'ai en tête ces DBs :
/var/lib/mongodb/dds.*
/home/mongodb/data/dds.*
@MattiSG Penses-tu à d'autres ? Faut-il mettre en commun avec les autres DBs (/home/mongodb/data/mes-aides-aah/rennes) ?
Celle du VPS si elle est utilisée. Oui, intégrer mes-aides-aah
me semblerait pertinent. rennes
a été il me semble déjà intégrée.
Etant donné le problème de dimensionnement du VPS (espace disque) et comme suggéré par @MattiSG , j'ai limité l'exportation des situations à celles utilisées par les tests.
J'ai utilisé le script suivant largement inspiré du script d'importation des tests :
USER=root
DATABASE=dds
NOW=$(date +"%F-%H-%M-%S")
#NOW=2017-05-04-10-06-03 # Hardcoded value used to safely repeat parts of the script
DISTANT_DUMP_FOLDER="~/dumps/dump-$NOW"
LOCAL_DUMP_FOLDER='./dump-migration'
DEST_DUMP_FOLDER="/var/tmp"/$(basename $DISTANT_DUMP_FOLDER)
echo $NOW
ssh $USER@mes-aides.gouv.fr "mongodump --db $DATABASE && mongodump --db dds --collection situations --query '{status:\"test\"}' && mkdir -p `dirname $DISTANT_DUMP_FOLDER` && mv dump $DISTANT_DUMP_FOLDER/ && gzip -rv $DISTANT_DUMP_FOLDER"
scp -r $USER@mes-aides.gouv.fr:$DISTANT_DUMP_FOLDER/$DATABASE $LOCAL_DUMP_FOLDER
ssh $USER@vps274040.ovh.net "mkdir -p $DEST_DUMP_FOLDER"
scp -r $LOCAL_DUMP_FOLDER/* $USER@vps274040.ovh.net:$DEST_DUMP_FOLDER/
ssh $USER@vps274040.ovh.net "gunzip -r $DEST_DUMP_FOLDER && mongorestore --db $DATABASE $DEST_DUMP_FOLDER"
Script utilisé
USER=root
DATABASE=dds
for iter in 0 1 2 3 4 5 6 7 8
do
NOW=$(date +"%F-%H-%M-%S")
DISTANT_DUMP_FOLDER="~/dumps/dump-$NOW"
LOCAL_DUMP_FOLDER="./dump-migration-$NOW"
DEST_DUMP_FOLDER="/var/tmp"/$(basename $DISTANT_DUMP_FOLDER)
SKIP=$(expr $iter \* 100000)
HIGH=$(ssh $USER@mes-aides.gouv.fr "mongo dds --eval \"db.situations.find().skip($SKIP).limit(1).sort({dateDeValeur:1})[0]._id\" --quiet")
if [[ $? -ne 0 ]]
then
HIGH=''
fi
echo $HIGH
if [ $LOW ]
then
echo now: $NOW - iter: $iter - high: $HIGH - low: $LOW
if [ $HIGH ]
then
QUERY="{_id: {\$gte: $LOW, \$lte: $HIGH}}"
else
QUERY="{_id: {\$gte: $LOW}}"
fi
echo $QUERY
ssh $USER@mes-aides.gouv.fr "mongodump --db dds --collection situations --query '$QUERY' && mkdir -p `dirname $DISTANT_DUMP_FOLDER` && mv dump $DISTANT_DUMP_FOLDER/ && gzip -rv $DISTANT_DUMP_FOLDER" &&
scp -r $USER@mes-aides.gouv.fr:$DISTANT_DUMP_FOLDER/$DATABASE $LOCAL_DUMP_FOLDER &&
ssh $USER@vps274040.ovh.net "mkdir -p $DEST_DUMP_FOLDER" &&
scp -r $LOCAL_DUMP_FOLDER/* $USER@vps274040.ovh.net:$DEST_DUMP_FOLDER/ &&
ssh $USER@vps274040.ovh.net "gunzip -r $DEST_DUMP_FOLDER && mongorestore --db $DATABASE $DEST_DUMP_FOLDER && rm -fr $DEST_DUMP_FOLDER"
fi
LOW=$HIGH
done
Pas possible avec le VPS de 10Go. Revert vers le serveur dédié et extraction des données dans la DB du VPS.
Pas de problème majeure
Specs du VPS actuel sous-dimensionnées
RAM usage 98%
10Go d'espace disque limitant
Certains usagers ont essayé de simuler des situations absentes de la DB à cause de la migration partielle (seules les situations de test ayant été importées). C'est un "problème" plus large que cela cf. https://github.com/sgmap/mes-aides-ui/issues/548.
@MattiSG @fpagnoux Puis-je considérer que mes-aides-aah et mes-aides-rennes ne sont plus utilisées/alimentées ?
Je souhaite tirer un trait et considérer qu'une fois les migrations vers la base de donnée principale faites, les fichiers des base de données importées peuvent être supprimés.
@MattiSG Peux-on imaginer mes-aides sur un VPS avec des specs acceptables, à la place du serveur dédié ?
Voici les possibilités données par OVH :
J'ai importé hier soir les base de données /var/lib/mongodb/*
.
{ "_id" : ObjectId("573acf0f67831ca264e93d31"), "scenario" : { "situationId" : "573acc4e67831ca264e93d13" }, "state" : "unclaimed" }
{ "_id" : ObjectId("5783568267831ca264e93d3e"), "scenario" : { "situationId" : "5783561c67831ca264e93d3b" }, "state" : "unclaimed" }
{ "_id" : ObjectId("579a615367831ca264e93d75"), "scenario" : { "situationId" : "579a610567831ca264e93d5a" }, "state" : "unclaimed" }
{ "_id" : ObjectId("579b27b367831ca264e93d7e"), "scenario" : { "situationId" : "579b27af67831ca264e93d7c" }, "state" : "unclaimed" }
{ "_id" : ObjectId("57a88c2167831ca264e93da6"), "scenario" : { "situationId" : "57a88b8367831ca264e93d8b" }, "state" : "unclaimed" }
{ "_id" : ObjectId("582b06f467831ca264e93def"), "scenario" : { "situationId" : "582b06e667831ca264e93de5" }, "state" : "validated" }
{ "_id" : ObjectId("582b0cb067831ca264e93e2b"), "scenario" : { "situationId" : "582b0c8e67831ca264e93e1b" }, "state" : "unclaimed" }
{ "_id" : ObjectId("582b0d0167831ca264e93e3a"), "scenario" : { "situationId" : "582b0ce367831ca264e93e36" }, "state" : "validated" }
{ "_id" : ObjectId("58bd27044aa60a680a741e7a"), "scenario" : { "situationId" : "58bd260d4aa60a680a741e68" }, "state" : "validated" }
{ "_id" : ObjectId("582b113667831ca264e93e72"), "scenario" : { "situationId" : "582b111867831ca264e93e6e" }, "state" : "validated" }
{ "_id" : ObjectId("58bd2b774aa60a680a741ea2"), "scenario" : { "situationId" : "58bd2b214aa60a680a741e97" }, "state" : "validated" }
{ "_id" : ObjectId("58bd2e7e4aa60a680a741ec0"), "scenario" : { "situationId" : "58bd2de64aa60a680a741eb4" }, "state" : "validated" }
{ "_id" : ObjectId("58bd31f84aa60a680a741ef3"), "scenario" : { "situationId" : "58bd31944aa60a680a741ee3" }, "state" : "validated" }
VPS avec des specs acceptables, à la place du serveur dédié ?
Absolument, mais gardons une marge pour supporter un pic ×10.
Puis-je considérer que mes-aides-aah et mes-aides-rennes ne sont plus utilisées/alimentées ?
Ok pour Rennes. Pour l'AAH, le dernier test date du 6 mars, je pense que c'est bon. On est bien d'accord que les tests existant seront migrés et pas supprimés ? Il y aura peut être un coup de migration à faire pour ces tests d'aileurs.
Oui bien sûr, pas de suppressions mais des migrations !
J'ai installé nvm sur le serveur dédié pour tester le passage en Node V6.
La commande suivante permet d'utiliser NVM dans les scripts de lancement de services :
sed --in-place 's/exec node server/exec bash -c \x27source \/home\/deploy\/.nvm\/nvm.sh \&\& exec node server\x27/' *.conf
L'idée est de modifier la version de Node par défaut en même temps que mes-aides-ui est déployé.
root@sgmap1:~> diff /etc/nginx/conf.d/dds.conf_PRE_WELL_KNOWN_CHANGE /etc/nginx/conf.d/dds.conf_POST_WELL_KNOWN_CHANGE
15c15,23
< return 301 https://mes-aides.gouv.fr$request_uri;
---
>
> location /.well-known {
> proxy_pass http://vps.mes-aides.gouv.fr;
> proxy_redirect off;
> }
>
> location / {
> return 301 https://mes-aides.gouv.fr$request_uri;
> }
Le script de déploiement est donc :
cp -f /etc/nginx/conf.d/dds.conf_POST_WELL_KNOWN_CHANGE /etc/nginx/conf.d/dds.conf && sudo service nginx restart
Celui de rollback :
cp -f /etc/nginx/conf.d/dds.conf_PRE_WELL_KNOWN_CHANGE /etc/nginx/conf.d/dds.conf && sudo service nginx restart
@MattiSG cela te semble bon/pertinent ?
Diff de la zone DNS pre/post
Use VPS IP for root item and VPS name for everything else.
6c6
< IN A 37.187.147.133
---
> IN A 51.255.164.228
20c20
< monitor IN A 37.187.147.133
---
> monitor IN CNAME vps274040.ovh.net.
24c24
< simuler IN A 37.187.147.133
---
> simuler IN CNAME vps274040.ovh.net.
31c31
< www.simuler 60 IN TXT "4|https://simuler.mes-aides.gouv.fr"
---
> www.simuler 60 IN TXT "4|http://simuler.mes-aides.gouv.fr"
Note: Redirection de www.simuler vers root.
root@sgmap1:~# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 20G 15G 3.5G 82% /
devtmpfs 32G 4.0K 32G 1% /dev
none 4.0K 0 4.0K 0% /sys/fs/cgroup
none 6.3G 940K 6.3G 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 32G 0 32G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/md3 1.8T 47G 1.7T 3% /home
Je déclare cet issue officieusement fermé 💃
et SetCronJobsur le VPSRécupération des données Let's Encrypt du serveur dédié sur une tierce machineCréation d'une image du serveur dédié actuel (?)Réinitialisation du VPS pour servir directement le domaine mes-aides.gouv.frRéinitialisation de baseCopie manuelle des données Let's EncryptActivation du SSLRelance du provisioningCopie légère de la DBMise à jour du DNS pour servir en production en directmain
car l'image utilisée sur le serveur dédié n'a pas l'utilisateurubuntu
Utilisation des données sauvegardées de Let's EncryptRécupération des données Let's Encrypt du serveur dédié