CérénIT

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.

Le Blog

Nous partageons ici notre veille et nos réflexions

Nuage de tags

docker kubernetes elasticsearch kafka postgres ansible grafana mysql tick influxdb python sécurité aws traefik chronograf cloud redis swarm cassandra hashicorp microservice spark terraform test angularjs confluent container graphql javascript rancher serverless stream windows api architecture arm cncf csp devops docker-compose documentation elastic hpkp java kapacitor kibana lambda lean licence log microsoft npm opensource orientdb rest rethinkdb reverse-proxy service-mesh sql ssh agile azure bash big-data certificat cli cluster cookie dns fluxlang gcp gdpr git grav hsts https hypriot iac istio json ksql lets-encrypt linux mobile monitoring nginx php prometheus redhat replication rsyslog scale solr systemd telegraf timescaledb vault vue.js wagtail yarn accessibilité akka alerte amazon-emr anonymisation apm ara automatisation bastion beam beat bilan bounded-context branche brigade browser buildkit cdc certificats checklist chrome cloud-init cloud-storage cockroachdb code codeurs-en-seine confluence consul containerd continous-delivery coreos cors cqrs crash cron crontab csrf css curl cérénit d3.js daemonset dashboard data-pipelining dataviz date ddd debezium debian desktop devoxx distributed-systems dive docker-app dokcer draft drop-in ebs ec2 edge elassandra electron elk engineering etcd event-sourcing facebook falcor feature-policy feed filebeat firebase firefox fish flash flask fleet fluentd flux foundation framework frontend fullstack github glacier google grid géospatial hacker hadoop hdfs header helm html html5 http http/3 hue ia iaac ibm immutable incident index infrastructure-as-code ingénierie inspec jq jquery jwt k8s kubeadm laravel liste-de-diffusion load-balancer logstatsh loi machine-learning mailing-list management mariadb message metallb micro-service molecule mot-de-passe multi-cloud médecine newsletter nomad nosql null openmetrics openshit openssh openweb over-engineering ovh packaging password performance perspective pip portainer publicité push queue quic raml react reaper reindex reinvent responsive revocation revue-de-code rkt rolespec root rpi rpo rto rwd s3 scaleway search select serverless-architecture service-worker sha1 shell shipyard société spinnaker sre sri ssl statistique superset sympa syslog-ng test-unitaire tiers timer timezone tls training travail ubuntu unikernel unit ux vie-privée virtualbox virtualenv vm vnc voxxeddays vpc

Syndication

Atom