Niedawno wdrożyliśmy HAProxy dla stackoverflow.com. Zdecydowaliśmy się użyć TProxy do utrzymania adresu źródłowego dla klientów łączących się, aby nasze dzienniki i inne moduły IIS zależne od adresu IP klienta nie wymagały modyfikacji. Pakiety przybywają sfałszowane, jakby pochodziły z zewnętrznego internetowego adresu IP, podczas gdy w rzeczywistości pochodziły z lokalnego adresu IP 192.168.xx HAProxy w naszej sieci lokalnej.
Oba nasze serwery mają dwie karty sieciowe - jeden adres klasy routowalnej B w publicznym Internecie ze statycznym adresem IP, DNS i bramą domyślną oraz jeden prywatny adres klasy C niemożliwy do routingu skonfigurowany z bramą domyślną wskazaną na prywatny adres IP dla HAProxy. HAProxy ma dwa interfejsy - jeden publiczny i jeden prywatny i wykonuje zadanie przezroczystego routingu pakietów między interfejsami i kierowania ruchu do odpowiedniego serwera WWW.
Internetowy adapter Ethernet: Opis . . . . . . . . . . : karta sieciowa nr 1 DHCP włączony. . . . . . . . . . . : Nie Autokonfiguracja włączona. . . . : Tak Adres IPv4. . . . . . . . . . . : 69.59.196.217 (Preferowane) Maska podsieci . . . . . . . . . . . : 255.255.255.240 Brama domyślna . . . . . . . . . : 69.59.196.209 Serwery DNS. . . . . . . . . . . : 208,67.222.222 208,67.220.220 NetBIOS przez Tcpip. . . . . . . . : Włączone Adapter Ethernet Prywatny lokalny: Opis . . . . . . . . . . : karta sieciowa nr 2 DHCP włączony. . . . . . . . . . . : Nie Autokonfiguracja włączona. . . . : Tak Adres IPv4. . . . . . . . . . . : 192.168.0.2 (Preferowane) Maska podsieci . . . . . . . . . . . : 255.255.255.0 Brama domyślna . . . . . . . . . : 192.168.0.50 NetBIOS przez Tcpip. . . . . . . . : Włączone
Wyłączyliśmy automatyczne pomiary na każdym z serwerów sieciowych i przypisaliśmy metodzie publicznej klasy B routowalnej metrykę 10, a nasz prywatny interfejs metrykę 20.
Ustawiliśmy także oba te klucze rejestru:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"DeadGWDetectDefault"=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"EnableDeadGWDetect"=dword:00000000
Mniej więcej dwa razy dziennie widzimy problemy, w których jeden z serwerów internetowych nie może skontaktować się z DNS lub nawiązać połączenia z innymi serwerami w publicznym Internecie.
Podejrzewamy, że wykrywanie martwej bramy fałszywie wykrywa awarię bramy publicznej i przełącza cały ruch na bramę prywatną, która w tym momencie nie ma dostępu do DNS, ale nie ma możliwości zweryfikowania tego.
Czy istnieje sposób, aby dowiedzieć się, czy wykrywanie martwej bramy jest uruchomione, czy nawet opcja na serwerze Windows 2008?
Jeśli tak, to czy istnieje sposób na wyłączenie wykrywania martwej bramy w serwerze Windows 2008?
Jeśli nie, czy mogą istnieć inne powody, dla których tracimy możliwość rozwiązania DNS lub nawiązania połączenia na krótki czas?
źródło
Odpowiedzi:
Te DWORD wykrywania Dead Gateway są bezużyteczne w systemie Windows Server 2008. Jedynym powodem, dla którego istnieją, są względy zgodności. Sterownik TCP / IP i składniki routera Windows nie szukają już tych wartości.
Podejrzewam, że ta funkcja została wprowadzona do funkcji Auto-Tuning, która zadebiutowała w systemie Windows Vista. Spróbuj wykonać następujące czynności w wierszu polecenia z podwyższonym poziomem uprawnień (i uruchom ponownie):
Aktualizacja ( dodano 13 września 2009 r. O godz. 7:58 PST EST )
Jeśli to nie zadziała, potrzebujemy więcej danych diagnostycznych. Rozpocznij śledzenie (cykliczne) za pomocą scenariuszy NetConnection lub LAN i pozwól mu kontynuować działanie do momentu wystąpienia problemu.
(Przykład: uruchamia scenariusz śledzenia NetConnection z maksymalnym rozmiarem dziennika śledzenia 512 MB)
Możesz otworzyć wynikowy ślad w Network Monitor 3.3 , po prostu upewnij się, że zainstalowałeś najnowsze parsery .
źródło
Nie byliśmy w stanie dojść do jednoznacznego wyniku, dlaczego nie mogliśmy kontrolować zachowania Dead Gateway Detection.
Zamiast spędzać mnóstwo czasu na rozwiązywaniu tego problemu, zdecydowaliśmy, aby nasza instancja HAProxy kierowała ruchem do bramy wychodzącej i ustawiła domyślną bramę obu serwerów WWW na adres IP haproxy i usunęła adres bramy wewnętrznej.
Teraz jest tylko jedna brama domyślna, która eliminuje nasz problem, ponieważ wykrywanie martwej bramy domyślnej nie jest już używane.
źródło
Chciałbym zapytać, dlaczego w ogóle musisz zmienić domyślną bramę na HAproxy. Zasadniczo nie powinieneś w ogóle zmieniać domyślnej bramy, chyba że wskazujesz ją na wysoce dostępną konfigurację N + 1, w której adres IP bramy może zostać przełączony na inny router / komputer w przypadku awarii. Jeśli coś stanie się z maszyną HAproxy i nie będziesz mieć dostępu poza pasmem, serwery internetowe po prostu odpadną z Internetu.
Ponieważ uważam, że powodem tego może być to, że używasz Tproxy w konfiguracji, aby adres IP klientów pojawiał się w dziennikach, a nie adres IP serwera proxy, czy mogę zasugerować, abyś to zrobił zamiast tego
Nie mam komputera z systemem Windows, aby to przetestować, ale uważam, że powinno to przynieść pożądany efekt bez niepożądanej utraty łączności.
źródło
x-forwarded-for
nagłówka i filtrów IIS do zmiany dzienników, ale nie wiemy, w jaki sposób (lub czy) nasze inne opcjonalne moduły IIS również używają nagłówka podczas ich działania.Gdy w grę wchodzi dostęp do Internetu (zwykle), wówczas bramy domyślne powinny być NIGDY używane do oznaczenia ścieżki do INTERNETU. Jeśli zdefiniowano wiele bram domyślnych, router systemu operacyjnego nie może zdecydować, którego z nich użyć, a jeśli jedna brama domyślna wskazuje ślepą uliczkę (np. Wielosegmentową sieć LAN), wówczas pakiety przekazywane do Internetu są nie uda mi się.
źródło