Ausfallsicheres Server-Setup mit Datenbank?

  • Hallo,

    ich benötige folgendes Server-Setup und möchte, bevor es ernst wird, auf den Erfahrungsschatz der Community zurückgreifen, da ich denke, dass ich wohl nicht der erste bin mit dieser Anforderung.
    Grundsätzlich sähe das Setup für eine Instanz so aus:
    Apache -> Unterschiedliche Wildfly-Instanzen -> PostgreSQL-DB


    Dieses Setup soll ausfallsicher sein. Am liebsten wäre mir folgende Lösung (mit 2 Root-Servern): Das o.g. Setup wird in Echtzeit auf einen anderen Root-Server gespiegelt. Wenn ein Server heruntergefahren wird, soll automatisch der andere Server übernehmen. Das Problem ist wohl die Datenbank. Ich bräuchte wohl so etwas wie Golden Gate bei Oracle.


    Hat jemand Erfahrung mit einem derartigen Setup, bzw. gibt es bessere Lösungen im Zusammenspiel mit den Möglichkeiten, die mir Netcup bietet (wie zB Failover-IP)?

    Am Interessantesten ist für mich, wie ich das Problem mit der Datenbank lösen könnte, sodass diese immer lesend und schreibend verfügbar ist. Irgendwelche Vorschläge?





  • Was mir so spontan einfallen würde: PostgreSQL Master/Slave Setup mit einem Replication Manager (https://repmgr.org/) für die Umschaltung. Dann würde im Fall, dass der Master heruntergefahren wird, der Slave durch den repmgr zum Master ernannt. Die Failover IP könntest du dann z.B. mit keepalived ebenfalls umschalten. Alternativ gäbe es auch noch den pgpool, welcher ebenfalls die Replikation verwalten kann, damit habe ich aber weniger gute Erfahrungen gesammelt.


    So ein Setup würde ich aber sehr intensiv testen. Das könnte u.U. auch sehr wackelig werden und mehr Probleme verursachen als es eigentlich löst. Generell sind 2 Node HA Cluster eher weniger gut geeignet, da du nie ein eindeutiges Quorum hast.

  • Danke erstmal. Das mit dem Replication Manager klingt ja schon recht brauchbar.
    Das heißt, wenn ich es richtig verstanden habe, habe ich 2 Server mit den gleichen Setups und je einer DB, und wenn der eine Down ist, greift erstens das netcup-Failover, und dadurch, dass der Replication Manager läuft, sind die Daten ebenso verfügbar. Vermutlich ist es auch kein Problem, in späterer Folge weitere Nodes hinzuzufügen.
    Eines würde mich dabei noch interessieren: Muss das initiale Setup mindestens aus 2 Nodes bestehen, oder kann das komplette Replication-Konzept problemlos nachinstalliert werden für den Fall, dass ich mal mit einem Single-Server-Setup starte?

  • Eines würde mich dabei noch interessieren: Muss das initiale Setup mindestens aus 2 Nodes bestehen, oder kann das komplette Replication-Konzept problemlos nachinstalliert werden für den Fall, dass ich mal mit einem Single-Server-Setup starte?

    Du kannst das Replikations-Setup auch ruhig später noch einrichten und erst einmal mit einem Single Node starten. Du kannst auch (beliebig) viele Slave Nodes einrichten, dann wählt der Repmgr im Falle eines Ausfälls irgendeinen Node aus, der als neuer Master ernannt wird.


    Beachte nur, dass es mit dem Umschalten der IP immer einen kleinen Moment dauert. Bei mir hat das immer so 20-30 Sekunden gedauert bis das Routing auf die neue IP funktionierte. In dieser Zeit wäre die DB nicht erreichbar. Die Applikation müsste das dann verkraften können.