Frapo
Anmeldungsdatum: 22. Januar 2017
Beiträge: Zähle...
|
Hallo,
ich habe eine Rootserver mit einer Webanwendung (Shopsystem) laufen und möchte diesen Server auf einen 2ten Rootserver spiegeln und im Cluster laufen lassen
Ich habe bei Strato eine Cluster-IP zwecks Umschaltung geordert.
Meine Frage ist nun, wie muss ich den 2ten Server einrichten um auf beiden Servern (Spiegelung) die gleichen Daten zu haben.
Zunächst nur das gleiche System (also Ubuntu. PHP Versionen etc und Plesk? ) oder auch die Webanwendung. Gruß
Franz
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
Die Stichworte die du suchst sind:
MySQL Master-Slave bzw. Multi-Master Replikation VRRP bzw. eine andere Form der Übertragung deiner HA IP, sofern es da nix Hetzner spezifisches erfordert Shared Storage oder ein Cluster Dateisystem das über die >=2 Hosts verteilt arbeitet
Nicht unbedingt ein einfaches Unterfangen. mfg Stefan
|
cklone
Anmeldungsdatum: 24. Januar 2017
Beiträge: Zähle...
|
Hallo zusammen, ich bin neu hier im Forum und würde das Thema gerne nochmal aufgreifen.
Wir müssen aus unserem Webserver ebenfalls einen Cluster aus mehreren Webservern aufbauen.
Die wesentlichen Stichwörter in diesem Zusammenhang lauten Apache, PHP, MariaDB/MySQL & PostgreSQL. Habt ihr ein paar Tipps, wie ich das am ehesten realisieren kann? Danke und Gruß
Christian
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
Frapo schrieb: ich habe eine Rootserver mit einer Webanwendung (Shopsystem) laufen und möchte diesen Server auf einen 2ten Rootserver spiegeln und im Cluster laufen lassen
Welche Dienste möchtest du denn Clustern? Und soll das ein Loadbalanctes Setup werden, oder mit einfacher HA-Umschaltung?
Ich habe bei Strato eine Cluster-IP zwecks Umschaltung geordert.
Ein guter Anfang.
Meine Frage ist nun, wie muss ich den 2ten Server einrichten um auf beiden Servern (Spiegelung) die gleichen Daten zu haben.
Wie gesagt, es kommt auf die Art der Daten an. MySQL bietet Replikation, bei Filesystemen gibt es verschiedene Möglichkeiten, abhängig von den Umständen. DRBD wäre hier ein Stichwort.
Zunächst nur das gleiche System (also Ubuntu. PHP Versionen etc und Plesk? ) oder auch die Webanwendung.
Wenn du wirklich komplett gespiegelte Server haben willst, würde ich deine eigentliche Systeme in VMs kapseln, und diese zwischen den Servern abgleichen lassen. Wir nutzen hier ähnliche Setups. Hier mal die Basisinfos für ein Setup:
2 physische Server mit Xen Daten-Device mit LVM für VMs, Abgleich zwischen den Servern via DRBD Umschalten der HA-IPs + VMs via Heartbeat
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
Wie kommt Samba an einen Webserver? Beachte das deine Anfrage hier nur hingehört wenn es thematisch/fachlich auch zu den Anforderungen vom Threadersteller passt. Primär geht es ihm ja darum ein Webshop System redundant zu verteilen. Wenn es bei dir ähnlich ist kannst du hier in dem Thread bleiben IMHO. mfg Stefan
|
cklone
Anmeldungsdatum: 24. Januar 2017
Beiträge: 7
|
encbladexp schrieb: Wie kommt Samba an einen Webserver?
Sorry, mein Fehler! Samba hat hier natürlich nix zu suchen. Habe es editiert. 😉
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
Die Frage die bleibt: Wie viel Redundanz ist nötig? Wie viel Systeme sind vorhanden? Reicht eine Aktiv/Passiv bzw. Aktiv/Standby Umschaltung die ggf auch händisch erfolgen darf? Wie viel Ausfallzeit ist Akzeptabel? mfg Stefan
|
cklone
Anmeldungsdatum: 24. Januar 2017
Beiträge: 7
|
Hi, die Ausfallzeit sollte schon so gering wie möglich sein. In Zahlen kann ich das nicht ausdrücken, das müsste dann noch geklärt werden. Um überhaupt mal nach vorne zu kommen, habe ich mir zu Testzwecken 3 Ubuntu Server aufgesetzt. Alle drei wurden identisch eingerichtet, heißt:
OpenSSH LAMP Server WordPress
Als erstes müsste ich ja erreichen, dass die Daten aus dem wordpress Verzeichnis bzw. in der MySQL Datenbank bei Veränderung auf allen drei Servern synchronisiert werden.
Ist das sichergestellt, muss gewährleistet sein, dass dem User für den Fall das Server 1 ausfällt, automatisch Server 2 oder 3 zur Verfügung gestellt wird.
An dieser Stelle wäre das Thema Lastenausgleich sicherlich ebenfalls sehr sinnvoll. Hast du einen Tipp, wie ich das zunächst mal für meine Testumgebung umsetzen kann? Danke und Gruß Christian
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
cklone schrieb: die Ausfallzeit sollte schon so gering wie möglich sein. In Zahlen kann ich das nicht ausdrücken, das müsste dann noch geklärt werden.
Du solltest dir vorher überlegen, was du erreichen willst, und welchen Weg du gehen willst.
Um überhaupt mal nach vorne zu kommen, habe ich mir zu Testzwecken 3 Ubuntu Server aufgesetzt. Alle drei wurden identisch eingerichtet, heißt:
OpenSSH LAMP Server WordPress
Warum legst du schon los, ohne eine konkrete Vorstellung zu haben? Willst du nur 3 identische Systeme, oder willst du ein Cluster-Setup? Das müsstest du dich schon fragen.
Als erstes müsste ich ja erreichen, dass die Daten aus dem wordpress Verzeichnis bzw. in der MySQL Datenbank bei Veränderung auf allen drei Servern synchronisiert werden.
Das ist nicht trivial. Da braucht es ein Konzept, denn davon hängt auch die technische Abbildung ab. Auf gut Glück loslegen führt da zu nichts!
Ist das sichergestellt, muss gewährleistet sein, dass dem User für den Fall das Server 1 ausfällt, automatisch Server 2 oder 3 zur Verfügung gestellt wird. An dieser Stelle wäre das Thema Lastenausgleich sicherlich ebenfalls sehr sinnvoll.
Was willst du nun, reinen Failover (also umschalten, beim Ausfall des führenden Systems), oder Loadbalancing (Lastverteilung auf alle Systeme)?
|
cklone
Anmeldungsdatum: 24. Januar 2017
Beiträge: 7
|
misterunknown schrieb: Was willst du nun, reinen Failover (also umschalten, beim Ausfall des führenden Systems), oder Loadbalancing (Lastverteilung auf alle Systeme)?
Was ich möchte habe ich doch geschrieben. In erster Linie geht um einen Failover-Cluster.
Was ist falsch daran, auch über ein Loadbalancing nachzudenken? Das eine schließt das andere doch nicht aus.
|
encbladexp
Ehemaliger
Anmeldungsdatum: 16. Februar 2007
Beiträge: 17449
|
cklone schrieb: Was ist falsch daran, auch über ein Loadbalancing nachzudenken? Das eine schließt das andere doch nicht aus.
Der Aufwand ist unterschiedlich. Man kann z.B. mit DRBD einen Cluster aus 2-3 Kisten bauen, und nur auf einem läuft ne virtuelle IP und die Dienste erst wenn Kiste A ausgefallen ist. Bei Loadbalancing müssen die Dienste simultan laufen können. Dann ist eine andere Art der Übertragung erforderlich. Beispiel für reines Failover:
Beispiel für einen "richtigen" Cluster:
VRRP für eine HA IP Cluster Dateisysteme (GlusterFS, Ceph, …) für die Nutzdaten vom Document Root MySQL/PostgreSQL Master-Slave Setup mit automatischen umschalten auf nem neuen Master, oder sogar ein Multi Master Setup
Zu beachten als Thema für dich immer: Split Brain, Leader Delegation und mit großer Wahrscheinlichkeit auch STONITH. Daher nochmal zur Frage von misterunknown und mir: Wie viel Aufwand darf für die Lösung erforderlich sein? Habt ihr Menschen welche diese im Fehlerfall verstehen und fixen können? Gibt es externe Hosts/Cluster wo die Datenbanken oder Dateisysteme (shared Storage) laufen werden? Welche Ausfallzeiten sind akzeptabel, bzw. welche Reaktionszeiten und Wiederherstellungszeiten durch die Kunden (intern wie extern) erforderlich? mfg Stefan
|
misterunknown
Ehemalige
Anmeldungsdatum: 28. Oktober 2009
Beiträge: 4403
Wohnort: Sachsen
|
cklone schrieb: Was ich möchte habe ich doch geschrieben. In erster Linie geht um einen Failover-Cluster. Was ist falsch daran, auch über ein Loadbalancing nachzudenken? Das eine schließt das andere doch nicht aus.
Nein, es schließt sich nicht aus, aber die technische Abbildung ist komplett anders, es gibt viele technische Implikationen, und daher muss man sich vorher intensivst (!) damit auseinandersetzen. Ein Failover-Cluster zu bauen ist einfach. Du nimmst 2 identische Server, gleichst die Daten ab, und machst eine MySQL-Replikation. Der Heartbeat schaltet im Fehlerfall eine IP hin und her, und damit ist die Ausfallsicheheit gegeben. Die Einfachheit des Setups liegt daran, dass immer nur genau ein einziger Server aktiv ist. Loadbalancing bedingt beispielsweise einen Loadbalancing-Mechanismus. Allein die Wahl des LB-Mechanismus hat grundlegende Implikationen, die du bedenken muss. Möchtest du Client-Persistenz oder nicht? Je nach Anwendungsfall kann das eine oder das andere sinnvoll sein. Wenn Client-Persistenz aktiv ist, landet der gleiche Client eine gewisse Zeit immer auf dem gleichen Server. Das hat zur Folge, dass du ein Kriterium einführen musst, anhand dessen du die Clients unterscheidest. Ob sich die Client-IP eignet ist fraglich: Stellst du beispielsweise Lehrmittel für Schulen zur Verfügung, und der Loadbalancer verteilt zufällig zwei oder drei IPs von Schulen auf das eine Backend, dann qualmt im Zweifelsfall das Backend, weil ~1000 Schüler (über die gleiche IP) auf das gleiche Backend zugreifen, während sich das andere langweilt. Der andere Fall ist noch komplizierter: Wenn du keine Client-Persistenz haben willst, dann musst du Daten zwischen den Servern sharen. Das ginge beispielsweise über ein zentrales Storage, oder einen Fileserver, der die Daten bereitstellt. Aber nicht nur die Bewegungsdaten musst du sharen, sondern im Zweifelsfall auch die Sessions. Das kann man beispielsweise in einer zentralen Memcache-Instanz machen. Alle Zentralen Instanzen müssen aber auch wieder hochverfügbar ausgelegt werden, da man sich das Theater sonst auch sparen könnte... Der Loadbalancer sollte sinniger Weise natürlich auf einem eigenen System laufen. Wenn du 3 Server hast, könnte also einer als Loadbalancer, und die anderen beiden als Backends dienen. Damit hättest du aber wieder einen SPF (single point of failure). Das heißt, du musst den Loadbalancer noch ausfallsicher machen. Es gibt zwar auch Verfahren, wo du keinen Loadbalancer brauchst (bspw. Round-Robin-DNS), allerdings hast du dort dann auch keine wirkliche Kontrolle darüber. Außerdem ist bei großen Plattformen neben dem Loadbalancing auch das Caching essentiell wichtig. Ich hatte schon einen Fall, in dem ein Setup mit 5 Webservern, und 2 Loadbalancern auf eine einzige hochverfügbare VM eingedampft werden konnte, einfach nur weil man einen vernünftigen Cache installiert hat. Es gibt also viel zu bedenken. Und da das Setup unbedingt vom Anwendungsfall abhängig ist, wäre es sicherlich am besten, du verrätst uns etwas über dein Ansinnen 😉
|
cklone
Anmeldungsdatum: 24. Januar 2017
Beiträge: 7
|
Ich danke euch beiden für eure Ausführungen!
Wie ihr sicherlich schon bemerkt habt, zähle ich mich nicht zum Experten auf dem Gebiet.
Bislang war ich ausschließlich für Windows Landschaften zuständig. Wie das dann so ist, bekommt man mir nichts dir nichts so ein Thema aufs Auge gedrückt. Alle Proteste sind verpufft "mit einer Schulung wird das schon". Na klar...
Aber das soll ja hier auch nicht das Thema sein. Wie auch immer man sich im Unternehmen entscheidet, ich versuche mich jetzt jedenfalls in das Thema rein zu denken. Die Aufgabe lautete: "Bau mal einen Cluster für unsere Webserver, wir müssen sicherstellen, dass die User jederzeit auf die Webapplikation zugreifen können." Intern müsste das jetzt noch konkretisiert werden, habe ich verstanden! Ich für meinen Teil würde trotz allem gerne einen Failover-Cluster aus meinen drei Maschinen aufbauen. ☺
Schaue dann mal was ich zum Thema "DRBD" & "VRRP" finde. Danke! Viele Grüße
Christian
|
Frapo
(Themenstarter)
Anmeldungsdatum: 22. Januar 2017
Beiträge: 4
|
Hallo,
also bei mir ist das so:
Ich habe einen bestehenden Server mit einem Magento2 Schopsystem auf Ubuntu16.04, PHP5,.6 und MySQL.
Habe nun einen 2ten Server mit der Gleichen Hardware und mittlerweile auch gleichem System (Ubuntu etc.) und auch
Die Daten der Webanwendung (Shop) und MySQL Datenbank sind gleich. Ich kann mittels Cluster-IP (Strato) den Zugriff von Master auf Slave händisch ändern.
Ich möchte nun das sich die beiden Server zwecks Failover-Cluster automatisch synchronisieren (Daten der Webanwendung und MySQL)
Habe auch schon gelesen das dies mittels Peacemaker, Corosync und DRBD geht.
Bei DRBD (die Synchonisation von der MySQL-DB soll wohl nur damit gehen?!) habe ich nun was von "erstellen einer DRBD Partition" gelesen.
Da ich aber ja ein bestehendes System habe, geht das denn da? Oder gibt es noch andere Möglichkeiten die MySQL-DB zu synchronisieren.
Bzgl der Umschaltung sollte diese natürlich schnellstmöglich und automatisch erfolgen.
Franz
|
Frapo
(Themenstarter)
Anmeldungsdatum: 22. Januar 2017
Beiträge: 4
|
misterunknown schrieb: Frapo schrieb: ich habe eine Rootserver mit einer Webanwendung (Shopsystem) laufen und möchte diesen Server auf einen 2ten Rootserver spiegeln und im Cluster laufen lassen
Welche Dienste möchtest du denn Clustern? Und soll das ein Loadbalanctes Setup werden, oder mit einfacher HA-Umschaltung?
Ich habe bei Strato eine Cluster-IP zwecks Umschaltung geordert.
Ein guter Anfang.
Meine Frage ist nun, wie muss ich den 2ten Server einrichten um auf beiden Servern (Spiegelung) die gleichen Daten zu haben.
Wie gesagt, es kommt auf die Art der Daten an. MySQL bietet Replikation, bei Filesystemen gibt es verschiedene Möglichkeiten, abhängig von den Umständen. DRBD wäre hier ein Stichwort.
Zunächst nur das gleiche System (also Ubuntu. PHP Versionen etc und Plesk? ) oder auch die Webanwendung.
Wenn du wirklich komplett gespiegelte Server haben willst, würde ich deine eigentliche Systeme in VMs kapseln, und diese zwischen den Servern abgleichen lassen. Wir nutzen hier ähnliche Setups. Hier mal die Basisinfos für ein Setup:
2 physische Server mit Xen Daten-Device mit LVM für VMs, Abgleich zwischen den Servern via DRBD Umschalten der HA-IPs + VMs via Heartbeat
Das hört sich schonmal interessant an.
Was meinst Du mit MySQL bietet Replikation an?
Bei DRBD bin ich mir nicht sicher ob das geht, da ich immer von einer eigenen DRBD Partition lese.
Franz
|