Motoriste de vos plateformes et agitateur de séries temporelles

Conception, développement, déploiement et exploitation de vos plateformes, applications et données.

Contactez-nous !

LesFurets.com

automatisation cassandra cassandra-reaper ansible docker jenkins

Contexte

Le comparateur d’assurances LesFurets.com souhaite industrialiser sa plateforme Cassandra et être accompagné dans le maintien en condition opérationnelle de ses plateformes de build, de déploiement et son infrastructure en générale.

Notre réponse

Sur le chantier Cassandra :

  • Elaboration du scénario de migration
  • Packaging de Cassandra 2.x et 3.x
  • Rédaction des rôles Ansible permettant de déployer Cassandra 2.x ou 3.x, ainsi que du rôle Reaper (outil de réparation des données d’un cluster Cassandra)
  • Déploiement de Reaper et mise en place des “repair”
  • Déploiement d’un 4ème datacenter pour permettre d’avoir tout le temps 3 datacenters opérationnels pendant la période de migration

Sur le chantier maintien en condition de la plateforme :

  • Maintien en condition opérationnelle du cluster swarm (mises à jour de Docker, Portainer, Traefik) et extension du cluster (ajout de noeuds)
  • Formation des développeurs à docker, docker-compose et docker/swarm au travers de meetups hebdomadaires
  • Migration des applications déployées sur un socle Ubuntu 14.04 vers Ubuntu 16.04 avec passage sous IaC (Ansible, Jenkins), mise à jour des composants et remise au carré des containers Docker le cas échéant : Nexus, Selenium Grid, applications internes, etc.
  • Mise à jour d’Ansible et maintenance des playbooks (rationalisation, améliorations, etc)
  • POC de test autour de la solution molecule permettant de tester les rôles Ansible
  • Migration de Logmatic vers Datadog Logs, dont repackaging et reconfiguration de Logstash

Bénéfices

  • Expertise sur Docker, Docker Compose, Docker Swarm, Traefik et Kubernetes
  • Expertise sur Ansible
  • Rapidité de montée en compétences sur Cassandra et Reaper
  • Support transverse aux équipes de production et de développement

Ansible, à la rescousse en cas de crash serveur

ansible automatisation crash rto rpo incident

Il y a de cela une dizaine de jours, la partition système d’un serveur d’un de nos clients est passé en lecture seule suite à un problème de consistence sur le disque. Pour les services en cours et ne dépendant pas de fichiers sur cette partition, les services continuaient de fonctionner. Pour les autres, ils étaients hors service ou dans une situation de dsyfonctionnement dès lors qu’ils avaient besoin d’écrire un fichier sur la partition système.

Pour rétablir le service dans les plus brefs délais et investiguer ce problème dans un second temps, nous avons décidé de créer un nouveau serveur, de lui attacher les données et l’IP du serveur hors-service. Cette opération a été grandement facilitée vu que nous utilisons dans ce cas l’offre IAAS de Gandi : en quelques clicks, un nouveau serveur a été provisionné, et les disques contenant les données et les backups ont été attachés au nouveau serveur.

Vient alors Ansible : grâce aux playbooks, préalablement rédigés par nos soins, pour installer l’ensemble des logiciels et le paramétrage associé des serveurs de notre client, le serveur était opérationnel dans les 15 minutes. Quelques tests plus tard, nous pouvions alors migrer l’IP de l’ancien serveur vers le nouveau et rendre le site à nouveau accessible au bout de 30 minutes environ.

Malheureusement, toutes les modifications et quelques actions n’étaient pas encore reportées ou rédigées dans nos playbooks. L’heure suivante a donc consisté à rattrapper ces informations et jouer les actions manquantes. Depuis lors, elles ont été réintégrées dans les playbooks .

Au final, en 1h30 après décision de reconstruire le serveur, le service était totalement rétabli et avec un retour partiel au bout de 30 minutes environ. Si nous avions du rejouer toute l’installation à la main, cela aurait durer bien plus de temps et avec des risques d’erreurs / oublis non négligeables et sans parler du doute persistent : a-t-on bien tout récupéré ?

Un crash serveur est une situation stressante pour tout le monde ; il est agréable de pouvoir compter sur un outil comme Ansible pour garantir l’état final d’un serveur (prédictibilité). Cela apporte une certaine sérénité et permet de rétablir le service au plus vite pour le bien de tous. Au-delà du premier déploiement, cela requiert une certaine hygiène de vie du serveur pour maintenir les playbooks à jour.