Rozwiązywanie problemów z koligacją sesji bramy aplikacja systemu Azure
Dowiedz się, jak diagnozować i rozwiązywać problemy z koligacją sesji w usłudze aplikacja systemu Azure Gateway.
Uwaga
Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.
Omówienie
Funkcja koligacji sesji opartej na plikach cookie jest przydatna do przechowywania sesji użytkownika na tym samym serwerze. Używając plików cookie zarządzanych przez bramę, usługa Application Gateway może kierować dalszy ruch z sesji użytkownika na ten sam serwer w celu przetwarzania. Jest to ważne w przypadkach, w których stan sesji jest zapisywany lokalnie na serwerze dla sesji użytkownika. Koligacja sesji jest również znana jako sesje sticky.
Uwaga
Usługa Application Gateway w wersji 1 wystawia plik cookie o nazwie ARRAffinity, który służy do kierowania ruchu do tego samego elementu członkowskiego puli zaplecza. W usłudze Application Gateway w wersji 2 nazwa tego pliku cookie została zmieniona na ApplicationGatewayAffinity. Na potrzeby tego dokumentu aplikacja ApplicationGatewayAffinity będzie używana jako przykład, aRRAffinity może zostać zastąpiona w przypadku wystąpień usługi Application Gateway w wersji 1.
Możliwe przyczyny problemu
Problem z utrzymywaniem koligacji sesji opartej na plikach cookie może wystąpić z następujących głównych powodów:
- Ustawienie "Koligacja oparta na plikach cookie" nie jest włączone
- Aplikacja nie może obsługiwać koligacji opartej na plikach cookie
- Aplikacja korzysta z koligacji opartej na plikach cookie, ale żądania nadal odbijają się między serwerami zaplecza
Sprawdź, czy ustawienie "Koligacja oparta na plikach cookie" jest włączone
Czasami problemy z koligacją sesji mogą wystąpić, gdy zapomnisz włączyć ustawienie "Koligacja oparta na plikach cookie". Aby określić, czy włączono ustawienie "Koligacja oparta na plikach cookie" na karcie Ustawienia HTTP w witrynie Azure Portal, postępuj zgodnie z instrukcjami:
Zaloguj się w witrynie Azure Portal.
W okienku nawigacji po lewej stronie kliknij pozycję Wszystkie zasoby. Kliknij nazwę bramy aplikacji w bloku Wszystkie zasoby. Jeśli wybrana subskrypcja ma już kilka zasobów, możesz wprowadzić nazwę bramy aplikacji w polu Filtruj według nazwy... w celu łatwego uzyskania dostępu do bramy aplikacji.
Wybierz kartę Ustawienia HTTP w obszarze USTAWIENIA.
Wybierz ustawienie HTTP, a na stronie Dodawanie ustawienia HTTP sprawdź, czy koligacja oparta na plikach cookie jest włączona.
Możesz również sprawdzić, czy wartość parametru "CookieBasedAffinity" jest ustawiona na wartość Włączonew obszarze "backendHttpSettingsCollection", używając jednej z następujących metod:
- Uruchamianie polecenia Get-AzApplicationGatewayBackendHttpSetting w programie PowerShell
- Przejrzyj plik JSON przy użyciu szablonu usługi Azure Resource Manager
"cookieBasedAffinity": "Enabled",
Aplikacja nie może obsługiwać koligacji opartej na plikach cookie
Przyczyna
Brama aplikacji może wykonywać koligację opartą na sesji tylko przy użyciu pliku cookie.
Rozwiązanie
Jeśli aplikacja nie może obsługiwać koligacji opartej na plikach cookie, musisz użyć zewnętrznego lub wewnętrznego modułu równoważenia obciążenia platformy Azure lub innego rozwiązania innej firmy.
Aplikacja korzysta z koligacji opartej na plikach cookie, ale żądania nadal odbijają się między serwerami zaplecza
Objaw
Ustawienie Koligacja oparta na plikach cookie została włączona, gdy uzyskujesz dostęp do usługi Application Gateway przy użyciu krótkiego adresu URL w programie Internet Explorer, na przykład: http://website
, żądanie nadal odbija się między serwerami zaplecza.
Aby zidentyfikować ten problem, postępuj zgodnie z instrukcjami:
Pobierz ślad debugera internetowego na kliencie, który łączy się z aplikacją za usługą Application Gateway (w tym przykładzie używamy programu Fiddler). Porada Jeśli nie wiesz, jak używać programu Fiddler, zaznacz opcję "Chcę zbierać ruch sieciowy i analizować go przy użyciu debugera internetowego" u dołu.
Sprawdź i przeanalizuj dzienniki sesji, aby określić, czy pliki cookie dostarczone przez klienta mają szczegóły applicationGatewayAffinity. Jeśli nie znajdziesz szczegółów applicationGatewayAffinity, takich jak "ApplicationGatewayAffinity= ApplicationGatewayAffinityValue" w zestawie plików cookie, oznacza to, że klient nie odpowiada za pomocą pliku cookie ApplicationGatewayAffinity, który jest dostarczany przez usługę Application Gateway. Na przykład:
Aplikacja nadal próbuje ustawić plik cookie na każdym żądaniu, dopóki nie otrzyma odpowiedzi.
Przyczyna
Ten problem występuje, ponieważ program Internet Explorer i inne przeglądarki mogą nie przechowywać ani używać pliku cookie z krótkim adresem URL nazwy.
Rozwiązanie
Aby unikać występowania tego problem, należy uzyskiwać dostęp do usługi Application Gateway przy użyciu nazwy FQDN. Na przykład użyj polecenia http://website.com lub http://appgw.website.com .
Dodatkowe dzienniki do rozwiązywania problemów
Możesz zbierać dodatkowe dzienniki i analizować je, aby rozwiązać problemy związane z koligacją sesji opartej na plikach cookie
Analizowanie dzienników usługi Application Gateway
Aby zebrać dzienniki usługi Application Gateway, postępuj zgodnie z instrukcjami:
Włączanie rejestrowania przy użyciu witryny Azure Portal.
W witrynie Azure Portal znajdź zasób, a następnie wybierz pozycję Ustawienie diagnostyczne.
W przypadku usługi Application Gateway dostępne są trzy dzienniki: dziennik dostępu, dziennik wydajności i dziennik zapory.
Aby rozpocząć zbieranie danych, wybierz pozycję Dodaj ustawienie diagnostyczne.
Strona Ustawienia diagnostyczne zawiera ustawienia dzienników diagnostycznych. W tym przykładzie usługa Log Analytics przechowuje dzienniki. Na potrzeby zapisywania dzienników diagnostycznych można także skorzystać z usługi Event Hubs i konta magazynu.
Potwierdź ustawienia, a następnie wybierz pozycję Zapisz.
Używanie debugera internetowego do przechwytywania i analizowania ruchu HTTP lub HTTPS
Narzędzia do debugowania sieci Web, takie jak Fiddler, mogą ułatwić debugowanie aplikacji internetowych przez przechwytywanie ruchu sieciowego między Internetem a komputerami testowymi. Te narzędzia umożliwiają inspekcję danych przychodzących i wychodzących w miarę odbierania/wysyłania ich przez przeglądarkę. W tym przykładzie program Fiddler ma opcję odtwarzania HTTP, która może pomóc w rozwiązywaniu problemów po stronie klienta z aplikacjami internetowymi, szczególnie w przypadku problemu z uwierzytelnianiem.
Użyj wybranego debugera internetowego. W tym przykładzie użyjemy programu Fiddler do przechwytywania i analizowania ruchu http lub https, postępuj zgodnie z instrukcjami:
Pobierz program Fiddler.
Uwaga
Wybierz program Fiddler4, jeśli komputer przechwytujący ma zainstalowany program .NET 4. W przeciwnym razie wybierz pozycję Fiddler2.
Kliknij prawym przyciskiem myszy plik wykonywalny instalacji i uruchom polecenie jako administrator, aby zainstalować.
Po otwarciu programu Fiddler powinno ono automatycznie rozpocząć przechwytywanie ruchu (zwróć uwagę na przechwytywanie w lewym dolnym rogu). Naciśnij F12, aby uruchomić lub zatrzymać przechwytywanie ruchu.
Najprawdopodobniej będziesz zainteresowany odszyfrowywaniem ruchu HTTPS i możesz włączyć odszyfrowywanie HTTPS, wybierając pozycję Narzędzia>Opcje programu Fiddler, a następnie zaznacz pole "Odszyfruj ruch HTTPS".
Poprzednie niepowiązane sesje można usunąć przed odtworzeniem problemu, klikając pozycję X (ikona) >Usuń wszystko w następujący sposób:
Po odtworzeniu problemu zapisz plik do przeglądu, wybierając pozycję Zapisz wszystkie sesje.>>
Sprawdź i przeanalizuj dzienniki sesji, aby ustalić, jaki jest problem.
Przykłady:
Przykład: Znajdujesz dziennik sesji, który jest wysyłany z klienta i przechodzi do publicznego adresu IP usługi Application Gateway, kliknij ten dziennik, aby wyświetlić szczegóły. Po prawej stronie dane w dolnym polu są zwracane do klienta przez usługę Application Gateway. Wybierz kartę "RAW" i określ, czy klient otrzymuje element "Set-Cookie: ApplicationGatewayAffinity= ApplicationGatewayAffinityValue". Jeśli nie ma pliku cookie, koligacja sesji nie jest ustawiona lub usługa Application Gateway nie stosuje pliku cookie z powrotem do klienta.
Uwaga
Ta wartość ApplicationGatewayAffinity to identyfikator pliku cookie, który usługa Application Gateway ustawia dla klienta, który ma być wysyłany do określonego serwera zaplecza.
Przykład B: Następny dziennik sesji, po którym następuje poprzedni, jest klient odpowiedzią z powrotem do usługi Application Gateway, która ustawiła wartość ApplicationGatewayAffinity. Jeśli parametr ApplicationGatewayAffinity jest zgodny z identyfikatorem pliku cookie, pakiet powinien zostać wysłany do tego samego serwera zaplecza, który był wcześniej używany. Sprawdź kilka następnych wierszy komunikacji http, aby sprawdzić, czy plik cookie ApplicationGatewayAffinity klienta zmienia się.
Uwaga
W przypadku tej samej sesji komunikacji plik cookie nie powinien ulec zmianie. Zaznacz pole u góry po prawej stronie, wybierz kartę "Pliki cookie", aby sprawdzić, czy klient używa pliku cookie i wysyła go z powrotem do usługi Application Gateway. Jeśli tak nie jest, przeglądarka klienta nie jest przechowywana i używa pliku cookie do konwersacji. Czasami klient może kłamać.
Następne kroki
Jeśli powyższe kroki nie rozwiążą problemu, otwórz bilet pomocy technicznej.