Skip to main content

Facebook verwendet einen erfahrenen Chef, um die Server köcheln zu lassen

Wenn es um den reibungslosen Betrieb tausender Server geht, setzt Facebook auf den Open-Source-Konfigurationsmanager von Chef, der leicht modifiziert wurde, um die riesige Infrastruktur des Social-Networking-Riesen zu bewältigen.

"Chef's größter Vorteil für uns ist sein Flexibilität ", sagte Phil Dibowitz, ein Systemingenieur von Facebook.

Chef ist einer von mehreren Open-Source-Tools für das Konfigurationsmanagement, die in den letzten Jahren an Popularität gewonnen haben. Da Rechenzentren immer größer werden, versuchen Unternehmen, Routineoperationen für die Bereitstellung und Aktualisierung von Servern, Switches, Betriebssystemen, Datenbanken und anderen Komponenten zu automatisieren. Die Erfahrung von Facebook bei der Verwaltung seiner Infrastruktur kann auch für andere Organisationen hilfreich sein. Facebook wollte "einen neuen Weg, um seine Systeme zu verwalten", sagte Dibowitz. Obwohl Facebook nicht die Gesamtzahl der Server angibt, die es betreibt, schätzen Branchenbeobachter, dass es zumindest in den Zehntausenden liegen könnte. Überraschenderweise hat das Unternehmen nur eine Handvoll Mitarbeiter - vier in letzter Zeit - für das Core-Infrastruktur-Team, zu dem Dibowitz gehört. Vor der Verwendung von Chef verwendete Facebook ein anderes Open-Source-Konfigurationsverwaltungspaket namens CFEngine. Der Einsatz wurde jedoch zunehmend unhandlich. Bei Verwendung von CFEngine Version 2 kam es bei Facebook zu einer schnellen und unkontrollierten Verbreitung von Systemsteuerungsdateien. Mit CFEngine konnten Benutzer eine Konfigurationsmanagementdatei nicht direkt bearbeiten. Jedes Mal, wenn Operationsingenieure Änderungen an einem System vornehmen mussten, kopierten sie eine ähnliche Systemdatei, nahmen die erforderlichen Änderungen vor und übergaben die Datei anschließend an CFEngine. "Dabei fügten sie ein paar hundert Linien von abgestandener Konfiguration hinzu", sagte Dibowitz. Aus diesem Grund kannte das Infrastrukturteam nicht alle möglichen Konfigurationspermutationen, die es zur Verfügung hatte, oder auch nicht, welche der Konfigurationseinstellungen veraltet waren. "Es wurde wirklich untragbar", sagte Dibowitz. Um nach einem neuen Open-Source-Konfigurationsmanagementsystem zu suchen, führte das Team eine Reihe von Tests durch, die die von Ticketmaster entwickelte Version von Chef, Puppet und Spine verglichen.

[Lesen Sie weiter: Die besten TV-Streaming-Dienste]

Küchenchef am besten aus einer Reihe von Gründen die Rechnung, Dibowitz erklärt.

Chef bietet große Flexibilität beim Schreiben von Konfigurationsänderungen, auch dank der Ruby-basierten Programmiersprache, die für Administratoren und Ingenieure leicht zu erlernen ist.

"Es gibt keinen einschränkenden Faktor . Sie müssen nicht in der domänenspezifischen Sprache [DSL] sein, die Ihnen die CFEngine oder Puppet gibt ", sagte Dibowitz. "Von da an hatten wir viel Kraft, um das zu tun, was wir wollten."

Chefkoch bot eine Reihe weiterer Vorteile an. Es könnte Einstellungen auf einer viel detaillierteren Ebene verwalten. Es bot auch mehr Flexibilität bei der Verwaltung der Konfigurationsdateien selbst, sagte Dibowitz.

Insbesondere bietet Chef die Möglichkeit, eine Konfigurationsdatei für einen bestimmten Benutzer zu ändern.

"Die Datenbankadministratoren, die Web-Foundation-Leute, die Cache-Leute - all diese Leute können nur ein bisschen Code für die Einstellungen schreiben, die ihnen wichtig sind, und müssen sich um nichts anderes kümmern", sagte Dibowitz.

Wenn MySQL-Administratoren beispielsweise mehr Speicher für eine Datenbank benötigen, können sie diese Anforderung einfach in Chef eingeben. Jede Änderung an einer Konfigurationsdatei wird dann innerhalb von Minuten auf Facebook verteilt.

"Wenn Sie etwas ändern, geht es in 30 Minuten oder weniger über die ganze Welt", sagte Dibowitz.

Diese Kontrolle wird Geschäftsingenieuren gewährt und hilft wiederum dem Kernteam der Infrastruktur. "Dadurch können wir viel mehr mit weniger Menschen arbeiten", sagte Dibowitz.

Facebook musste jedoch ändern, wie Chef veraltete Konfigurationsänderungen verarbeitet. Die Software bietet keine einfache Möglichkeit, Änderungen automatisch zu löschen, wenn sie nicht mehr benötigt werden. "Das ist keine angenehme Sache, wenn Sie in der Größenordnung von Hunderttausenden von Systemen sind", sagte Dibowitz.

Normalerweise verwenden Unternehmen Koch, indem sie ihre eigenen "Kochbücher" oder eine Liste von Konfigurationsänderungen erstellen, die Chef dann gilt für ein System.

Facebook ging jedoch einen Schritt weiter. Die Ingenieure des Unternehmens entwickelten eine Reihe von Vorlagen, um die Standardwerte in jeder Konfigurationsdatei zu definieren und einen numerischen Hashwert zu berechnen, der der ursprünglichen Vorlage entspricht.

Jedes Mal, wenn Chef eine Konfigurationsdatei ausführt, kann er den Hash-Wert verwenden, um alle Einträge zu löschen, die als nicht mehr benötigt gekennzeichnet wurden.

Es ist eine ungewöhnliche Art, Chef zu verwenden, gab Dibowitz zu. Diese Art der Zusammenarbeit mit Chef erfordert jedoch keine zusätzlichen Werkzeuge. "Das ist alles, was in Chef integriert ist, wir verwenden es nur anders", sagte er.

Das Unternehmen hat Chefs für die Verwaltung aller seiner Server eingerichtet und ist dabei, andere Software und Hardware auf Chefkoch zu migrieren naja.

Facebook hat auch einige der vorgenommenen Code-Änderungen an die Firma zurückgeschickt, die die Chef-Code-Basis verwaltet, die jetzt auch Chef heißt, nachdem sie im Dezember ihren Namen von Opscode geändert hat.

Die Entwickler haben auch einige zusätzliche Open-Source-Utilities für Chef geschrieben, von denen einige auf GitHub veröffentlicht wurden. Ein solches Tool heißt "Lebensmittellieferung", das es mehreren Chef-Clustern ermöglicht, ihre Kochbücher synchron zu halten. Als Resultat des Codes auf GitHub haben andere zusätzliche Änderungen zurück zu Facebook beigetragen.

Vielleicht am wichtigsten für Facebook, Chef ermöglicht Systemmanagern jedoch, größere Kontrolle über ihre eigenen Konfigurationen zu haben, ein Ansatz, den Dibowitz zugegeben hat, hat einiges angezogen Kritik, die ihm nichts ausmacht

"Unsere Aufgabe bei Facebook ist es, unseren Ingenieuren aus dem Weg zu gehen und sie ihre Arbeit machen zu lassen", sagte Dibowitz. "Unsere Aufgabe besteht nicht nur darin, diese Systeme zuverlässig zu machen, sondern auch jedem den nötigen Zugang zu geben, damit sie ihre Arbeit erledigen können."