
Ich habe zwei VMs auf derselben Maschine gehostet, eine ist von Natur aus aktiv, d. h. sie hostet einen Dienst und ist mit einem Client verbunden (der Client läuft direkt auf der Hostmaschine). Ich muss einen Fehlertoleranzdienst implementieren, d. h. beim Ausfall der primären VM wird der Client automatisch mit der sekundären VM verbunden, vorausgesetzt, dass beide VMs denselben Dienst hosten.
Ich habe irgendwo etwas über Floating IPs gelesen, aber als ich nachgeschaut habe, habe ich festgestellt, dass es sich um einen kostenpflichtigen Dienst handelt. Gibt es eine einfache Möglichkeit, dies zu erreichen, ohne Geld ausgeben zu müssen?
Die Maschine basiert auf Linux, genauer gesagt ist der Host Ubuntu 20.* und die VMs haben Ubuntu 18.*.
Antwort1
Sie können „Floating IPs“, auch als VIP oder virtuelle IP bezeichnet, folgendermaßen erreichen:
- Keepalived (VRRP)
- Herzschrittmacher/Corosync
- Karpfen (http://manpages.ubuntu.com/manpages/precise/man4/carp.4freebsd.html)
Zu Ihrer Information: Sie können Redundanz im Client auch erreichen, indem Sie ihn die fehlerfreien Server aus einer Liste auswählen lassen.
Beachten Sie, dass die Implementierung von Redundanz zwischen VMs auf dergleicher Hostwird nicht empfohlen. (der Host ist der Single Point Of Failure)
Antwort2
Ich schlage vor, dass Sie einen Reverse-Proxy als Load Balancer vor Ihren Anwendungen/VMs verwenden. Sie können etwas wie nginx
oder verwendenhaproxy
Die Nginx-Konfiguration würde ungefähr wie folgt aussehen:
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
server 192.0.0.1 backup;
}
server {
location / {
proxy_pass http://backend;
}
}
}
Es führt automatisch Integritätsprüfungen für Upstream-Hosts durch, d. h. wenn ein Upstream-Host ausfällt, wird dies automatisch von nginx erkannt und das Senden von Anfragen an Hosts mit fehlerhaftem Zustand wird gestoppt.
Weitere Informationen finden Sie unter: https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/