Zwei VMs werden auf derselben Maschine gehostet, nennen wir sie VM1 und VM2. Beide VMs hosten einen runC
Container, auf dem eine Serveranwendung läuft, ein Client läuft direkt auf der Hostmaschine und ist mit einem Dienst verbunden, der im Container in VM1 läuft.
Ich möchte einen Failover-Dienst erstellen, bei dem der Client eine Verbindung mit dem auf VM2 ausgeführten Container herstellen soll, wenn ich den Container auf VM1 schließe.
Ich habe eine Floating IP implementiert und getestet mitKeepalived und VRRPwie vorgeschlagen inDasLink, aber das funktioniert nur, wenn die ganze VM ausfällt. Ich muss einen Fehlertoleranzdienst für einen Container implementieren. Wenn der Container auf VM1 ausfällt, sollte der Client mit einer Replik verbunden werden, die auf VM2 läuft, auch wenn VM1 aktiv ist, d. h. der Container fällt aus, aber die VM, die diesen Container hostet, ist aktiv.
Die Einschränkung besteht hier darin, dass ich keinen Load Balancer/HAproxy-Dienst verwenden möchte, der zu einem einzelnen Ausfallpunkt werden kann.
Irgendeine Idee, wie ich das erreichen kann? Oder ist das nicht möglich?
BEARBEITEN: (Wie in den Kommentaren vorgeschlagen, fügen Sie Details hinzu, um mögliche Verwirrungen zu vermeiden.)Der Container auf VM2 läuft nicht mehr, seit der primäre Container, d. h. der auf VM1 laufende Container, gestartet wurde. Es gibt ein Dienstprogramm zum Überprüfen/Wiederherstellen von Containern mit dem Namen criu
, das Sie sich ansehen können.HierUndHier. Mit diesem Dienstprogramm wird der Container von VM1 auf VM2 migriert, indem zuerst ein Checkpoint für diesen Container erstellt und dann dieser Status auf VM2 migriert und wiederhergestellt wird. Jetzt muss aber auch sichergestellt werden, dass der Client eine Verbindung zum Container auf VM2 herstellt. Bis jetzt habe ich den Container einfach in einem Netzwerk-Namespace ausgeführt und eine Route von der Schnittstelle von VM1 hinzugefügt. Damit kann ich Hardwarefehler verhindern, z. B. wenn VM1 selbst ausfällt, wie bereits erwähnt, indem ichKeepalived und VRRP, aber jetzt möchte ich Folgendes: Wenn der Containerstatus auf die Seite von VM2 migriert wird und der Container ausfällt, VM1 jedoch aktiv ist und der migrierte Status dieses Containers auf VM2 wiederhergestellt wird, wie stelle ich dann sicher, dass der Client mit dem jetzt laufenden Container auf VM2 verbunden wird? Ich muss dieses Szenario simulieren.