Mon cluster a une santé yellow
car il n'a qu'un seul nœud, les réplicas restent donc non affectés simplement parce qu'aucun autre nœud n'est disponible pour les contenir.
Je veux donc créer/ajouter un autre nœud pour qu'Elasticsearch puisse commencer à lui allouer des répliques. Je n'ai qu'une seule machine et je suis exécutant ES en tant que service .
J'ai trouvé des tonnes de sites avec des informations mais aucun d'eux ne me donne clairement comment puis-je ajouter un autre nœud à ES.
Quelqu'un peut-il m'expliquer quels fichiers dois-je modifier et quelles commandes dois-je lancer pour créer un autre nœud dans mon cluster? Dois-je exécuter deux instances ES? Comment puis-je faire ceci?
Merci d'avance.
1) VERSIONS:
Il est conseillé de vérifier l'état de tous vos nœuds: http: // élastique-nœud1: 9200 /
Gardez à l'esprit que dans la plupart des cas: LA VERSION DOIT ÊTRE LA MÊME, MÊME MINEURE
{
"name" : "node2",
"cluster_name" : "xxxxxxxxxxx",
"cluster_uuid" : "n-xxxxxxxxxxxxxxx",
"version" : {
"number" : "5.2.2",
"build_hash" : "xxxx",
"build_date" : "20-02-24T17:26:45.835Z",
"build_snapshot" : false,
"lucene_version" : "6.4.1"
},
"tagline" : "You Know, for Search"
}
Gardez à l'esprit que si vous voyez un numéro de version différent dans node1, par exemple.
"number" : "5.2.1"
dans ce cas, vous devez mettre à jour votre nœud vers la version 5.2.2 (identique à nœud1).
2) NOEUDS ET RÉPLIQUE:
Quelle est l'utilité du nœud? Pour 3 nœuds, je ferais ceci:
curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
"transient": {
"discovery.zen.minimum_master_nodes": 3
}
}
'
Encore mieux est de modifier les paramètres dans le fichier de configuration d'Elasticsearch:
/etc/elasticsearch/elasticsearch.yml
# need to be changed on each node (has to be unique for each node):
node.name: node1
# need to be the same in all nodes:
cluster.name: my_cluster
discovery.zen.ping.unicast.hosts: ["IP_ADDRESS_OR_HOSTNAME1", "IP_ADDRESS_OR_HOSTNAME2", "IP_ADDRESS_OR_HOSTNAME3"]
Et si vous avez 3 nœuds, voulez-vous deux répliques et une principale?
curl -XPUT 'localhost:9200/_settings?pretty' -H 'Content-Type: application/json' -d'
{
"index" : {
"number_of_replicas" : 2
}
}'
3) ASSUREZ-VOUS QUE LES NŒUDS SONT ACTIVÉS
Il existe un moyen de lancer un nœud:
curl -XPUT localhost:9200/_cluster/settings -d '{
"transient" :{
"cluster.routing.allocation.exclude._ip" : "NODE_TO_REMOVE_IP_ADDRESS_OR_HOSTNAME"
}
}';echo
Donc, si vous avez fait cela et que vous souhaitez maintenant ajouter le nœud: https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html
vous pouvez le faire avec la demande suivante (veuillez lire attentivement le lien mentionné ci-dessus):
curl -XPUT localhost:9200/_cluster/settings -d '{
"transient" :{
"cluster.routing.allocation.enable" : "all"
}
}';echo
4) N'OUBLIEZ JAMAIS, RÉSEAUTAGE:
Pare-feu, réseau ... Pouvez-vous atteindre le nouveau nœud au port 9200? Le voyez-vous sur votre navigateur Web?
Peut tu
curl http://your-elasticsearch-hostname:9200/
?
1) SUPPRIMER AVEC L'API
curl -XPUT 'http://localhost:9200/_cluster/settings?pretty' -d '
{
"transient" : {
"cluster.routing.allocation.exclude._name" : "node3"
}
}'
2) VÉRIFIEZ VOTRE FICHIER DE CONFIGURATION
Vérifiez le fichier de configuration sous: /etc/elasticsearch/elasticsearch.yml
et ne laisser que les nœuds que vous souhaitez conserver:
discovery.zen.ping.unicast.hosts:["IP_ADDRESS_OR_HOSTNAME1", "IP_ADDRESS_OR_HOSTNAME2"]
* VÉRIFIEZ VOTRE STATUT *
Vérifiez http: // elk-pipeline: 9200/_cat/shards Quel est votre statut? Vous pouvez voir: INITIALISATION Cela signifie probablement que les données sont transférées. Donc, si vos données sont volumineuses (et non sur SSD), attendez.
N'OUBLIEZ PAS
Vous pouvez voir si vos données sont actuellement en mouvement en tapant:
[watch] du /var/lib/elasticsearch/
C'est tout pour le moment. J'essaierai d'ajouter de temps en temps plus d'informations ici.
N'hésitez pas à modifier/ajouter.
Les étapes complètes sur Windows Box sont les suivantes:
bin\service install elastic-search-x64-node01
qui créera un service nommé elastic-search-x64-node01
modifier elasticsearch.yml
fichier de configuration:
cluster.name: Animals
node.name: Snake
node.master: true
node.data: true
path.data: C:\ELK\storage\data
path.logs: C:\ELK\storage\logs
http.port: 9200
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
courir service manager elastic-search-x64-node01
et configurez vos règles de services et démarrez le service
décompressez élastique, par exemple, à C:\ELK\élastique2\exécutez la commande bin\service install elastic-search-x64-node02
qui créera un service nommé elastic-search-x64-node02
modifier elasticsearch.yml
fichier de configuration:
cluster.name: Animals
node.name: Baboon
node.master: false
node.data: true
path.data: C:\ELK\storage\data
path.logs: C:\ELK\storage\logs
http.port: 9201
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
courir service manager elastic-search-x64-node02
et configurez vos règles de services et démarrez le service
À ce stade, vous avez 2 nœuds distincts (ils stockent des données dans le même dossier, mais je suis trop paresseux pour modifier path.data pour le deuxième nœud) en tant que 2 services Windows distincts et GET http://localhost:9200/_cluster/health
montre quelque chose comme:
{
"cluster_name": "Animals",
"status": "green",
"timed_out": false,
"number_of_nodes": 2,
"number_of_data_nodes": 2,
"active_primary_shards": 4,
"active_shards": 8,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 0,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 100
}
Tout d'abord, vous pouvez supprimer les répliques pour revenir à un état vert, vous pouvez le faire même après avoir créé l'index et y ajouté des documents.
Voici comment définir le nombre de réplicas à 0:
curl -XPUT 'localhost:9200/my_index/_settings' -d '
{
"index" : {
"number_of_replicas" : 0
}
}'
Si vous souhaitez simplement ajouter un autre nœud à votre cluster, vous devrez modifier le elasticsearch.yml
, de préférence sur vos deux nœuds avec ces modifications:
cluster.name: my-cluster
node.name: node01
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.5"]
Définissez les hôtes unicast sur chaque nœud pour référencer l'autre, définissez le nom du cluster sur les deux nœuds et donnez à chaque nœud un nom unique, puis redémarrez les deux instances ES et votre cluster doit être en ligne.
Je ne sais pas quelle est votre question ici. Vous avez deux possibilités.
1) Vous avez deux nœuds et vous voulez qu'ils puissent se voir. Il y a beaucoup de documentation pour cela partout dans le monde. Si tel est le cas, je vous suggère de tester pour vous assurer que chaque hôte peut parler à l'autre, c'est-à-dire: ssh dans l'hôte A et essayer de boucler l'hôte B: 9200, et vice versa. Vous voudrez également vous assurer que vos configurations sont définies correctement.
2) Vous souhaitez configurer un "cluster" sur votre machine locale. Dans ce cas, vous aurez besoin de deux fichiers de configuration distincts, et vous devrez démarrer elasticsearch en utilisant un fichier de configuration spécifique pour votre deuxième `` nœud '' (ainsi que modifier la deuxième configuration pour utiliser différents ports, etc.). Vous voudrez peut-être consulter ce lien: http://www.concept47.com/austin_web_developer_blog/elasticsearch/how-to-run-multiple-elasticsearch-nodes-on-one-machine/
Mais oui, en fin de compte, vous devez exécuter les processus Elasticsearch, qu'ils soient tous deux sur la même machine ou que deux machines différentes dépendent de vous.
Si vous exécutez Elasticsearch n local, allez simplement sur un autre terminal et réexécutez elasticsearch
. De cette façon, vous aurez deux instances.
Vous verrez le message suivant sur la nouvelle instance exécutée:
[Black Widow] detected_master [N'Garai]
Sur une instance déjà en cours d'exécution (master node)
[N'Garai] added {[Black Widow]
En supposant [N'Garai]
et {[Black Widow]
pour être des noms de nœuds aléatoires.