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:
De volgende stappen worden weergegeven in het vorige diagram:
- Een client initieert een aanvraag voor een front-end van Application Gateway for Containers (Application Gateway for Containers).
- 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.
- Pod C retourneert een antwoord op Application Gateway for Containers.
- 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.
- De client verzendt een andere aanvraag naar Application Gateway for Containers, samen met de cookie voor sessieaffiniteit die in de vorige stap is ingesteld.
- Application Gateway for Containers detecteert de cookie en selecteert Pod C om de aanvraag te verwerken.
- Pod C reageert op Application Gateway for Containers.
- 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
eigenschappencookieDuration
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-cookie
of 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