3. Vorstellung Unternehmen
XING ist das soziale Netzwerk für
berufliche Kontakte
Rund 13 Millionen Mitglieder
weltweit nutzen die Plattform für
Geschäft, Job und Karriere,
davon über 6 Millionen im
deutschsprachigen Raum (Stand:
Dezember 2012)
Mitglieder tauschen sich online in
rund 50.000 Fachgruppen aus
und treffen sich persönlich auf
XING Events.
4. Vorstellung Person
Falk Stern
34 Jahre alt
Teamleiter Netzwerk bei XING
Schwerpunkte in Netzwerk und Infrastruktur
4,5 Jahre bei einem Outsourcing Dienstleister mit eigenem RZ tätig
2,5 Jahre bei einem Hamburger ISP tätig, Housing / Internet Access
3,5 Jahre bei einer (damals) Hamburger Internetfirma
“We reject kings, presidents and voting. We believe in
rough consensus and running code.” - D. Clark
7. Motivation
• Umzug
• Grüne Wiese
• Neue Hostnamen
• Neue IP Adressen
• Neue Verkabelung
• Neue Dokumentation!
8. Zahlen, Fakten
2 Standorte
Je 40 Racks
580 physikalische Server
490 virtuelle Maschinen im Produktionsbetrieb
280 virtuelle Maschinen für Entwickler
5900 Netzwerkports
3840 Stromanschlüsse
15 Kilometer Netzwerk Kabel
9. Welche Tools benutzen wir
• Racktables 0.20.3 – mit eigenen Anpassungen
• Partkeepr nightly
• GIT / SVN
• Jenkins
10. RackTables
RackTables ist 2006 aus der Not heraus entstanden, ein bestehendes
DataCenter dokumentieren zu müssen.
Open Source unter GPL verfügbar
Typische LAMP Anwendung – Linux / Apache / MySQL / PHP
Unser „Single Point of Truth“
Eigene Anpassungen:
• Ticketsystem
• API - Wird von uns veröffentlicht
http://www.racktables.org/
11. PartKeepr
Wurde vom RaumZeitLabor, einem Hackerspace in Mannheim
entwickelt
Open Source unter GPL verfügbar
Ursprünglich zur Verwaltung von elektronischen Bauteilen
Was fehlte?
• Keine LDAP Authentifizierung - Wird von uns veröffentlicht
http://partkeepr.org/
13. Schrankaufbau
• 46 HE
• 2 Switche für Produktiv Netzwerk
• 1 Switch für iLO/Management
• 2 PDUs mit 21 C13 und 3 C19 Buchsen
• PDU Leisten hinten seitlich eingebaut
• 40 HE netto übrig
• Platz für 18 Server zu 2 HE
15. Kabelverwaltung
Jedes Kabelende hat ein
eindeutiges Label
Labeldruck mit eigenem Drucker
Drucker & Laptop für SmartHands
und Lieferanten zugänglich
Export aus RackTables per CSV
26. Serververwaltung
• Erstellung Laufzettel
• Ausdruck der Racktables Seite
• Vorbereitung Kabellabel
• Hochladen der CSV Datei
• Starke Einbindung des Lieferanten nötig, funktioniert nicht mit
wechselnden Anbietern!
27. Ablauf Einbau
• Lieferant bekommt Einbauanweisung
• Baut Server ein
• Verkabelt Server an Hand von Einbauanweisung und Kabellabeln
• Schaltet Server nach erfolgreichem Einbau an
• Server bootet konfiguriertes Installationssystem
• Bootserver wird aus Racktables konfiguriert
30. VM Management
Produktive VMs werden in Racktables angelegt
Noch manueller Workflow, wird automatisiert
Ziel für dieses Jahr
Automatische Erstellung von Virtuellen Maschinen
31. Generierung DNS/DHCP
Include Dateien werden durch ein Ruby Skript generiert
(RackObject.send(datacenter).server +
RackObject.send(datacenter).vm +
RackObject.send(datacenter).pdus).each do |server|
DNS und DHCP haben ein eigenes GIT Repository
• Änderungen sind nachvollziehbar
• Nach einem git push
• Syntaxprüfung
• Upload & Neustart der Dienste
33. Prüfung Switchkonfiguration
• Switchkonfigurationen werden mit einem Skript gegen die
Konfiguration aus RANCID geprüft.
• „Soll“ Daten kommen aus Racktables
• Eigenes Perlmodul, das die API abfragt
• 109 Zeilen Perl inklusive Ausgaben
35. Prüfung Switchkonfiguration
Beispiele API Programmierung
VLANs abfragen
my $vlans_in_domain =
Xing::Admin::Racktables::get( 'vlan' => { 'domain' => $dc});
Objekt Informationen holen
for my $single_vlan (@$vlans_in_domain) {
my $range = $single_vlan->networks->[0]->{"range"}->{"ip"} .
$single_vlan->networks->[0]->{"range"}->{"prefixlen"}
36. Prüfung Switchkonfiguration
Server abfragen
my $allserver = Xing::Admin::Racktables::get( 'object' =>
{ 'type' => 'server', 'rack' => { 'row' => $rack_row } } );
Objekt Informationen holen
foreach my $server (@$allserver) {
my $server_name = $server->name;
if (defined($server->ips->{'bond0'})) {
$server_vlan = getVlanForIP($server->ips->
{'bond0'}->address->ip);
…
37. Konfiguration PDU
Konfiguration wird über Jenkins alle halbe Stunde generiert
Avocent PDUs ziehen sich bei Ablauf ihres DHCP Leases eine
Konfiguration vom TFTP Server
cd /power_management/pdus/10-15-c9P0_1/settings/
outlets/19
batch_mode
set name=riak-10.db.fra1
set post_on_delay_(seconds)=0.5
submit
38. Konfiguration Monitoring
Shinken Host Konfiguration wird
durch Jenkins automatisch erstellt
Services werden anhand von Tags
im Racktables zugeordnet
39. Genhostlist
Perlskript das automatisch erstellt wird
Ausgabe von Hostnamen anhand
von RackTables Tags
$ ./genhostlist.pl '$fra1 -a $app -a $perl'
perl-1.app.fra1.xing.com
perl-2.app.fra1.xing.com
perl-3.app.fra1.xing.com
...
42. PartKeepr
• Jeder muß entnommene Teile eintragen
• Dienstleister muß entnommene Teile melden
• Wer sich nicht dran hält, hat die nächste Inventur gewonnen
43. Zusammenfassung
• Datacenter Management ist mit OpenSource Tools möglich
• Erfordert Anpassungen an die eigenen Prozesse
• Aber: Welche Software braucht das nicht?
• Programmierkenntnisse helfen
• (fast) alles ist automatisierbar!
• Dokumentation hilft und macht sicherer.