Prérequis
- Votre service doit disposer d’au moins 2 répliques. Sur un service à réplique unique, il n’y a rien à épingler.
- Disponible par défaut sur Enterprise lorsque la fonctionnalité est en GA.
- Pris en charge sur les services ClickHouse Cloud standard. BYOC n’est pas encore pris en charge.
Configuration du routage tenant compte des répliques
session_id jusqu’à ce que vous receviez une confirmation ; X-ClickHouse-Replica-Tag ne fournira pas de routage sticky tant que le déploiement progressif n’aura pas atteint votre service. Aucun redémarrage n’est nécessaire.
Routage HTTP
- X-ClickHouse-Replica-Tag (recommandé)
- session_id (legacy)
Pour associer une charge de travail à une réplique, envoyez un en-tête Pour clickhouse-go (v2), définissez
X-ClickHouse-Replica-Tag via l’interface HTTPS. Le proxy applique un hachage cohérent à la valeur de l’en-tête : les requêtes partageant cette valeur sont donc dirigées vers la même réplique tant que le nombre de répliques reste inchangé. Une valeur différente est hachée indépendamment et peut être associée à la même réplique ou à une autre, mais vous ne choisissez pas à quelle réplique une valeur est associée.Utilisez le hostname existant de votre service. Aucun hostname sticky spécifique ni aucune modification DNS ne sont nécessaires. La valeur de l’en-tête peut être n’importe quelle chaîne de votre choix, par exemple un nom d’application, un ID utilisateur ou un label de charge de travail. Les requêtes sans cet en-tête conservent l’équilibrage de charge habituel.Définissez l’en-tête X-ClickHouse-Replica-Tag pour chaque requête :Protocol: clickhouse.HTTP et transmettez l’en-tête à l’aide de l’option de connexion HttpHeaders.X-ClickHouse-Replica-Tag assure une affinité avec une réplique sans créer de session HTTP ClickHouse. Les requêtes concurrentes peuvent réutiliser le même tag sans rencontrer l’erreur SESSION_IS_LOCKED.Cohérence lecture après écriture
Dans un service comportant plusieurs répliques, une écriture effectuée sur une réplique peut ne pas être visible sur les autres tant que la réplication n’a pas rattrapé son retard. Envoyez votre écriture avec un en-têteX-ClickHouse-Replica-Tag, puis réutilisez la même valeur d’en-tête pour les lectures suivantes. Le proxy achemine les deux requêtes vers la même réplique : vous lisez donc votre propre écriture, même si les autres répliques sont encore en retard. Ce modèle convient aux workloads qui écrivent des données, puis les relisent immédiatement, comme les applications interactives ou les jobs ETL qui valident les inserts avant de poursuivre.Pour des garanties plus étendues sur l’ensemble des répliques, vous pouvez également définir select_sequential_consistency sur 1 dans ClickHouse Cloud.Vérifier quelle réplique est utilisée
Exécutez à nouveau l’exempleSELECT hostName() avec la même valeur X-ClickHouse-Replica-Tag. Vous devriez obtenir le même hostname tant que le nombre de répliques reste inchangé. Une valeur d’en-tête différente peut être associée à une autre réplique.Routage legacy basé sur les sous-domaines
Fonctionnement du routage legacy basé sur les sous-domaines
Fonctionnement du routage legacy basé sur les sous-domaines
Auparavant, l’activation du routage tenant compte des répliques permettait d’utiliser un sous-domaine générique au-dessus du nom d’hôte du service. Pour un service dont le nom d’hôte est
abcxyz123.us-west-2.aws.clickhouse.cloud, tout nom d’hôte correspondant à *.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud (par exemple aaa.sticky.abcxyz123.us-west-2.aws.clickhouse.cloud) était associé par hachage par Envoy à une réplique déterminée. Le nom d’hôte d’origine continuait d’utiliser l’équilibrage de charge LEAST_CONNECTION, l’algorithme de routage par défaut.Limites du routage tenant compte des réplicas
La persistance change lorsque le nombre de répliques change
Le routage tenant compte des réplicas n’est pas une isolation des charges de travail
Private Link et la méthode de sous-domaine legacy
*.sticky.*, et une configuration incorrecte peut déséquilibrer la charge entre les répliques.
Le routage tenant compte des répliques nécessite le protocole HTTP
Résolution des problèmes
- Vérifiez que vous utilisez la méthode de routage disponible pour votre service : l’en-tête
X-ClickHouse-Replica-Tagou le paramètre de requête URLsession_idlegacy. - Vérifiez que chaque requête utilise exactement la même valeur de routage.
- Attendez un instant après l’activation. La modification peut prendre moins d’une minute avant de prendre effet.
- Vérifiez si le nombre de répliques a récemment changé ; un remappage est attendu après une mise à l’échelle. Utilisez
SELECT hostName()pour déterminer le nouveau mappage.