New DB Servers
Our Dell PowerEdge 2950 Servers for the new DB Cluster has just arrived and I’m very excited, unpacking them.
Our Dell PowerEdge 2950 Servers for the new DB Cluster has just arrived and I’m very excited, unpacking them.
Maybe you’ve read our short announcement on the tilllate website last week: We were offline for some planned maintenance.
In detail, we moved all servers to a new cage in the datacenter. We like to give you some insight, of what happened after switching off the tilllate webservers. (more…)
We’re currently building up a corporate network for tilllate. This is about having VPN secured connections between our locations (the office, the data center, mobile users), clear splitting of internal and external hosts. We’re realizing this project with strong support of Open Systems which are specialized in this topic.
After weeks of planning and hundreds or versions of the network layout, we could install the first stuff yesterday. The guys from Open Systems pre-configured all the devices and brought them to the data center - where Stefan and I met them to install it.
First step was to get an overview on all the devices and cables. Thank god the fence around our cage was not built yet and we had enough space to distribute everything on the floor and bring it into some order.
After a long day of meetings and other tedious manager work the perfect way to relax is to code. The best is a mini-projects where you see your results after an hour or so. I call these tasks “Plausch-Projekte” (”plah-oosh project” =”fun projects”).
This week my plah-oosh projects were two metric tools for Ganglia. Besides Nagios Ganglia is the main monitoring tool for our cluster. We monitor something like 20 metrics like load, memory, disk usage, network activity.
Ciprian and Stefan recently built a script to monitor apache (bytes/sec, hits/sec, idle processes etc.) via the /server-status interface. Based on their work I hacked two scripts:
ganglia_mysql_metrics.php monitors multiple mysql parameters like queries/sec, slow queries/sec, threads connected:
![]()
ganglia_squid_metrics.php reports regularly about squid metrics: Requests/sec, service time, available file descriptors:
![]()
The scripts are quick and dirty code. Procedural. Not well documented. Does only read the mcast_port from the config file and ignores the rest. But it might be a good base to be used on your cluster too. Just call them every minute via the crontab.
Setup blade servers 40 and 41 via our standardized PXE based automatic installation process - Configure the Memcache extension and deploy it on our cluster - assist at the evaluation of a new VMWare solution - Program a new check for Nagios - Analyze Ganglia graphs - Optimize performance of a complex MySQL query - Give salesperson Raquel an advice on how to use the VPN software provided by Open Systems- Emerge a new PHP version via the portage system of Gentoo
If you’d enjoy doing these activities you should apply for the position of Linux Specialist. Along with our team of 13 developers and engineers you’ll help building Europe’s biggest nightlife website.
“Silvan, das Hinzufügen von Fotos ist schweinelangsam am Weekend! Die Fotografen sind am jammern. Ich bekomme andauernd Anrufe. Mach was!”. So beklagten sich die Regionalmanager in den letzten Wochen.
Unsere Überwachungstool bestätigen die Situation: Wie aus dem Maschinengewehr wird mein Handy von Nagios mit SMS beschossen. Die graue Kurve, welche im Ganglia die Server-Load beschreibt, ist weit über der roten Linie. Moreti, unser Tool, um die Antwortzeit zu messen meldet mehrere Sekunden, um eine tilllate-Seite zu liefern.
Erst vor kurzem sind wir mit unseren Servern von einem halben in ein komplett für uns gemietetes Rack umgezogen (Server-Relocation Teil 1). Das ist nur knapp 2 Monate her und doch mussten wir schon wieder unser ganze Equipment an einen anderen Ort transportieren.
Kurz zur Vorgeschichte. Wir hatten uns damals für das IXEurope (beherbergt auch das Telehouse) in Zürich entschieden, da es einen ungeheur guten Ruf und dementsprechende Bekanntheit erreicht hat. Auch dass alle grossen Carrier ihre Peerings in diesen Gebäuden verwalten hat dafür gesprochen und wir hatten ja im halben Rack durchaus gute Erfahrungen mit dem IX gemacht.
Voller Freue haben wir dann anfangs Jahr unser neues 1/1 Rack bezogen. Von da an haben die Probleme begonnen:
Pro Sekunde werden auf tilllate.com 5000 Abfragen von den Datenbank-Servern beantwortet. Wie können wir diese Last auf 30 Datenbank-Server verteilen? Mit Replikation. Aber auch nach fünf Jahren Erfahrung habe ich dieses Feature noch nicht ganz im Griff.
Auf Datenbank-Ebene besitzt tilllate.com vier Servergruppen mit unterschiedlichen Funktionen (= “horizontale Skalierung”): Werbung, Statistik, Chat und schliesslich der Rest der Website tilllate.com. Werbung, Statistik und Chat kommen mit einem einzelnen Datenbank-Server aus.
Der “Rest” macht 90% der Abfragen aus. Der Rest sind 27 MySQL Datenbank-Server. Auf diesen 27 Server befindet sich eine identische Kopie der Haupt-Datenbank. Damit dies so bleibt, muss jede Änderung der Datenbank (z.B. eine UPDATE-Query) wird über einen definierten Weg auf alle 27 Maschinen repliziert. Wir benutzen hier die Replikations-Features von MySQL.
Oder was passiert wenn viele schöne Zugriffe einem zum aufstocken der Infrastruktur zwingen. Erfreulicherweise hat uns dies ein neues Rack beschert welches wir im Dezember beziehen durften.
Riv, Silvan und Ich (Stefan) machten uns deshalb eines Abends gegen 19:00 Uhr auf den Weg nach Zürich um alle Server vom alten 1/2 Rack ins neue 1/1 Rack zu migrieren. Glücklicherweise war dies im selben Raum zu finden wie schon das alte was uns eine mühsame Schlepperei ersparte und das umstecken des Uplinks zum Routineeingriff werden lies.
Der Plan war dabei wie folgt:
Gross beschreiben möchte und muss ich vermutlich nicht, ich lasse lieber die Bilder für sich sprechen:
Unser altes 1/2 Rack ist ganz schön voll…

Wochenende heisst für mich: Zeit für Plauschprojekte. Für die einen sind Plauschprojekte “Saufen bis zum Morgengrauen”. Für mich ist’s der Vergleich der Performance von memcached mit Cache_Lite. “Memcached natürlich 1000 mal schneller” höre ich sagen? Prüfen wir es doch.
Das Setup ist wie folgt: Unser Modell beinhaltet eine expensivePage.php. Auf einer realen Website wäre dies eine Seite, deren Erzeugung aufwändig ist. Zum Beispiel eine Regionenhomepage von tilllate. Diese Seite braucht 1 Sekunde, um erzeugt zu werden. Mit 10 Regionen gibt es 10 verschiedene Versionen dieser Seite (im folgenden Items genannt).
(more…)
© 2008 tilllate AG - Powered by WordPress