Wir haben kürzlich HAProxy für stackoverflow.com implementiert. Wir haben uns für die Verwendung von TProxy entschieden, um die Quelladresse für Clients zu verwalten, die eine Verbindung herstellen, damit unsere Protokolle und andere IIS-Module, die von der Client-IP-Adresse abhängen, nicht geändert werden müssen. Die Pakete kommen also gefälscht an, als ob sie von einer externen Internet-IP-Adresse stammen, während sie in Wirklichkeit von einer lokalen 192.168.xx HAProxy-IP in unserem lokalen Netzwerk stammen.
Unsere beiden Webserver verfügen über zwei Netzwerkkarten - eine routingfähige Klasse-B-Adresse im öffentlichen Internet mit einer statischen IP-, DNS- und Standard-Gateway-Adresse und eine private nicht routbare Klasse-C-Adresse, die mit einem Standard-Gateway konfiguriert ist, das auf die private IP-Adresse für HAProxy verweist. HAProxy verfügt über zwei Schnittstellen - eine öffentliche und eine private - und leitet Pakete transparent zwischen Schnittstellen weiter und leitet den Datenverkehr an den entsprechenden Webserver weiter.
Ethernet-Adapter Internet: Beschreibung . . . . . . . . . . . : Netzwerkkarte Nr. 1 DHCP aktiviert. . . . . . . . . . . : Nein Autokonfiguration aktiviert. . . . : Ja IPv4-Adresse. . . . . . . . . . . : 69.59.196.217 (bevorzugt) Subnetzmaske. . . . . . . . . . . : 255.255.255.240 Standard-Gateway . . . . . . . . . : 69.59.196.209 DNS-Server. . . . . . . . . . . : 208.67.222.222 208.67.220.220 NetBIOS über Tcpip. . . . . . . . : Aktiviert Ethernet-Adapter Private Local: Beschreibung . . . . . . . . . . . : Netzwerkkarte Nr. 2 DHCP aktiviert. . . . . . . . . . . : Nein Autokonfiguration aktiviert. . . . : Ja IPv4-Adresse. . . . . . . . . . . : 192.168.0.2 (bevorzugt) Subnetzmaske. . . . . . . . . . . : 255.255.255.0 Standard-Gateway . . . . . . . . . : 192.168.0.50 NetBIOS über Tcpip. . . . . . . . : Aktiviert
Wir haben automatische Metriken auf jedem der Webserver deaktiviert und der routbaren öffentlichen Klasse B eine Metrik von 10 und unserer privaten Schnittstelle eine Metrik von 20 zugewiesen.
Wir haben auch beide Registrierungsschlüssel festgelegt:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DeadGWDetectDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"EnableDeadGWDetect"=dword:00000000
Ungefähr zweimal pro Tag treten Probleme auf, bei denen einer der Webserver keinen Kontakt zu DNS herstellen oder keine Verbindung zu anderen Servern im öffentlichen Internet herstellen kann.
Wir vermuten, dass die Erkennung eines toten Gateways fälschlicherweise einen Ausfall des öffentlichen Gateways erkennt und den gesamten Datenverkehr auf das private Gateway umleitet, das zu diesem Zeitpunkt keinen DNS-Zugriff hat, dies jedoch nicht überprüfen kann.
Gibt es eine Möglichkeit, festzustellen, ob die Erkennung eines toten Gateways ausgeführt wird, oder sogar eine Option in Windows 2008 Server?
Wenn ja, gibt es eine Möglichkeit, die Erkennung toter Gateways auf einem Windows 2008-Server zu deaktivieren?
Wenn nicht, könnte es andere Gründe geben, warum wir die Fähigkeit verlieren, DNS aufzulösen oder für kurze Zeit eine Verbindung herzustellen?
quelle
Antworten:
Diese DWORDs zur Erkennung toter Gateways sind unter Windows Server 2008 unbrauchbar. Der einzige Grund, warum sie existieren, ist aus Kompatibilitätsgründen. Der TCP / IP-Treiber und die Windows-Routerkomponenten suchen nicht mehr nach diesen Werten.
Ich vermute, dass diese Funktion in die automatische Optimierung integriert wurde, die unter Windows Vista eingeführt wurde. Versuchen Sie, Folgendes an einer Eingabeaufforderung mit erhöhten Rechten auszuführen (und neu zu starten):
Update ( hinzugefügt am 13. September 2009 um 19:58 Uhr EST )
Wenn das nicht funktioniert, benötigen wir mehr Diagnoseausgabe. Starten Sie eine (zirkuläre) Ablaufverfolgung mit den NetConnection- oder LAN-Szenarien und lassen Sie sie weiterlaufen, bis das Problem auftritt.
(Beispiel: Startet das NetConnection-Ablaufverfolgungsszenario mit einer maximalen Größe des Ablaufverfolgungsprotokolls von 512 MB.)
Sie können den resultierenden Trace in Network Monitor 3.3 öffnen. Stellen Sie lediglich sicher, dass Sie die neuesten Parser installieren .
quelle
Wir konnten kein schlüssiges Ergebnis erzielen, warum wir das Verhalten der Dead Gateway Detection nicht kontrollieren konnten.
Anstatt viel Zeit mit der Behebung dieses Problems zu verbringen, haben wir uns dafür entschieden, dass unsere HAProxy-Instanz den Datenverkehr zum ausgehenden Gateway weiterleitet und das Standard-Gateway beider Webserver auf die IP-Adresse von haproxy setzt und die interne Gateway-Adresse entfernt.
Jetzt gibt es nur noch ein Standard-Gateway, wodurch unser Problem behoben wird, da die Erkennung eines toten Standard-Gateways nicht mehr verwendet wird.
quelle
Ich würde fragen, warum Sie das Standard-Gateway überhaupt so ändern müssen, dass es überhaupt HAproxy ist. Im Allgemeinen sollten Sie Ihr Standard-Gateway überhaupt nicht ändern, es sei denn, Sie verweisen auf ein hochverfügbares N + 1-Setup, bei dem die Gateway-IP im Falle eines schlechten Ereignisses auf einen anderen Router / Computer umschalten kann. Wenn etwas mit Ihrem HAproxy-Computer passiert ist und Sie keinen Out-of-Band-Zugriff hatten, haben die Webserver einfach das Internet verlassen.
Da ich glaube, dass Sie dies möglicherweise tun, weil Sie Tproxy in Ihrem Setup verwenden, damit die IP-Adresse des Clients in Ihren Protokollen und nicht in der IP des Proxyservers angezeigt wird, kann ich vorschlagen, dass Sie dies stattdessen tun
Ich habe keinen Windows-Computer, auf dem ich dies testen kann, aber ich glaube, dass dies den gewünschten Effekt ohne den unerwünschten Verlust der Konnektivität erzielen sollte.
quelle
x-forwarded-for
Headers und der IIS-Filter zum Ändern der Protokolle angesehen, wissen jedoch nicht, wie (oder ob) unsere anderen optionalen IIS-Module den Header ebenfalls in ihrem Betrieb verwenden.Wenn der Internetzugang (normalerweise) betroffen ist, sollten Standard-Gateways NIEMALS verwendet werden, um einen Pfad zum INTERNET anzugeben. Wenn Sie mehrere Standardgateways definiert haben, kann der Betriebssystemrouter nicht entscheiden, welches verwendet werden soll. Wenn ein Standardgateway auf eine Sackgasse (z. B. Ihr Multisegment-LAN) verweist, sind die dort für das Internet weitergeleiteten Pakete werde es nicht schaffen.
quelle