0251 / 590 837 15
info@a-coding-project.de

Webserver aufteilen – Womit starten?

In der Regel freuen wir uns, wenn die Seite guten Traffic bekommt. Doch einem gefällt das leider nicht: Dem Webserver. Er hat mehr zu tun und braucht dringend eine Entlastung. Also schenken wir ihm doch einen neuen Kollegen. Die Frage ist nur: Was machen wir auf welchen Server?

Server-Prinzip á la Google

Google ist bekannt für seine guten Serverinnovationen. Statt wenige Großrechner zu nutzen, haben die Google-Macher von Anfang an auf billigere Standardrechner gesetzt. Dies ist wirklich günstiger, da der Preis von Hardware leistungsmäßig exponentiell ansteigt. Außerdem wird mit Hardwarefehlern gerechnet, so dass ein Rechner schnell ausgetauscht ist, ohne Downtime.

Bei Google sieht das zum Beispiel so aus:

Ein solches Rechenzentrum kann sich natürlich nicht jeder leisten. Ich denke auch, dass die wenigsten von euch es werden brauchen 😉 Allerdings ist die Theorie dahinter ganz interessant. Fällt ein Rechner aus, tritt ein anderer seinen Dienst an.

Datenbank auslagern

Eine der performancelastigsten Aufgaben in einer Webanwendung ist die Datenbank. Sie beinhaltet sehr viele Daten und muss komplexe Anfragen überstehen.

Außerdem kann die Datenbank am leichtesten ausgelagert werden. Schnell kopieren, die Verbindungsdaten ändern und fertig ist sie.

Wenn die Datenbank zu groß ist kann man sie später auf mehrere Server aufteilen. Oder aber man nutzt Storage Storage Engines die dies automatisch machen.

Bilder und Videos auslagern

Bilder und Videos nehmen sehr viel Speicherplatz in Anspruch. Sie sollten am besten an einem Server mit guter Anbindung, um auch schnell beim User zu sein. Der Webserver muss hierfür auch keine PHP-Scripte ausführen können. Ein kleinerer Webserver sorgt natürlich für mehr Performance.

Man kann die Dateien auch in die Cloud auslagern. Der Vorteil ist hier, dass man sich keine Sorgen um die Skalierung machen muss. Auch Performance und Preis sind relativ gut. Der einzige Nachteil ist, dass man nicht genau vorhersagen kann, wie viel man letztendlich Zahlen muss. An einem trafficreichen Tag steigen natürlich die kosten.

Mehr zur Cloud in meinem Artikel Mit Amazon S3 in die Cloud – Performant und Skalierbar.

Die Website selbst auf mehrere Server verteilen

Oft ist es schwierig eine Seite auf mehrere Server zu verteilen. Die leichteste Methode ist sie einfach nach Aufgaben aufzuteilen. Doch das hat den Nachteil, dass beim Serverausfall ein Teil der Seite nicht mehr erreichbar ist.

Man kann im DNS mehrere Einträge angeben, nur da ist das Problem, dass man selbst keinen Einfluss darauf hat, welcher Server genutzt wird. Eine mögliche Alternative ein Load Balancer. Dieser ist allerdings oft relativ teuer. Wer es etwas billiger möchte, kann die Seite einfach unter verschiedenen Urls aufrufbar machen. Dabei gibt es aber Nachteile für die Suchmaschinenoptimierung, da es zu duplicate Content führt (mit rel=canonical abfangbar, aber immer noch nicht schön).

Man kann aber einfach ein Script dazwischenschalten, was alle Abfragen abfängt und im Hintergrund den Inhalt von den einzelnen Servern holt. Sollte ein Server nicht erreichbar sein, wird einfach ein anderer genutzt. Hier muss darauf geachtet werden, dass die Anfrage mit Cookies übertragen wird.

Um die Stabilität zu erhöhen kann man bei einem anderen Hoster zeitlich prüfen, ob dieser Server erreichbar ist. Ist das nicht der Fall kann so die DNS angepasst und ein Ersatz angeschaltet werden.

Wollen wir hoffen, dass euere Website so viel Erfolg hat, dass ihr bald auf diese Funktionen zurückgreifen dürft.

Kommentare

Single schrieb am 28.02.2012:

Womit man starten kann, hängt auch vom Provider bzw. Server ab und von der Seite auch selbst. Mit einem Server der nur 100MBit kann, muss man früher aufteilen als bei einem Server der 1GBit kann :-). Und ich würde zuerst den Webserver von der Datenbank trennen.

Stefan Wienströer schrieb am 29.02.2012:

Ein Server mit 100 MB oder 1GB ist schon etwas klein, da sollte man sich besser überlegen was Größeres zu holen. Kommt auch weniger auf die größe der Festplatte an, sondern auch auf die Performance.

David schrieb am 07.04.2012:

@Stefan er meint nicht den speicherplatz sondern die Anbindung ;)

Stefan Wienströer schrieb am 08.04.2012:

Ahh, Jetzt versteh ich und kann ihm gut rechtgeben^^