Pour gérer vos consentements :
Categories: Projets

Gestion de serveurs : comment LinkedIn est passé à l’échelle

Comment éviter les échecs en cas d’indisponibilité de la console IPMI ? LinkedIn travaille sur des options de contournement dans le cadre de son approche « Metal as a Service » (MaaS).

Celle-ci gouverne aujourd’hui la gestion des serveurs sur site de l’entreprise. Une tâche désormais dévolue aux SRE, et non plus à l’équipe d’ingénieurs de production.

Avant MaaS, Jira était le centre de gravité. Les démarches de mise à jour des serveurs passaient par des tickets… et donc une délégation aux ingés en question. Cela induisait des temps de latence autant pour isoler les problèmes que pour les traiter.

Donner la main aux SRE a impliqué de leur fournir un outil auquel ils pourraient accéder directement. Il en existait bien un, mais l’activation était manuelle et supposait des prérequis. Une solution était d’en exposer les fonctionnalités (upgrade, redémarrage, effacement de disque, décommissionnement…) par API. LinkedIn souhaitait par ailleurs introduire un traitement en lots.

Il a été décidé de donner accès à l’API via une application Flask gérée avec systemd, Active Directory assurant l’association et l’authentification des utilisateurs. On a alors mis en place divers points de terminaison pour, entre autres, obtenir des statistiques sur l’exécution des requêtes, annuler des lots et évaluer le nombre d’upgrades en cours sur l’ensemble du parc. On y a ajouté une couche d’alerting sur la base d’un outil maison (Iris) associé à un bus interne évitant de passer systématiquement par l’API.

Authentification, redondance, cohérence… Les limites du MVP

À l’origine, le déploiement était monoserveur, avec une base PostgreSQL et un cache Redis. Les échanges se faisaient sur HTTP. Les requêtes validées redescendaient vers l’outil AutoBuild, qui pouvait réaliser les opérations demandées.

Effectuer ces opérations exigeait les authentifiants adéquats. Solution retenue : les placer dans un magasin GPG interne sur lequel un ingénieur devait s’identifier à chaque redémarrage du service.

Dans un tel déploiement, les workers fonctionnent en tandem sans partager de mémoire ni de connexions à la base SQL. Il est d’autant plus délicat d’assurer la cohérence des données pour que soient correctement détectés les chevauchements de requêtes (LinkedIn avait, par exemple, ajouté un contrôle invalidant un lot si au moins un des hôtes se trouvait déjà dans un autre batch).

Dans ce contexte, MaaS n’a pu, initialement, traiter qu’une requête à la fois, avec un délai de 2 minutes entre chacune. La question du HTTP restait à résoudre ; la gestion des authentifiants, à améliorer. La disponibilité aussi : à ce stade, pas de redondance, aussi bien au niveau global qu’au niveau des dépendances.

Kafka, KMS interne, MySQL managé : les choix de LinkedIn

Dans les grandes lignes, LinkedIn a opté pour un découplage de la détection des chevauchements. Il a levé les limites de requêtes sur l’API et instauré une file d’attente reposant sur Kafka.

Pour assurer une redondance en actif-actif entre plusieurs datacenters, on a choisi une conception de type mutex. Avec un datastore relationnel comme « source de vérité » et un verrouillage au niveau des lignes pour garantir l’isolation.

Pour équilibrer le trafic, on a envisagé HAProxy… puis écarté l’option, qui aurait requis de déployer des nœuds supplémentaires. On n’a pas non plus retenu le combo « IP virtuelle + ucarp », la version expérimentée exigeant que tous les hôtes rattachés à l’IP soient sur le même sous-réseau. L’élu fut finalement un service interne de proxy : DNSDisco.

En parallèle, les authentifiants ont été migrés vers un KMS interne, avec une ACL et une interface REST, ouvrant la voie à des déploiements « en un clic ». LinkedIn a en outre activé mTLS en complément à l’authentification Active Directory.

Illustration principale © itchaznong – Adobe Stock

Recent Posts

Thomas Gourand, nouveau Directeur Général de Snowflake en France

Thomas Gourand est nommé Directeur Général pour la France. Il est chargé du développement de…

52 minutes ago

Accord Microsoft-CISPE : comment Google a tenté la dissuasion

Pour dissuader le CISPE d'un accord avec Microsoft, Google aurait mis près de 500 M€…

56 minutes ago

Vers des mises à jour cumulatives intermédiaires pour Windows

Pour réduire la taille des mises à jour de Windows, Microsoft va mettre en place…

2 heures ago

RH, finances, stratégie… Les complexités de la Dinum

De l'organisation administrative à la construction budgétaire, la Cour des comptes pointe le fonctionnement complexe…

21 heures ago

SpreadSheetLLM ou la promesse d’une GenAI plus à l’aise avec Excel

Sous la bannière SpreadSheetLLM, Microsoft propose un framework destiné à optimiser le traitement des feuilles…

22 heures ago

Comment AT&T a payé une rançon pour le vol de ses données

Selon le magazine Wired, AT&T aurait payé près de 400 000 $ à un pirate…

24 heures ago