Server Support Forum
Load Balancer, MySQL Master-Master, Apache, NFS auf nur 2 Maschinen

Zurück   Server Support Forum > >


Antwort
 
Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 1,00 durchschnittlich.
  #1  
Alt 09.05.2014, 20:40
efanucar efanucar ist offline
Registered User
 
Registriert seit: 02.2009
Beiträge: 24
Load Balancer, MySQL Master-Master, Apache, NFS auf nur 2 Maschinen

Hallo zusammen,

ich stehe vor der Aufgabe für ein Webprojekt einen kleinen, redudanten Webserver- und MySQL-Cluster aufzubauen. Nach Recherche in diversen Foren, Blogs und Büchern schwebt mir folgendes Setup vor

- 2 Load-Balancer, die per heartbeat überwacht werden
- 2 Webserver, auf die der aktive Load-Balancer die Anfragen verteilt
- 2 MySQL-Server in Master-Master-Replikation, per heartbeat überwacht
- 2 Storage-Server die ein NFS-Laufwerk exportieren und per DRDB synchron gehalten werden, ebenfalls von hearbeat überwacht

Fällt ein Server im Paar aus, gibt es also immer einen Ersatz.

Da ich jetzt eigentlich nicht 8 echte Server administrieren möchte (neben Wartung ist das natürlich auch eine Kostenfrage, auch das Setup beim Hoster mit eigenem privaten Netzwerk zusätzlich zu den externen IPs ist sicher nicht so trivial) frage ich mich:

Kann man das nicht alles auf 2 dedizierten Servern laufen lassen?

Fällt ein Server aus, merkt heartbeat das uns switched die öffentliche IP auf den Load-Balancer des zweiten Servers. Der Load-Balancer merkt, dass der erste Server keine Anfragen entgegen nimmt und verteilt sie an den zweiten (also Quasi an sich selbst). Währenddessen hat heartbeat auch gemerkt, dass der erste MySQL-Server down ist und die Storage-Server auch.

Kann das funktionieren?

Danke für ein paar Erfahrungswerte und Tipps!

Viele Grüße!
Mit Zitat antworten

  #2  
Alt 09.05.2014, 22:22
Benutzerbild von elias5000
elias5000 elias5000 ist offline
Pricipal Systems Engineer
 
Registriert seit: 08.2006
Ort: Berlin
Alter: 38
Beiträge: 2.649
Load Balancer, MySQL Master-Master, Apache, NFS auf nur 2 Maschinen
Ggf. einfacher als IPs switchen (muss der Hoster ja auch Unterstützen) wäre es, das per DNS zu regeln. Der DNS-Name löst auf beide LoadBalancer auf.
Wenn einer der Beiden stirbt, sorgt der Überlebende dafür, dass der DNS nur noch eine IP für den Hostname ausliefert. Eine kurze TTL sorgt dafür, dass das auch alle zeitnah mitbekommen.
Bis die DNS-Änderung greift ist auch nicht so schlimm, weil nach RFC bei mehreren IPs für einen Hostname diese durchprobiert werden, bis einer antwortet. Es dauert also einfach nur etwas länger.
Und dann musst du natürlich noch die Fälle abdecken, in denen z.B. die LoadBalancer beide total superhappy sind aber einer der Apache Server nicht funktioniert oder eine der MySQL-Instanzen ausgefallen aber beide Apache Server noch ok und beliebige weitere Kombinationen.
__________________
"Computers in the future may weigh no more than 1.5 tons." (Popular Mechanics, 1949)
Mit Zitat antworten
  #3  
Alt 14.05.2014, 13:30
timtowtdi6 timtowtdi6 ist offline
Registered User
 
Registriert seit: 05.2014
Beiträge: 9
Zitat:
Zitat von efanucar Beitrag anzeigen
Kann man das nicht alles auf 2 dedizierten Servern laufen lassen?
Aber natürlich :-)

Such mal im Netz nach DRBD-Pacemaker-Cluster. Es ist da üblich, 2 Server einzusetzen.

Oftmals wird so ein Konstrukt verwendet, um zum Beispiel auf einem Node die Datenbank und auf dem anderen Node den Webserver laufen zu lassen.

Die Daten sowie die Konfiguration der Dienste liegen auf eigenen DRBD-Devices.

Fällt nun ein Node aus, werden die Dienste auf den anderen Node geswitched + Failover-IP. Der Clustermanager Pacemaker verwaltet die Dienste.

Ich selbst habe 8 Cluster auf Basis von DRBD und Pacemaker.
Mit Zitat antworten
  #4  
Alt 14.05.2014, 14:12
PapaBaer PapaBaer ist offline
Registered User
 
Registriert seit: 09.2010
Ort: Halle (Saale)
Beiträge: 1.761
Zitat:
Zitat von elias5000 Beitrag anzeigen
Ggf. einfacher als IPs switchen (muss der Hoster ja auch Unterstützen) wäre es, das per DNS zu regeln. Der DNS-Name löst auf beide LoadBalancer auf.
Wenn einer der Beiden stirbt, sorgt der Überlebende dafür, dass der DNS nur noch eine IP für den Hostname ausliefert. Eine kurze TTL sorgt dafür, dass das auch alle zeitnah mitbekommen.
Selbst bei kürzester TTL erreichst du via DNS keine Downtimes <5min + X. Mit Lösungen a la keepalived kommst du real auf ca. 10 Sekunden Downtime.
Mit Zitat antworten
  #5  
Alt 15.05.2014, 18:08
efanucar efanucar ist offline
Registered User
 
Registriert seit: 02.2009
Beiträge: 24
Danke erstmal für die Antworten!

Ich teste derzeit das ganze Setup mit zwei virtuellen Maschinen.

Der Loadbalancer (aktiv auf Server 1) verteilt die Anfragen auf beide Server.

Verabschiedet sich Server 2, verteilt der Loadbalancer nur noch auf Server 1.

Verabschiedet sich Server 1, übernimmt Server 2 den Loadbalancer und die Failover-IP und verteilt nur noch auf Server 2.

Auf jedem Server läuft MySQL, beide Server werden über Master-Master-Replikation synchronisiert und die Applikation greift jeweils über localhost auf seinen eigenen MySQL-Server zu.
Sollte nun nur der MySQL-Server auf einer Maschine ausfallen wird das tatsächlich erstmal nicht erkennt, eventuell kann ich aber dem Loadbalancer das noch beibringen (über eine Check-Seite, die auch MySQL testet)

Bleibt noch das Thema Filesystem.

Mit DRBD habe ich leider bisher keine guten Erfahrungen gehabt, bei einem anderen Setup hat sich regelmäßig die Synchronisierung verabschiedet und ich musste von Hand wieder den Slave neu initialisieren - das Ganze hat auf mich nicht den Eindruck gemacht, dass das für den produktiven Einsatz bereit ist.

Mein Plan: auf einem Server wird ein NFS-Laufwerk exportiert, das die Applikation auf beiden Webservern als Haupt-Datenspeicher verwendet.
Im Hintergrund wird über rsync dieses Datenverzeichnis auf den zweiten Server synchronisiert und von der Applikation als "Nur-Lese-Quelle" verwendet, wenn der Haupt-Datenspeicher nicht erreichbar ist. Auch dieses zweite könnte man über NFS freigeben, dann ist die Konfiguration auf beiden Servern identisch.

Ist sicher etwas mehr Handarbeit als über DRBD, aber mir gefällt daran, dass die Daten auf beiden Server ganz normal im Filesystem liegen und darauf zugegriffen werden kann. Bei DRBD weiß man nicht ob man auf dem Slave auch wieder an die Daten rankommt...

Wie klingt das so für Euch?
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
loadbalanced, mysql, redundanz, storage, webserver



Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
master CEW4 Mail 2 05.06.2012 09:49
MySQL Replikation: Daten vom Slave zurück an den Master slashwalker SQL 16 14.09.2010 15:56
Suche cpu apache load balancer mischka2k FAQs & Anleitungen 8 10.11.2009 08:21
Partitionierung eines dedizierten MySQL Servers (Master/Slave-Setup) cosmonaut Dedizierte Server 4 19.12.2008 15:41
Load Balancer für X? djrick Linux 2 26.05.2008 00:59


Load Balancer, MySQL Master-Master, Apache, NFS auf nur 2 Maschinen
Load Balancer, MySQL Master-Master, Apache, NFS auf nur 2 Maschinen
Load Balancer, MySQL Master-Master, Apache, NFS auf nur 2 Maschinen Load Balancer, MySQL Master-Master, Apache, NFS auf nur 2 Maschinen
Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Search Engine Optimisation provided by DragonByte SEO (Pro) - vBulletin Mods & Addons Copyright © 2018 DragonByte Technologies Ltd.