Udostępnij przez


Omówienie powiązania sesji w Application Gateway for Containers

Afinitet sesji, zwany także trwałością sesji lub sesjami przypisanymi, jest techniką używaną w równoważeniu obciążenia w celu zapewnienia, że żądania klienta są zawsze wysyłane do tego samego serwera. Jest to ważne w przypadku aplikacji, które przechowują dane użytkownika w zmiennych sesji lub w lokalnej pamięci podręcznej na określonym serwerze (często określane jako aplikacja stanowa).

W przypadku koligacji sesji usługa Application Gateway dla kontenerów przedstawia plik cookie w nagłówku Set-Cookie pierwszej odpowiedzi. Jeśli klient przesyła plik cookie w przyszłych żądaniach, usługa Application Gateway for Containers rozpoznaje plik cookie i przekazuje ruch do tego samego serwera w backendzie. Zobacz następujący przykładowy scenariusz:

Diagram przedstawiający powiązanie sesji w usłudze Application Gateway for Containers.

Poniższe kroki przedstawiono na poprzednim diagramie:

  1. Klient inicjuje żądanie do frontonu usługi Application Gateway for Containers (Application Gateway for Containers).
  2. Usługa Application Gateway for Containers wybiera jeden z wielu dostępnych podów do zrównoważenia obciążenia względem żądania. W tym przykładzie zakładamy, że zasobnik Pod C jest wybrany spośród czterech dostępnych zasobników.
  3. Pod C zwraca odpowiedź do Application Gateway for Containers.
  4. Oprócz odpowiedzi backendu z Pod C, Application Gateway dla kontenerów dodaje nagłówek Set-Cookie, który zawiera unikatowo wygenerowany skrót używany do routingu.
  5. Klient wysyła kolejne żądanie do usługi Application Gateway for Containers wraz z plikiem cookie koligacji sesji ustawionym w poprzednim kroku.
  6. Usługa Application Gateway dla kontenerów wykrywa plik cookie i wybiera zasobnik C, aby obsłużyć żądanie.
  7. Moduł C odpowiada na bramę aplikacyjną dla kontenerów.
  8. Usługa Application Gateway dla kontenerów zwraca odpowiedź do klienta.

Szczegóły użycia

Trwałość sesji jest definiowana przez następujące właściwości i cechy:

Nazwa/nazwisko opis
typ powinowactwa Prawidłowe wartości to plik cookie aplikacji lub plik cookie zarządzany.
nazwa pliku cookie Wymagane, jeśli typ koligacji to application-cookie. Jest to nazwa pliku cookie.
czas trwania ciasteczka Wymagane, jeśli typ koligacji to application-cookie. Jest to czas trwania (okres istnienia) pliku cookie w sekundach.

W przypadku zarządzanego typu koligacji plików cookie usługa Application Gateway używa wstępnie zdefiniowanych wartości, gdy plik cookie jest oferowany klientowi.

  • Nazwa pliku cookie to: AGCAffinity.
  • Czas trwania (okres istnienia) pliku cookie wynosi 86 400 sekund (jeden dzień).
  • Właściwości cookieName i cookieDuration oraz wartości są odrzucane.

W typie koligacji aplikacji należy jawnie zdefiniować nazwę pliku cookie i czas trwania (okres istnienia).

Jak skonfigurować przyleganie sesji

Koligację sesji można zdefiniować w zasobie RoutePolicy , który jest przeznaczony dla zdefiniowanej usługi HTTPRoute. Musisz określić sessionAffinity za pomocą affinityType, wybierając pomiędzy application-cookie a managed-cookie. W tym przykładzie używamy application-cookie jako affinityType oraz jawnie definiujemy nazwę i czas istnienia pliku cookie.

Przykładowe polecenie umożliwiające utworzenie nowego obiektu RoutePolicy ze zdefiniowanym plikiem cookie o nomnom okresie istnienia 3600 sekund (1 godzina).

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: RoutePolicy
metadata:
  name: session-affinity-route-policy
spec:
  targetRef:
    kind: HTTPRoute
    name: http-route
    namespace: test-infra
    group: ""
  default:
    sessionAffinity: 
      affinityType: "application-cookie"
      cookieName: "nomnom"
      cookieDuration: 3600s
EOF