Archive for Juni, 2010
Facebook – Ein Blick hinter die Kulissen und in das komplexe System
“A Day in the Life of Facebook Operations” bezeichnete Tom Cook, System Engineer von Facebook seinen Vortrag auf der “Velocity 2010″ Er liefert dabei interessante Einblicke in den Aufbau der Server und Services, auf Open-Source Basis.
Da Facebook mittlerweile mehrere 10.000 Server hinter einem gigantischen Load Balancer System im Einsatz hat, ist es eine große Herausforderung diese alle zu Verwalten und auf den aktuellen Stand (Patches, Security Fixes, …) zu halten. Tom Cook erläutert in seinem ca. 40 minütigen Vortrag den grundlegenden Aufbau von Facebook. Hier einige wichtige Fakten und Komponenten aus der Sicht eines Systemadministrators.
Betriebsystem:
Facebook setzt ausschließlich auf Linux. Verwendet wird eine CentOS 5 Version mit einem modifizierten 2.6er Kernel
Datenbank:
Als Datenbank wird MySQL verwendet.
Caching:
HipHop for Php
ist ein SourceCode Transformer, welcher PHP in einen performanceoptimierten und kompilierten C++ Code verwandelt. Enwickelt wird das System von 3 Facebook Engineers auf Open-Source Basis. Durch die Einführung von HipHop wurde die WebServerlast von Facebook um beachtliche 50% Reduziert.
Memcached
Ist ein Open Source Cache-Server der häufig verwendete Abfragen (insbesondere SELECT Statements) vom Datenbankserver im Arbeitsspeicher abspeichert und dadurch Festplattenzugriffe bzw. Datenkbankzugriffe stark reduziert. Memcached hält für Facebook derzeit über 300+ TB live Daten im RAM.
Configuration Management:
CFengine 2.x.x
ist eine zentrale Configurations Management Software um viele (mehrere 10.000) Systeme auf den gleichen Softwarestand zu bringen und zu aktualisieren. Dieser Vorgang wird alle 15 Minuten für ALLE Server ausgeführt. So können zentral über 100 Policies welche einige 1000 Regeln beinhalten innerhalb von 30 Sekunden bei allen Servern auf den neuesten Stand gebracht werden.
Monitoring:
Hierbei setzt man ebenfalls auf bekanntere System wie Ganglia, Nagios und ODS (Operational Data Store),
WebPush:
Das Verteilen von neuen Inhalten, Features und Patches für Facebook.com wird über einen internen BitTorrent Server realisiert. Es dauert so ungefähr eine Minute bis der neue Code für Facebook.com auf mehreren 10.000 Servern verfügbar ist. Folgende Zyklen werden dabei verwendet
1x pro Woche für neue Features
1x pro Tag für Code Änderungen an der Hauptseite
mehrere male am Tag für Bugfixes und Patches
Kompletter Vortrag von Tom Cook:
Gigantisches USB Spaghetti Kabel verschlingt Australien
Eine wirklich tolle Aufhnahme von Google Maps. Ein gigantisches USB Spaghetti Kabel im Südosten Australiens oder ein schlechter Scherz?
Auf den Ersten Blick sehen die Aufnahmen einem USB Kabel wirklich verblüffend ähnlich. Tatsächlich handelt es sich aber um den Bau einer Anlage für Windkraftwerke zur Energiegewinnung. Hier ist der Google Maps Link zur eigenen Überzeugung
Die Kabel sind die Zufahrtswege zu den einzelnen Windrädern…
…und die Stecker werden durch das Fundament der Winräder dargestellt.
(Quelle: gizmodo)
Editor für Crontab – Cronjobs in Debian ändern
Wenn man mit verschiedenen Linux Distributionen arbeitet, merkt man sehr schnell das jedes System seine gewissen Eigenheiten hat. So werden auch unterschiedlichste Editoren zum Bearbeiten der Cronjobs (crontab -e) verwendet. Der Editor lässt sich aber ganz einfach ändern.
Hierzu muss lediglich die Umgebungsvariable “EDITOR” angepasst werden
export EDITOR=/usr/bin/vi
Damit diese Änderung dauerhaft und auch nach einem Reboot wirksam ist, kann die oben genannte Codezeile global in der Datei /etc/profile oder auf Userebene in der entsprechenden ~/.bashrc verwendet werden. Dann kann bei einem erneuten Erstellen eines Cronjobs kein Problem mehr mit dem falschen Editor auftreten.
Es stehen natürlich neben dem vi auch noch viele andere Editoren zur Verfügung, alle zu nennen wäre jetzt ein bisschen viel, darum hier die wichtigsten (Die Pfade beziehen sich auf Debian und können je nach Distribution abweichen)
export EDITOR=/usr/bin/vim
export EDITOR=/usr/bin/nano
export EDITOR=/usr/bin/pico
export EDITOR=/usr/bin/editor
export EDITOR=/usr/bin/joe
Alternativ zur altbewährten Methode kann mit folgendem Befehl auch ein Editor aus einer Liste ausgewählt werden. (Danke an Toberkel für den Tipp)
update-alternatives --config editor
Letzte Beiträge
- QuickTipp: klassischen GNOME Desktop (classic GNOME) unter Ubuntu installieren
- Debian-Ubuntu apt-get: The Following Packages Were Automatically Installed And Are No Longer Required
- Debian 7.0 Wheezy veröffentlicht – Das sind die Neuerungen
- Apache Webserver Directory Listing (Verzeichnisauflistung) deaktivieren / aktivieren
- HowTo: Ubuntu 13.04 (Raring Ringtail) Installation und Upgrade von 12.10 – Desktop + Screenshots








