DNS eine Internetseite auf mehrere Server verteilen.

dragonknight

New Member
Ich hab inzwischen zwei Server bekommen.
Ich möchte eine Seite auf zwei Server verteilen.
Die Internetseiten sind identisch aufgebaut.

Hier die DNS Einträge die das Ermöglichen sollen:
(Als Beispiel)

Code:
    server.example.com.   60  IN  A  192.0.2.70
    server.example.com.   60  IN  A  192.0.2.71
    server.example.com.   60  IN  A  192.0.2.72

Wie kann ich überprüfen, ob das ganze läuft?
Ich hab dies einem Round Robin Beispiel entnommen.

URL: http://de.wikipedia.org/wiki/Lastverteilung_per_DNS

Für einen echten Load Balancer reichen die Finanz. Mittel im Moment nicht.
Außerdem stehen die Server in 2 verschiedenen Rechen Zentren.
Die MySQL Datenbank sind über mysql-proxy syncronisiert.
 
Round Robin ist kein richtiges Loadbalancing und wird technikbedingt zu Ergebnissen wie "Server 1: 10% CPU " "Server B: 99% CPU" fuehren.

Wenn du nur mehrere A-Eintraege anlegst ohne dass der Server sie jeweils anders stueckelt zwingt niemand den Client einen anderen als den ersten EIntrag zu nehmen, was dazu fuehren wird dass dieser die gesamten Requests abkriegt.

Was willst du loadbalancen? CPU oder Traffic?
Traffic kannst du einfach auf mehrere Subdomains a la "server1.domain.de" "server2.domain.de" aufteilen da es sich idr eh um Bilder oder Dateien handelt welche statisch sind.
CPU-Loadbalancing macht sich relativ einfach mit einem reverse-proxy; zb nginx, pound, haproxy.
 
Ok,
war vielleicht nicht so gut erklärt,

Ich hab zwei vServer in zwei verschiedenen Rechenzentren.
Ich möchte die Kunden die auf die Seite zugreifen auf die verschiedenen Server zu verteilen.
Ich habe allerdings keinen Load Balancer zur Hand.
Auf beiden Server läuft cpanel und WHM.
Sie sind via DNS Clustr syncronisiert.
Außerdem läuft darauf schon MySQL Proxy zur MySQL verteilung.
Wie kann ich daher den Apache Prozess verteilen?
Es werden hauptsächlich php basierende Seiten geliefert.
 
Wie kann ich daher den Apache Prozess verteilen?
Es werden hauptsächlich php basierende Seiten geliefert.
DNS-basierende RoundRobin wird meist nicht zum gewuenschten Effekt fuehren, allerdings sind die Selbstbauloesungen eine Bastelei.

Die einfachste Methode des cheap-man Loadbalancing:
Server A nimmt alle Anfragen entgegen und leitet die Haelfte davon an Server B weiter.
Loesbar mit: nginx, pound, haproxy
Nachteil: Server A tot, alles tot. [*]
Server A wird 2x den normalen Trafficverbrauch haben. (sein normaler Traffic [50% der Anfragen] und den Traffic welcher an B weitergeleitet also doppelt gezaehlt wird)

Sie sind via DNS Clustr syncronisiert.
Und was ist mit den Daten? DU hast DNS und MySQL synced aber von einer Ordnersynchronisierung -zb drbd- lese ich nichts ;)
Oder ist es nicht notwendig (zb alle Daten in MySQL)


[*]
Laesst sich umgehen indem beide Server die primary/secondary NS fuer die Domain spielen, jedoch mit umgedrehter Konfiguration und niedriger TTL.
Waehrend Server A auf sich selbst als A-Record zielt, zielt Server B wiederum auch auf sich selbst. Egal auf welchem Server der Kunde landet, er wird loadbalanced sofern beide verfuegbar sind, ansonten bleibt er auf dem aktuell erreichbare.
Allerdings setzt dies voraus dass beide Server ein reverse-Proxy konfiguriert haben sowie MySQL in einer Master-Master Konfiguration betrieben wird.
(VORSICHT VOR SPLIT-BRAIN!)

Eine andere Loesung waere mit 2 Subdomains allerdings ist diese nicht HA-tauglich und liefert ansonsten auch viele Probleme (zumals mit Skripts)
 
Last edited by a moderator:
Ok,

Ich denk mal, das ich mehr Informationen zum Grundaufbau geben sollte.

Die Anwendung basiert auf PHP und MySQL.
MySQL Abfragen werden über SQL-Relay (hab ich heute umgestellt, da Mysql Proxy auf meinem Server nicht stabil lief).
Alle php Scripte etc liegen auf beiden Servern.
Es gibt nur 4 Graphiken, die aber im lokalen Zwischenspeicher liegen.
Falls nicht vorhanden werden diese erstellt.
Die beiden SQL Relay's haben Zugriff auf die Datenbank jedes Servers im Netzwerk.
Um die Konsistenz der Datenbanken zu gewähren ist der primäre Server als Master ausgelegt, jeder andere (bisher einen) als Slave.
Die Syncronisation der Datenbank und der DNS Einträge funktioniert perfekt.

Wo mir allerdings noch Probleme entgegen schwappen ist eben der Webserver und Mail Server.
Diese werden im Moment per RoundRobin verteilt.
Es müsste halt eine Verteilung der Server erfolgen.
Ich dachte schon an eine Möglichkeit zwei Subdomainen www1 und www2 anzulegen.
Allerdings hab ich das Problem, das mein Kunde seinen Kunden subdomainen anbieten möchte.
Es ist eine relativ komplexe Anwendung.
1. User ist nicht angemeldet:
Seite des Kunden kann über die Subdomaine angezeigt werden.
2. Login findet zentral über SSL gesicherte Login Seite statt.
3. User ist angemeldet
User kann mit erweiterten Seiten Funktionen arbeiten.

Es gibt mehrere Domainen.
(.org, .biz, .com, .net, .info......)
Ursprünglich dachte ich mir, das wir die .com für Server 1 und die .org für Server 2 verwenden.
Allerdings wär das relativ unpraktisch, da der Kunde zwei verschiedene seiten zur Verfügung hätte.
Hab dann das mit dem Round Robin entdekt und das eingerichtet.
Allerdings ist mir aufgefallen, das die Seiten nicht gleichmässig auf die Server verteilt werden.

Als Server Panel wird cpanel und WHM verwendet.
Ich würde dies gerne weiter verwenden, da das WHM mir sehr gute Kontrollmöglichkeiten über den Server gibt, ohne das ich direkt in die Server Konfiguration eingreifen. Ich weiß es geht nichts über per Hand konfigurierte Server. Allerdings gefällt mir das System, wie ich die DNS Einträge verwalten kann.
Auch kann ich dem Kunden das System so übergeben, das er es selbst verwalten kann.
Ich steh ihm zwar zur Administration zur Verfügung, allerdings wenn ein Dienst mal ausfällt, kann er ihn jederzeit wieder starten.


Hof das hilft euch auch ein bischen.
 
Siehe meinen letzten Beitrag, da sollte ja schon alles drin stehen.
Wie bereits betont: der Traffic wird dadurch hoeher.
 
Back
Top