Numerique/Administration

De mavoix
Aller à : navigation, rechercher

Sauvegardes

  • Suppression des sauvegardes âgées de plus de 30 jours. Le script tourne sur la machine forum.mavoix.info et se nomme prune_old_openstack_images.sh.
#!/bin/bash
source $HOME/mavoix-openrc.sh
numdays=30
stamp1=`date --date "$numdays days ago" '+%s'`
regex="^([0-9]{4}-[0-9]{2}-[0-9]{2}).*$"
openstack image list --private -f value -c Name --limit 1000 |
while read image
do
        if [[ $image =~ $regex ]] ; then
                imagedate=`echo $image | sed -r "s/$regex/\1/"`
                stamp2=`date --date "$imagedate" '+%s'`
                if [[ $stamp1 -ge $stamp2 ]] ; then
                  openstack image delete $image
                fi
        fi
done

Diagnostic d'un incident

Machine indisponible

Redémarrage

  • Si la machine est inaccessible via la console ou via ssh, mais qu'elle répond au ping, lancer un redémarrage logiciel depuis Openstack.
  • Si le redémarrage logiciel ne fonctionne pas, lancer un redémarrage matériel.

Analyse post incident

forum.mavoix.info

L'application Discourse fonctionne depuis un container Docker, voir le script d'installation ici : http://git.dkit.online/dkit/dkit/blob/master/discourse.sh .

Les logs sont accessibles depuis le système hôte à l'emplacement suivant : /var/discourse/shared/standalone/log/ . Attention, au 28/6/2016, le timestamp des logs est en décalage de 2h avec l'heure de l'hôte.

forum.mavoix.info

Symptôme : Le site affiche le message suivant bad gateway error 502

  • Connexion sur ubuntu@forum.mavoix.info (nécessite d'avoir une clef publique présente sur le serveur)
  • df -h : la partition principale est pleine (/home/vda1)

Actions entreprises

  • sudo apt-get autoclean # supprime les paquets présents dans /var/cache/apt/archives
  • sudo apt-get autoremove # supprime les paquets non nécessaires (des anciens noyaux principalement)
  • cd /var/discourse
  • sudo ./launcher cleanup # Nettoyage discourse

www.mavoix.info

Symptôme : Le site affiche le message suivant Error Establishing a Database Connection.

Dépannage d'urgence :

  • Connexion sur ubuntu@www.mavoix.info (nécessite d'avoir une clef publique présente sur le serveur)
  • cd /home/ubuntu/Website
  • sudo docker-compose stop
  • sudo docker-compose start

Analyse

  • Consultation des logs apache : sudo docker logs website_php-apache_1 --since 24h (commande assez longue, car les logs ne sont pas journalisés). Pas d'information supplémentaire.
  • Consultation des logs mysql  : sudo docker logs website_db_1 : message d'arrêt du serveur.
  • Commande dmesg sur l'instance :

Out of memory: Kill process 24611 (mysqld) score 247 or sacrifice child [6588500.836420] Killed process 24611 (mysqld) total-vm:1335020kB, anon-rss:493116kB, file-rss:0kB .</nowiki>

  • Le système a donc choisi de tuer un processus, le docker mysql, pour survivre à un manque de mémoire.
  • df -h : la partition principale est presque pleine.

Actions entreprises

  • Mise à jour de la documentation gouvernance numérique et administration : personnes à contacter, type d'hébergement pour www.mavoix.info
  • Changement d'instance Openstack à chaud (depuis la console d'administration Openstack ovh) : passage de 2 giga à 4 giga pour la ram et de 10 giga à 20 giga pour le disque dur.
  • Mise en place d'une rotation des logs docker en suivant les indications suivantes : https://www.nicolashug.com/developpement/docker/docker-logrotate-gerer-facilement-logs-de-containers
  • Mises à jour des plugins de Wordpress, le Wordpress est quand à lui à jour (mise à jour automatique).
  • Recherche d'outils de statistique de consultation du Wordpress.
  • Mise à jour du monitoring de telle sorte qu'il vérifie que le contenu de la page affiché soit bien le contenu attendu, et non une page d'erreur

www.mavoix.info

Attention: ne jamais faire sudo docker-compose down car cela détruit la base de donnée (voir le container db-storage).

Symptôme : L'accès au site est impossible car le certificat TSL a expiré.

Dépannage d'urgence :

  • Connexion sur ubuntu@www.mavoix.info (nécessite d'avoir une clef publique présente sur le serveur)
  • cd /home/ubuntu/Website
  • sudo rm -rf /home/ubuntu/Website/etc/nginx/certs
  • sudo docker-compose stop nginx-proxy-companion
  • sudo docker-compose start nginx-proxy-companion

Attendre 10mn au moins, la régénération des clefs.

  • sudo reboot

Analyse

Actions entreprises

  • sudo apt-get autoclean # supprime les paquets présents dans /var/cache/apt/archives
  • sudo apt-get autoremove # supprime les paquets non nécessaires (des anciens noyaux principalement) : 3,6 giga libérés.
  • A faire : appliquer le fix suivant : https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion/pull/165 (relance de nginx proxy, lors du renouvellement).

Résurrection d'une sauvegarde

L'idée générale est de rebooter une sauvegarde de machine dans le cas ou la machine originelle est perdue (voir la documentation détaillée). Par exemple pour le wiki:

  • pour savoir de quelle image on dispose : openstack image list | grep 2016-08-27
  • openstack server create --image '2016-06-19-mediawiki' --flavor vps-ssd-1 --wait restore # restore = nom d'hôte attribué à la machine
  • openstack server add security group restore host # pour ouvrir les ports 22/80 etc. usage: openstack server add security group [-h] <server> <group>, le security group host est déja existant
  • openstack server remove security group restore default # pour éviter que trop de ports soient ouverts. usage: openstack server remove security group [-h] <server> <group>
  • ssh sur la machine
  • relancer (le cas échéant) les services docker
  • editer le fichier /etc/hosts pour pointer vers la nouvelle IP
  • modifier le hostname dans /etc/hostname et lancer la commande hostname + nom de la machine
  • vérifier que le service fonctionne
  • modifier l'entrée wiki du DNS avec l'IP de la nouvelle machine
  • attendre la propagation (quelque heures au maximum)

Le site web (machine virtuelle website) requiert une manip supplémentaire: il faut éditer le fichier /etc/bind/db.mavoix.info et y metter l'IP de la nouvelle machine. Cela permet aux containers d'utiliser ce DNS pendant les migrations sans attendre la propagation des DNS réels. C'est pratique aussi pour faire des tests. Mais quand on restaure une sauvegarde ça demande une étape en plus.

Récupération d'un fichier depuis une sauvegarde

L'idée générale est, dans le cas d'une suppression malencontreuse d'un fichier ou d'un dossier sur un serveur en production, de créer un volume à partir d'une image sauvegardée, de rattacher ce volume à l'instance (la machine) concernée et de récupérer le fichier ou le dossier à partir de ce volume.

  • on se connecte au panel horizon https://horizon.cloud.ovh.net/auth/login/
  • on va fabriquer un disque a partir de la sauvegarde, pour cela on se rends dans https://horizon.cloud.ovh.net/project/images/ puis dans le menu déroulant à droite de l'image que l'on souhaite utiliser (celle de la veille par exemple) on clique sur "Créer volume"
  • On patiente durant la création du volume (plus de 10 minutes). On peut vérifier l'avancement dans https://horizon.cloud.ovh.net/project/volumes/
  • A la fin de la création du volume, dans https://horizon.cloud.ovh.net/project/volumes/ je clique sur le menu "Edit Volume" je fais "Attacher volume" et je l'attache a la machine qui m’intéresse, le site m'informe que c'est disponible et le chemin d'accès = [PATH]. Le [PATH] indique le nom complet du volume, y ajouter le numéro de partition pour pouvoir le monter. Exemple : le volume /dev/vdb sera accédé via le [PATH-DE-LA-PARTITION] /dev/vdb1
  • Je me connecte sur la machine concernée et je monte le volume dessus avec la commande suivante: > sudo mount [PATH-DE-LA-PARTITION] /mnt
  • Ensuite je peux faire les manipulation que je veux despui le volume monté vers la machine. Par exemple copier un fichier depuis le volume de sauvegarde monté vers un repertoire de la machine mediawiki (ici pour un fichier du wiki) > cp /mnt/opt/mediawiki/LocalSettings.php /opt/mediawiki/LocalSettings.php
  • Je pense à démonter mon volume de la machine > sudo umount /mnt
  • Puis je vais dans horizon et je détache le volume depuis la page https://horizon.cloud.ovh.net/project/volumes/
  • Je peux ensuite détruire le volume si celui ci ne m'est plus utile.

Augmenter la taille d'une machine

Passage en https du forum en utilisant let's encrypt

  • on se connecte au panel horizon https://horizon.cloud.ovh.net/auth/login/
  • fabrication d'une sauvegarde : menu instance, choisir host (nom du serveur forum) et sélectionner "créer un instantané" : attendre 20 bonnes minutes pour la création d'un instantané de 10Giga.
  • Passage du forum en mode maintenance :

Depuis le panneau d'admin : personnaliser / CSS/HTML / Choisir le style en cours (suffixé d'un *) / Onglet Entête.

Ajouter le code suivant :

<h2 style="color:#FF0000">Maintenance en cours ... Accès limité en lecture seule ...</h2>
<h3 style="color:#FF0000">install du mode sécurisé HTTPS</h3>

et Sauvegarder.

  • Mise en lecture seule du forum :

Depuis le panneau d'admin : Sauvegardes / Activer lecture seule

Depuis le panneau d'admin : Sauvegardes / Desactiver lecture seule

Depuis /var/discourse, executer  :

sudo ./launcher enter app
rails c 
Discourse.disable_readonly_mode
quit
logout 
  • Corriger les liens http referençant l'image de fond depuis l'admin de discourse : personnaliser / CSS/HTML / Choisir le style en cours (suffixé d'un *) / Onglet CSS
  • SSO : Changer l'origine javascript autorisée (URI/URL) depuis la console de gestion google Developper et Facebook Developper : http vers https
  • Gestion du SSO Google

  • Tester le bon fonctionnement de la connexion via Google ou Facebook.

Astuces Wiki

Ajout d'une extension de fichier

Editer le fichier /opt/mediawiki/LocalSettings.php en ajoutant une ligne de type $wgFileExtensions[] dans le même bloc que les lignes existantes.

Exemple :

$wgFileExtensions[] = 'odg';

Compte rendus