
Ich habe eine Cisco ASA[0] mit zwei Linux-Rechnern in der DMZ, auf denen Keepalived und HAproxy laufen, die als Lastausgleichs-Failover-Paar für ein weiteres Paar Windows-Server fungieren, das sich ebenfalls in der DMZ befindet. Ich bin überzeugt, dass Keepalived ordnungsgemäß funktioniert. Ich kann die virtuelle Adresse (10.0.1.8) von einem anderen Host in der DMZ aus erfolgreich anpingen. Wenn ich Keepalived auf dem Master (10.0.1.6) stoppe, schlagen einige Pings fehl, bevor das Backup (10.0.1.7) die virtuelle Adresse übernimmt. Ähnliche Fehler treten auf, wenn ich Keepalived auf dem Master neu starte. Dieser andere Host kann Webseiten sehen, die auf den beiden Windows-Servern über HAProxy gehostet werden, wenn entweder der primäre oder der sekundäre aktiv ist.
Die virtuelle IP-Adresse hat eine statische NAT-Zuordnung zu einer externen Adresse (z. B. 1.2.3.8). Wenn ich einen ähnlichen Test von außerhalb der Firewall aus versuche, funktionieren Pings zu 1.2.3.8 nur, wenn die primäre Adresse aktiv ist. Wenn ich den Keepalived-Dienst auf der primären Adresse stoppe, schlagen Pings von außerhalb der Firewall fehl, während Pings von innerhalb der DMZ erfolgreich sind.
Ich kann sehen, dass sich der MAC-Adresseintrag für die virtuelle IP-Adresse ändert, wenn ich Keepalived auf dem primären Server stoppe und neu starte. Die ASA scheint also zu wissen, wann der primäre und der sekundäre Server aktiv sind. Sie scheint jedoch die NAT-Zuweisung des eingehenden Datenverkehrs zu verweigern, wenn der sekundäre Server aktiv ist. Ich vermute, dass die ASA versucht, das Fälschen der Adresse zu verhindern, aber in diesem Fall hätte ich es wirklich gerne, wenn die ASA dies zulässt. Ich weiß nicht, wie ich das erreichen soll (oder wo ich eigentlich anfangen soll). Irgendwelche Vorschläge?
[0] – Eigentlich handelt es sich um ein Paar in einer Failover-Konfiguration, aber ich glaube nicht, dass das relevant ist.