Подтвердить что ты не робот

Как добавить новый node в свой кластер Elasticsearch

Мой кластер имеет yellow работоспособность, так как он содержит только один node, поэтому реплики остаются неподписанными просто потому, что для их размещения не существует других node.

Поэтому я хочу создать/добавить еще один node, чтобы Elasticsearch мог начать выделять ему реплики. У меня только одна машина, и я запускаю ES как службу.

Я нашел множество сайтов с некоторой информацией, но ни один из них не дает мне ясно, как я могу добавить еще один node в ES.

Может кто-нибудь объяснить мне, какие файлы мне нужно редактировать и какие команды мне нужно запустить, чтобы создать еще один node в моем кластере? Должен ли я запускать два экземпляра ES? Как я могу это сделать?

Спасибо заранее.

4b9b3361

Ответ 1

СОВЕТЫ, ЧТОБЫ ДОБАВИТЬ ДРУГОЙ УЗЕЛ:

1) ВЕРСИИ:

Это хороший совет, чтобы проверить все ваши узлы на статус: http://astic-node1: 9200/

Имейте в виду, что в большинстве случаев: ВЕРСИЯ ДОЛЖНА БЫТЬ ОДНОЙ, ДАЖЕ МИНО

{
"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"
}

Имейте в виду, что если вы видите другой номер версии в node1, например,

  "number" : "5.2.1"

в этом случае вы должны обновить свой узел до версии 5.2.2 (так же, как узел1).

2) УЗЛЫ И РЕПЛИКА:

Каков вариант использования узла? Для 3 узлов я бы сделал это:

curl -XPUT 'localhost:9200/_cluster/settings?pretty' -H 'Content-Type: application/json' -d'
{
  "transient": {
    "discovery.zen.minimum_master_nodes": 3
  }
}
'

Еще лучше изменить настройки в файле конфигурации 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"]

И если у вас есть 3 узла, вы хотите две реплики и одну основную?

curl -XPUT 'localhost:9200/_settings?pretty' -H 'Content-Type: application/json' -d'
{
    "index" : {
        "number_of_replicas" : 2
    }
}'

3) Убедитесь, что узлы включены

Есть способ пнуть узел:

curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" :{
      "cluster.routing.allocation.exclude._ip" : "NODE_TO_REMOVE_IP_ADDRESS_OR_HOSTNAME"
   }
}';echo

Так что, если вы сделали это, и теперь вы хотите добавить узел обратно: https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html

Вы можете сделать это с помощью следующего запроса (пожалуйста, внимательно прочитайте ссылку выше):

curl -XPUT localhost:9200/_cluster/settings -d '{
  "transient" :{
        "cluster.routing.allocation.enable" : "all"
   }
}';echo

4) НИКОГДА НЕ ЗАБЫВАЙТЕ, СЕТЬ:

Брандмауэр, сеть... Можете ли вы подключиться к новому узлу через порт 9200? Вы можете увидеть это в своем веб-браузере?

Ты можешь

curl http://your-elasticsearch-hostname:9200/

?

СОВЕТЫ ДЛЯ УДАЛЕНИЯ УЗЛА ИЗ КЛАСТЕРА:

1) УДАЛИТЬ С API

curl -XPUT 'http://localhost:9200/_cluster/settings?pretty' -d '
{
  "transient" : {
    "cluster.routing.allocation.exclude._name" : "node3"
  }
}'

2) Проверьте ваш файл конфигурации

Проверьте конфигурационный файл в /etc/elasticsearch/elasticsearch.yml

и оставьте только те узлы, которые хотите сохранить:

discovery.zen.ping.unicast.hosts:["IP_ADDRESS_OR_HOSTNAME1", "IP_ADDRESS_OR_HOSTNAME2"]

* ПРОВЕРЬТЕ СВОЙ СТАТУС *

Проверьте http://elk-pipeline: 9200/_cat/shards Каков ваш статус? Вы можете увидеть: ИНИЦИАЛИЗАЦИЯ Это, вероятно, означает, что данные передаются. Поэтому, если ваши данные большие (а не на SSD), подождите.

Не забывайте

Вы можете увидеть, перемещаются ли ваши данные, набрав:

[watch] du /var/lib/elasticsearch/

Это все. Я постараюсь время от времени добавлять больше информации.

Пожалуйста, не стесняйтесь изменить/добавить.

Ответ 2

Полными шагами в Windows Box являются:

  • распакуйте эластичный, скажем, C:\ELK\elastic\run command bin\service install elastic-search-x64-node01, который создаст сервис с именем elastic-search-x64-node01
  • изменить elasticsearch.yml файл конфигурации:

    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"]
    
  • запустите service manager elastic-search-x64-node01 и настройте правила своих сервисов и запустите службу

  • распакуйте эластичную, скажем, команду C:\ELK\elastic2\run bin\service install elastic-search-x64-node02, которая создаст сервис с именем elastic-search-x64-node02

  • изменить elasticsearch.yml файл конфигурации:

    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"]
    
  • запустите service manager elastic-search-x64-node02 и настройте свои правила обслуживания и запустите службу

В этот момент у вас есть 2 отдельных узла (они хранят данные в одной папке, но я слишком невменяю, чтобы редактировать path.data для второго node), поскольку две отдельные службы Windows и GET http://localhost:9200/_cluster/health показывают что-то вроде:

{
  "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
}

Ответ 3

Во-первых, вы можете удалить реплики, чтобы вернуться в зеленое состояние, вы можете сделать это даже после создания индекса и добавления к нему документов.

Здесь вы устанавливаете счетчик реплик равным 0:

curl -XPUT 'localhost:9200/my_index/_settings' -d '
{
    "index" : {
        "number_of_replicas" : 0
    }
}'

Если вы хотите просто добавить еще один node в свой кластер, вам нужно будет отредактировать elasticsearch.yml, желательно на обоих ваших узлах с этими изменениями:

cluster.name: my-cluster
node.name: node01
discovery.zen.ping.multicast.enabled: false
discovery.zen.ping.unicast.hosts: ["192.168.0.5"]

Задайте одноадресные хосты на каждом node, чтобы ссылаться на другое, задайте имя кластера на обоих узлах и дайте каждому node уникальное имя, затем перезапустите оба экземпляра ES, и ваш кластер должен быть в сети.

Ответ 4

Я не понимаю, каков ваш вопрос. Есть две возможности для вас.

1) У вас есть два узла, и вы хотите, чтобы они могли видеть друг друга. Там много документации для этого по всему месту. Если это так, я бы предложил вам протестировать, чтобы каждый хост мог поговорить с другим, то есть: ssh в хост A и попытаться скрутить хост B: 9200 и наоборот. Вы также захотите убедиться, что конфигурации настроены правильно.

2) Вы хотите настроить "кластер" на своем локальном компьютере. В этом случае вам понадобятся два отдельных файла конфигурации, и вам нужно будет запустить elasticsearch с использованием определенного файла конфигурации для второго "node" (а также изменить вторую конфигурацию для использования разных портов и т.д.), Вы можете проверить эту ссылку: http://www.concept47.com/austin_web_developer_blog/elasticsearch/how-to-run-multiple-elasticsearch-nodes-on-one-machine/

Но да, в конечном счете, вам нужно запускать процессы elasticsearch, независимо от того, находятся ли они на одной машине или две разные машины подходят вам.

Ответ 5

Если вы используете Elasticsearch n local, просто перейдите на другой терминал и снова запустите elasticsearch. Таким образом, у вас будет два экземпляра.

В новом экземпляре вы увидите следующее сообщение:

[Black Widow] detected_master [N'Garai]

В уже запущенном экземпляре (master node)

[N'Garai] added {[Black Widow]

Предполагая, что [N'Garai] и {[Black Widow] являются случайными именами node.