Cluster
Un cluster est l'ensemble des nœuds qui, ensemble, forment et exécutent un store. Les nœuds échangent leur appartenance via leur port cluster, élisent un leader et se présentent aux clients comme un store unique.
Ce qu'est un cluster
Un cluster est le groupe en cours d'exécution de nœuds derrière un store. Chaque nœud est un processus ; le cluster est le tout qu'ils constituent ensemble. Les nœuds partagent les données du store et l'état de coordination, se coordonnent entre eux et se comportent comme une seule unité logique — les clients se connectent à n'importe quel nœud et le cluster achemine la requête vers le bon propriétaire.
Parce qu'un store est une unité logique et qu'un cluster est l'ensemble concret de processus qui le réalise, les deux se correspondent un à un : un store est soutenu par un cluster de nœuds. Ce qui change entre un petit et un grand store, c'est le nombre de nœuds dans son cluster, pas la façon de l'adresser.
Appartenance et leader
Les nœuds d'un cluster se suivent les uns les autres. Ils échangent les informations d'appartenance — quels nœuds existent et s'ils sont sains — par gossip via leur port cluster (à partir de 7811), le même canal pair-à-pair qu'ils utilisent pour la réplication. Ceci est distinct du port client auquel les applications se connectent.
Parmi les membres vivants et sains, le cluster élit un leader. Le leader est le nœud responsable de générer la carte des partitions faisant autorité — l'attribution des partitions aux nœuds primaires et réplicas — et de la diffuser au reste. Seuls les membres vivants et faisant autorité apparaissent dans cette carte ; les nœuds suspectés, morts ou inaccessibles en sont exclus, et les états transitoires tels qu'un basculement en cours sont suivis séparément plutôt qu'encodés dans la carte.
Comment un cluster se forme et évolue
Un cluster se forme lorsqu'un store est créé et que ses nœuds démarrent et se découvrent mutuellement. À mesure que l'appartenance change, le cluster se remodèle : le nombre total de partitions est recalculé à chaque changement d'appartenance comme partitions par nœud × nœuds vivants, de sorte qu'il suit la forme du cluster plutôt que de se figer au moment de la création. Lorsqu'un nœud rejoint, les partitions se rééquilibrent vers lui ; lorsque le nœud d'un primaire est perdu, son réplica est promu et le cluster reconstruit un nouveau réplica pour rétablir le facteur de réplication.
En mode superviseur, vous agrandissez le cluster en ajoutant un serveur entier avec Add-ZrServer, et non en ajoutant des nœuds individuels. Le serveur met en service sa part de processus de nœud, et la carte des partitions du cluster s'étend pour les inclure.
Le cluster par rapport aux termes qu'on lui confond
Le cluster est l'appartenance en cours d'exécution ; les termes voisins sont soit la vue qu'en a le client, soit les pièces qu'il contient.
- Un cluster n'est pas un espace de travail. Un espace de travail est un nom côté client désignant la façon d'atteindre les managers ; le cluster est l'ensemble réel des nœuds.
- Un cluster n'est pas un serveur. Un serveur est une seule machine ; un cluster s'étend sur les nœuds répartis sur un ou plusieurs serveurs.
- Un cluster n'est pas un store. Le store est l'unité de données logique que vous lisez et écrivez ; le cluster est le groupe de nœuds qui l'exécute.
| Terme | Portée | Rôle dans le modèle |
|---|---|---|
| Espace de travail | Côté client | Nomme les managers utilisés pour atteindre le cluster |
| Serveur | Une machine | Exécute et possède les processus de nœud |
| Cluster | Un groupe de nœuds | Forme et exécute un store ; élit un leader |
| Nœud | Un processus | Un membre du cluster ; détient des partitions |
| Store | Logique | Les données que le cluster présente aux clients |
| Partition | Une tranche de keyspace | Une unité que le cluster attribue aux nœuds |
| Réplica | Une copie de partition | La redondance que le cluster maintient entre les nœuds |