Udostępnij za pośrednictwem


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

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:

  1. Zaloguj się w witrynie Azure Portal.

  2. 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.

  3. Wybierz kartę Ustawienia HTTP w obszarze USTAWIENIA.

    Zrzut ekranu przedstawiający ustawienia USTAWIENIA z wybranymi ustawieniami H T T P.

  4. Wybierz ustawienie HTTP, a na stronie Dodawanie ustawienia HTTP sprawdź, czy koligacja oparta na plikach cookie jest włączona.

    Zrzut ekranu przedstawiający ustawienia bramy dla bramy aplikacji, w tym informacje o tym, czy wybrano koligację opartą na plikach cookie.

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:

"cookieBasedAffinity": "Enabled", 

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.

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:

  1. 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.

  2. 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:

    Zrzut ekranu przedstawia dziennik sesji z wyróżnionym pojedynczym wpisem.

    Zrzut ekranu przedstawiający nagłówki żądań dla języka H T T P, w tym informacje o plikach cookie.

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.

  1. 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.

  2. Aby rozpocząć zbieranie danych, wybierz pozycję Dodaj ustawienie diagnostyczne.

    Zrzut ekranu przedstawiający bramę aplikacji z wybranymi ustawieniami diagnostyki.

  3. 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.

    Zrzut ekranu przedstawiający okienko Ustawienia diagnostyki z wybraną pozycją Konfiguracja usługi Log Analytics.

  4. 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:

  1. Pobierz program Fiddler.

    Uwaga

    Wybierz program Fiddler4, jeśli komputer przechwytujący ma zainstalowany program .NET 4. W przeciwnym razie wybierz pozycję Fiddler2.

  2. Kliknij prawym przyciskiem myszy plik wykonywalny instalacji i uruchom polecenie jako administrator, aby zainstalować.

    Zrzut ekranu przedstawia program instalacyjny programu Fiddler z menu kontekstowym z wybraną pozycją Uruchom jako administrator.

  3. 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.

    Zrzut ekranu przedstawiający debuger internetowy programu Fiddler z wyróżnionym wskaźnikiem Przechwytywanie.

  4. 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".

    Zrzut ekranu przedstawiający opcje w programie Fiddler z wybranymi opcjami H T T P i wybranym ruchem Odszyfruj ruch HTTPS.

  5. Poprzednie niepowiązane sesje można usunąć przed odtworzeniem problemu, klikając pozycję X (ikona) >Usuń wszystko w następujący sposób:

    Zrzut ekranu przedstawia wybraną ikonę X, która wyświetla opcję Usuń wszystkie.

  6. Po odtworzeniu problemu zapisz plik do przeglądu, wybierając pozycję Zapisz wszystkie sesje.>>

    Zrzut ekranu przedstawia wybraną opcję Zapisz wszystkie sesje.

  7. 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.

    Zrzut ekranu przedstawia przykład szczegółów wpisu dziennika z wyróżnioną wartością Set-Cookie.

  • 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ę.

    Zrzut ekranu przedstawia przykład szczegółów wpisu dziennika z wyróżnionym plikiem cookie.

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.