Cette page explique comment activer l'affinité de session pour votre révision de service Cloud Run.
Fonctionnement de l'affinité de session
Par défaut, l'affinité de session n'est pas activée. Par conséquent, les requêtes d'un même client peuvent être traitées par différentes instances, comme illustré ci-après :
Si vous activez l'affinité de session, Cloud Run achemine les requêtes séquentielles d'un client donné vers la même instance de révision. Cloud Run utilise un cookie d'affinité de session avec une valeur TTL de 30 jours. Il inspecte ensuite sa valeur pour identifier plusieurs requêtes provenant du même client et dirige toutes ces requêtes vers la même instance, comme illustré ci-après :
Comportements clés à connaître
Comme le montre le diagramme ci-dessus, avec l'affinité de session activée, un client atteint la même instance. Notez toutefois que l'instance peut recevoir des requêtes de différents clients. L'affinité de session ne signifie pas que l'instance est dédiée à un seul client.
En raison du comportement d'autoscaling de Cloud Run, l'affinité de session est assurée de la façon la plus optimale possible. Si l'instance est arrêtée pour une raison quelconque, ou si elle atteint la simultanéité de requête maximale ou l'utilisation maximale du processeur, l'affinité de session est rompue et les autres requêtes sont acheminées vers une autre instance.
Bien que vous puissiez mettre en cache les données de session client dans des instances, vous ne pouvez pas supposer qu'un client va systématiquement se reconnecter à la même instance, même lorsque l'affinité de session est activée.
L'affinité de session Cloud Load Balancing et l'affinité de session Cloud Run sont deux implémentations distinctes et indépendantes de l'affinité de session. Vous pouvez activer l'affinité de session de Cloud Run sur un service Cloud Run, même s'il se trouve derrière un équilibreur de charge. Toutefois, vous ne devez pas activer l'affinité de session Cloud Load Balancing sur un groupe de points de terminaison du réseau sans serveur, car elle n'est pas compatible.
Affinité de session et répartition du trafic
Vous activez ou désactivez l'affinité de session au niveau de la révision. Si vous activez l'affinité de session sur une révision Cloud Run et si vous utilisez également la répartition du trafic, l'affinité de session est prioritaire sur toute répartition de trafic. Dans les cas extrêmes, si un seul client utilisant l'affinité de session est à l'origine d'une grande majorité des requêtes, toutes celles-ci peuvent être acheminées vers une révision donnée, quelle que soit la configuration de la répartition du trafic.
Si vous activez la répartition du trafic pour des révisions parmi lesquelles certaines ont aussi l'affinité de session activée, tandis que d'autres non, les requêtes sont décalées progressivement vers les révisions pour lesquelles l'affinité de session est activée, même si vous ne modifiez pas explicitement la configuration de la répartition du trafic. En effet, chaque requête qui n'est pas associée à un cookie d'affinité de session est soumise à une répartition aléatoire, qui va entraîner l'attribution de certaines de ces requêtes à une révision avec affinité de session, ces requêtes restant par la suite associées à cette révision particulière.
Lors de la mise à jour de la configuration de répartition du trafic pour un service Cloud Run, les requêtes ultérieures associées à des cookies d'affinité de session peuvent être attribuées à une autre révision. Cloud Run réduit le nombre de clients redirigés vers une nouvelle révision.
Par exemple, si un service répartit le trafic selon une base de 90 %/10 % et que la répartition du trafic est mise à jour à 80 %/20 %, alors 10 % du trafic sera redirigé vers la révision qui va diffuser 20 % du trafic.
Définir l'affinité de session
Tout changement de configuration entraîne la création d'une révision. Les révisions ultérieures obtiennent aussi automatiquement le même paramètre de configuration, à moins que vous ne le mettiez explicitement à jour.
Vous pouvez définir l'affinité de session à l'aide de la console Google Cloud, de l'outil de ligne de commande gcloud ou d'un fichier .yaml lorsque vous créez un service ou déployez une nouvelle révision :
Console
Dans la console Google Cloud, accédez à Cloud Run :
Cliquez sur Déployer un conteneur et sélectionnez Service pour configurer un nouveau service. Si vous configurez un service existant, cliquez sur celui-ci puis sur Modifier et déployer la nouvelle révision.
Si vous configurez un nouveau service, remplissez la page initiale des paramètres du service, puis cliquez sur Conteneur(s), volumes, mise en réseau et sécurité pour développer la page de configuration du service.
Cliquez sur l'onglet Réseau.
- Cliquez dans la zone de texte Affinité de session.
Cliquez sur Créer ou Déployer.
gcloud
Pour spécifier l'affinité de session, utilisez la commande suivante :
gcloud run services update SERVICE --session-affinity
Remplacer
- SERVICE par le nom du service que vous mettez à jour.
Pour supprimer l'affinité de session, utilisez la commande suivante :
gcloud run services update SERVICE --no-session-affinity
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Ajoutez l'annotation
run.googleapis.com/sessionAffinity:
:spec: template: metadata: annotations: run.googleapis.com/sessionAffinity: 'BOOL'
Remplacer
- "BOOL" par la valeur "
true
" ou "false
" pour respectivement définir ou désactiver l'affinité de session.
- "BOOL" par la valeur "
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Afficher les paramètres d'affinité de session
Pour afficher les paramètres d'affinité de session actuels de votre service Cloud Run, procédez comme suit :
Console
Dans la console Google Cloud, accédez à Cloud Run :
Cliquez sur le service qui vous intéresse pour ouvrir la page Informations sur le service.
Cliquez sur l'onglet Révisions.
Dans le panneau de détails sur la droite, le paramètre d'affinité de session est listé sous l'onglet Mise en réseau.
gcloud
Exécutez la commande suivante :
gcloud run services describe SERVICE
Recherchez le paramètre d'affinité de session dans la configuration renvoyée.