Delen via


Overzicht van sessieaffiniteit van Application Gateway for Containers

Sessieaffiniteit, ook wel sessiepersistentie of plaksessies genoemd, is een techniek die wordt gebruikt in taakverdeling om ervoor te zorgen dat aanvragen van een client altijd naar dezelfde server worden verzonden. Dit is belangrijk voor toepassingen die gebruikersgegevens opslaan in sessievariabelen of in een lokale cache op een bepaalde server (meestal een stateful toepassing genoemd).

Met sessieaffiniteit presenteert Application Gateway for Containers een cookie in de Set-Cookie-header van het eerste antwoord. Als de client de cookie in toekomstige aanvragen presenteert, herkent Application Gateway for Containers de cookie en stuurt verkeer door naar hetzelfde back-enddoel. Zie het volgende voorbeeldscenario:

Een diagram met Application Gateway for Containers-sessieaffiniteit.

De volgende stappen worden weergegeven in het vorige diagram:

  1. Een client initieert een aanvraag voor een front-end van Application Gateway for Containers (Application Gateway for Containers).
  2. Application Gateway for Containers selecteert een van de vele beschikbare pods om de aanvraag te load balancen. In dit voorbeeld wordt ervan uitgegaan dat Pod C is geselecteerd uit de vier beschikbare pods.
  3. Pod C retourneert een antwoord op Application Gateway for Containers.
  4. Naast het backend-antwoord van Pod C voegt Application Gateway for Containers een Set-Cookie-header toe die een uniek gegenereerde hash bevat voor routering.
  5. De client verzendt een andere aanvraag naar Application Gateway for Containers, samen met de cookie voor sessieaffiniteit die in de vorige stap is ingesteld.
  6. Application Gateway for Containers detecteert de cookie en selecteert Pod C om de aanvraag te verwerken.
  7. Pod C reageert op Application Gateway for Containers.
  8. Application Gateway for Containers retourneert het antwoord aan de client

Gebruiksgegevens

Sessieaffiniteit wordt gedefinieerd door de volgende eigenschappen en kenmerken:

Naam Beschrijving
affiniteittype Geldige waarden zijn application-cookie of managed-cookie.
cookieNaam Vereist als affinityType toepassingscookie is. Dit is de naam van de cookie.
cookieDuration Vereist als affinityType toepassingscookie is. Dit is de duur (levensduur) van de cookie in seconden.

In het type beheerde cookieaffiniteit gebruikt Application Gateway vooraf gedefinieerde waarden wanneer de cookie aan de client wordt aangeboden.

  • De naam van de cookie is: AGCAffinity.
  • De duur (levensduur) van de cookie is 86.400 seconden (één dag).
  • De cookieName eigenschappen cookieDuration en waarden worden verwijderd.

In toepassingsaffiniteitstype moet de cookienaam en duur (levensduur) expliciet worden gedefinieerd.

Sessieaffiniteit configureren

Sessieaffiniteit kan worden gedefinieerd in een RoutePolicy-resource , die is gericht op een gedefinieerde HTTPRoute. U moet sessionAffinity opgeven met een affinityType van of application-cookie of managed-cookie. In dit voorbeeld gebruiken application-cookie we als affinityType en definiëren we expliciet een cookienaam en levensduur.

Voorbeeldopdracht voor het maken van een nieuwe RoutePolicy met een gedefinieerde cookie nomnom met een levensduur van 3.600 seconden (1 uur).

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