Wenn man eine große Webseite betreibt, kommt man irgendwann an den Punkt, wo ein Server nicht mehr ausreicht, um alle Clients mit Daten zu beliefern. Nun musste eine Lösung her! Zuerst hatten wir die Übergangslösung mit www2 bei den Bildern und Nachrichten, das ganze gab aber einige Probleme bei den Usern. Durch langes googlen und einen ausführlichen Bericht auf rikman’s blog habe ich mich für pound entschieden.

pound wird auf dem Server installiert, der die IP hat, auf den die Domain gebunden ist.
z.B “www.m0rphex.com” -> 217.7.143.189 Port 80
Den Webserver der eigentlich auf diesem Port liegt bindet man an 127.0.0.1 Port 80!
In der pound.cfg trägt man nun noch den 2ten Webserver ein, in unserem Fall z.B 217.7.143.187 Port 80.

pound splitet die http requests nun auf die beiden Server geteilt auf, was zu einem nahezu perfekten load balancing führt.
Nun gab es jedoch das Problem das die Bilder etc bei m0rphex auf dem Server 217.7.143.189 liegen und von dort mit rsync auf die anderen Server repliziert werden. Also müssen alle Uploads über diesen Server erfolgen. Auch hier bietet pound eine Möglichkeit, man kann die Requests je nach URL an verschiedene Server verteilen.

Das ganze hat bei uns einen extremen Vorteil erbracht, der Server 217.7.143.189 hat nun wieder einen Serverload unter 1.

Wenn ihr wissen wollt welcher Server euch grade bedient, könnt ihr das unten bei der Spalte “Webserver:” tun, dort steht eure ip @ server ip.
127.0.0.1 -> 217.7.143.189 -> server1
217.7.143.187 -> 217.7.143.187 -> server2

Ich hänge mal meine pound.cfg für technik interessierte an:

Zitat von consoloe: www:~# cat /etc/pound/pound.cfg
LogLevel 0
ListenHTTP
Address 217.7.143.189
Port 80Service
URL “.*/?a=upload.*”
BackEnd
Address 127.0.0.1
Port 80
End

End

Service
URL “.*/?a=admin_cp.*”
BackEnd
Address 127.0.0.1
Port 80

End
End

Service
URL “.*/?a=user_cp&open=avatar.*”
BackEnd

Address 127.0.0.1
Port 80
End
End

Service
URL “.*/?a=user_cp&open=userbild.*”

BackEnd
Address 127.0.0.1
Port 80
End
End

Service
HeadRequire “.*”

BackEnd
Address 127.0.0.1
Port 80
End

BackEnd
Address 217.7.143.187
Port 80
End
End
End

Related posts:

  1. Monitoring mit Munin
  2. DMZ, SNAT & DNAT
  3. Neues Backend fuer morphex bestellt