J'envisage un cluster Cassandra, mais l'effort d'administration semble être assez élevé. Existe-t-il un moyen de configurer Cassandra pour qu'il rééquilibre automatiquement les nœuds lorsque de nouvelles machines sont ajoutées, que certaines sont éteintes ou temporairement indisponibles, etc.
Réponses
Trop de publicités?En fait, Cassandra rééquilibre automatiquement les nœuds au fur et à mesure que vous en ajoutez de nouveaux ; il ne s'agit simplement pas d'une approche très sophistiquée. Il choisit le nœud dont la " charge " est la plus élevée (voir la sortie de l'anneau nodetool) et place le nouveau nœud sur l'anneau pour reprendre environ la moitié du travail du nœud le plus chargé. Cela n'effectue pas un rééquilibrage du cluster dans son ensemble, mais minimise la charge de streaming nécessaire à l'expansion du cluster. Cette stratégie d'auto-équilibrage a tendance à fonctionner au mieux si vous doublez presque la taille du cluster à chaque expansion.
Si vous avez besoin d'un rééquilibrage plus nuancé, vous pouvez déplacer la position d'un nœud sur l'anneau à l'aide de la commande "nodetool move" (qui est en fait une enveloppe pour déclasser et réinsérer le nœud).
Pas encore, car l'attribution des jetons est actuellement statique. Vous avez le choix d'écrire un script pour l'équilibrage comme suit http://wiki.apache.org/cassandra/Operations#Ring_management ou doubler la taille du cluster en une seule fois avec l'auto-bootstrap. Aucune de ces options n'est vraiment attrayante pour le moment, mais il n'est pas terrible d'ajouter des nœuds et de déplacer des jetons tant que vous laissez suffisamment de temps pour la migration des données.
Une chose à surveiller nodetool loadbalance
ne va pas faire ce que vous pensez.