Essentiellement, je ne trouve pas de documents ou de ressources qui expliquent la procédure de mise à niveau d'une instance Elasticsearch en cours d'exécution vers la version actuelle.
Veuillez m'aider dans quelques scénarios:
Si j'exécute une instance Elasticsearch sur un seul serveur, comment mettre à niveau l'instance et ne pas perdre de données?
Si j'exécute plusieurs instances Elasticsearch sur un certain nombre de serveurs, comment puis-je continuer à exécuter mes opérations tout en mettant à niveau mes instances Elasticsearch sans perdre de données?
S'il existe des procédures ou des explications appropriées à ce sujet, cela aidera grandement ma compréhension et mon travail. Merci!
Toutes les données des nœuds sont stockées dans le répertoire de données elasticsearch. Il s'agit de data/cluster_name/nodes par défaut dans elasticsearch home. Donc, en général, tant que le répertoire de données est conservé et que les fichiers de configuration de la nouvelle version sont compatibles avec l'ancienne version, la nouvelle instance doit avoir les mêmes données que l'ancienne. Veuillez noter que certaines versions ont des exigences supplémentaires spéciales décrites dans notes de version . Par exemple, la mise à niveau de 0.18 à 0.19 nécessite l'émission d'un vidage complet de tous les indices du cluster.
Il n'y a vraiment aucun bon moyen d'y parvenir. Les nœuds communiquent à l'aide d'un protocole binaire qui n'est pas rétrocompatible. Donc, si le protocole change dans la nouvelle version, les anciens nœuds et les nouveaux nœuds ne peuvent pas se comprendre. Parfois, il est possible de mélanger des nœuds avec différentes versions mineures au sein du même cluster et d'effectuer une mise à niveau continue. Cependant, pour autant que je comprends, il n'y a aucune garantie explicite sur la compatibilité entre les nœuds, même dans les versions mineures et les versions majeures nécessitent toujours un redémarrage complet du cluster. Si le temps d'arrêt pendant le redémarrage complet du cluster n'est pas une option, une Nice technique by DrTech pourrait être une solution.
De nos jours, il y a beaucoup plus d'informations sur la mise à niveau d'ElasticSearch qu'auparavant.
Voici mes étapes habituelles lors de la mise à niveau d'ElasticSearch:
Sauvegardez les données: Snapshot and Restore
Guide de mise à niveau: Mise à niveau d'ElasticSearch
L'idée principale est que vous arrêtez une instance du cluster ES à la fois, mettez à niveau la version ES sur ce nœud d'instance et la réactivez pour qu'elle puisse rejoindre le cluster.
En bref, voici les étapes importantes:
Désactiver la réallocation de Shard
curl -XPUT localhost: 9200/_cluster/settings -d '{"transient": {"cluster.routing.allocation.enable": "none"}}'
Arrêtez l'instance:
curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'
Installez la nouvelle version d'ElasticSearch sur l'hôte et démarrez-la.
Activer la réallocation des fragments:
curl -XPUT localhost: 9200/_cluster/settings -d '{"transient": {"cluster.routing.allocation.enable": "all"}}'
Regarder le cluster passer de l'état yellow
à green
avec:
curl -X GET http: // localhost: 9200/_cat/health? v // surveille l'état du cluster global
curl -X GET http: // localhost: 9200/_cat/nodes? v // vérifier que le nouveau nœud a rejoint le cluster
curl -X GET http: // localhost: 9200/_cat/shards? v // voir les fragments en cours de démarrage, initialisés et déplacés
En termes de commande, mettez à jour d'abord les nœuds maîtres , puis les nœuds de données, puis les nœuds d'équilibrage de charge/client.
Il convient de mentionner qu'il existe désormais une documentation sur la mise à niveau, mais elle ne se classe pas très bien dans les résultats de recherche:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-upgrade.html
ainsi qu'un document de changements de rupture:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/breaking-changes.html
Les autres réponses sont un peu datées en fonction de ce qui existe actuellement, donc ces nouvelles informations complèteront la mise à niveau des versions plus récentes d'Elasticsearch, comme la mise à niveau 6.x vers 7.x, ou 5.x vers 6.x. Il existe deux options principales pour une mise à niveau d'Elasticsearch: mise à niveau progressive ou redémarrage complet du cluster .
La mise à niveau progressive permet aux nœuds d'être mis à niveau un à la fois afin que le service ne soit pas interrompu. D'un autre côté, le redémarrage complet du cluster nécessite que chaque nœud soit arrêté, mis à niveau, puis ramené. Cela signifie qu'il y aura des temps d'arrêt entre les mises à niveau qui doivent être pris en compte.
C'est beaucoup plus facile à faire qu'il y a quelques années, lorsque la seule option viable était un instantané et une restauration.