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 verdelen. 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 back-endantwoord van Pod C voegt Application Gateway for Containers een set-cookie-header toe die een uniek gegenereerde hash bevat die wordt gebruikt 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 op de client

Gebruiksgegevens

Sessieaffiniteit wordt gedefinieerd door de volgende eigenschappen en kenmerken:

Name Beschrijving
affinityType Geldige waarden zijn application-cookie of managed-cookie.
cookieName 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 opgeven sessionAffinity met een van application-cookie managed-cookieof affinityType . 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: 3600
EOF