Comment puis-je rééquilibrer la distribution inégale des partitions dans mon cluster Amazon Elasticsearch Service ?

Date de la dernière mise à jour : 07/08/2020

L'espace disque de mon domaine Amazon Elasticsearch Service (Amazon ES) est inégalement réparti entre les nœuds. Par conséquent, l'utilisation du disque est fortement asymétrique. Comment puis-je rééquilibrer ma distribution de nœuds ?

Brève description

L'utilisation du disque peut être fortement asymétrique pour les raisons suivantes :

  • Tailles de partition inégales dans un cluster. Bien qu'Amazon ES répartit uniformément le nombre de partitions entre les nœuds, différentes tailles de partition peuvent nécessiter différentes volumes d'espace disque.
  • Espace disque disponible sur un nœud. (Pour plus d'informations, consultez Disk-based shard allocation sur le site Web d'Elasticsearch.)
    Stratégie d'allocation des partitions incorrecte. (Pour plus d'informations, consultez Demistifying Elasticsearch shard allocation.)

Utilisez les approches suivantes pour rééquilibrer l'allocation des partitions dans votre cluster Elasticsearch :

  • Vérifiez l'allocation des partitions, leur taille et la stratégie de partitionnement d'index.
  • Assurez-vous que les partitions sont de taille égale sur tous les index.
  • Maintenez la taille des partitions entre 10 Go et 50 Go pour de meilleures performances.
  • Ajoutez d'autres nœuds de données à votre cluster Elasticsearch.
  • Mettez à jour votre stratégie de partitionnement.
  • Supprimez les index anciens ou inutilisés pour libérer de l'espace disque.

Résolution

Vérification de l'allocation des partitions, de leur taille et de la stratégie de partitionnement d'index

Utilisez l'API suivante pour vérifier le nombre de partitions allouées à chaque nœud et le volume d'espace disque utilisé sur chaque nœud :

$ curl -XGET ES_Endpoint/_cat/allocation?v

Pour vérifier les partitions allouées à chaque nœud et la taille de chaque partition, utilisez l'API suivante :

$ curl -XGET ES_Endpoint/_cat/shards?v

Remarque : cette API montre que la taille des partitions peut varier selon les index.

La stratégie de partitionnement inégale pour les index peut entraîner une asymétrie des données où les partitions des index plus grands résident uniquement sur quelques nœuds. Vérifiez la stratégie de partitionnement pour les index à l'aide de l'API suivante :

$ curl -XGET ES_Endpoint/_cat/indices?v

Des partitions de taille égale sur tous les index

Si la taille d'index varie de manière significative, utilisez l'API d'index de report pour créer un nouvel index lorsque certaines tailles d'index sont atteintes. Vous pouvez également utiliser l'Index State Management (ISM) pour créer un nouvel index pour Amazon ES versions 7.1 et ultérieures. Pour plus d'informations sur la propagation d'un alias à l'aide d'ISM, consultez rollover sur le site Web d'Elasticsearch.

Taille des partitions entre 10 Go et 50 Go pour de meilleures performances

Si vous avez une grande classe d'instances, utilisez l'échelle du pétaoctet pour Amazon Elasticsearch Service afin de déterminer la taille des partitions. Par exemple, un domaine Amazon ES avec plusieurs instances i3.16xlarge.elasticsearch peut prendre en charge une taille de partition allant jusqu'à 100 Go en raison du grand nombre de ressources disponibles. Pour plus d'informations sur la stratégie de partitionnement, consultez Choix du nombre de partitions.

Ajout d'autres nœuds de données à votre cluster Elasticsearch

Si votre cluster Elasticsearch a atteint des niveaux d'utilisation élevés du disque, ajoutez d'autres nœuds de données à votre cluster. L'ajout de nœuds de données ajoute également davantage de ressources pour améliorer les performances du cluster.

Remarque : Amazon ES ne rééquilibre pas automatiquement le cluster en cas de manque d'espace de stockage disponible. Par conséquent, si un nœud de données manque d'espace de stockage libre, le cluster bloque toutes les opérations d'écriture. Pour plus d'informations sur la gestion de l'espace disque, consultez Comment ajouter de l'espace de stockage à un domaine Amazon Elasticsearch Service (Amazon ES) ?

Mise à jour de votre stratégie de partitionnement

Amazon ES a une stratégie de partitionnement par défaut de 5:1 et chaque index étant divisé en cinq partitions principales. Dans chaque index, chaque partition principale a également son propre réplica. Amazon ES attribue automatiquement des partitions principales et des partitions de réplica à des nœuds de données distincts, le tout en s'assurant qu'il y a une sauvegarde en cas de défaillance.

Pour modifier le comportement par défaut d'Amazon ES, concevez vos index afin que les partitions soient distribuées de manière égale par taille :

  • Pour les index existants, utilisez l'API de réindexation pour modifier le nombre de partitions principales. L'API _reindex peut être utilisée pour fusionner des index plus petits en un index plus grand ou pour fractionner l'index plus grand. Lorsque l'index le plus grand est divisé en plusieurs partitions principales, la taille des partitions est réduite.
  • Pour les nouveaux index, utilisez le modèle d'API pour définir le nombre de partitions principales et de réplica.

Mettez ensuite à jour les paramètres d'index pour vos partitions. Pour plus d'informations, consultez Mettre à jour les paramètres des index sur les sites Web d'Elasticsearch.

Suppression des index anciens ou inutilisés pour libérer de l'espace disque

Amazon ES versions 7.1 et ultérieures prend en charge la gestion des états d'index. Avec ISM, vous pouvez définir des stratégies de gestion personnalisées afin que les index anciens ou inutilisés soient supprimés après une durée déterminée.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?