Как настроить ES кластер?



предполагая, что у меня есть 5 машин, на которых я хочу запустить кластер elasticsearch, и все они подключены к общему диску. Я поместил одну копию elasticsearch на этот общий диск, чтобы все трое могли его видеть. Могу ли я просто запустить elasticsearch на этом общем диске на всех моих машинах, и кластеризация автоматически сработает? Или мне нужно настроить определенные параметры, чтобы заставить elasticsearch понять, что он работает на 5 машинах? Если да, то каковы соответствующие настройки? Должен ли я беспокоиться о настройке для реплик или она обрабатывается автоматически?

691   3  

3 ответов:

его очень легко.

вам понадобится каждая машина, чтобы иметь свою собственную копию ElasticSearch (просто скопируйте тот, который у вас есть сейчас) - причина в том, что каждая машина / узел, что бы ни было, будет хранить свои собственные файлы, которые разделены по кластеру.

единственное, что вам действительно нужно сделать, это отредактировать файл config, чтобы включить имя кластера.

Если все машины имеют одинаковое имя кластера Elasticsearch будет делать все остальное автоматически (пока машины все в одной сети)

читайте здесь, чтобы начать работу: https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html

когда вы создаете индексы (куда идут данные), вы определяете в то время, сколько реплик вы хотите (они будут распределены по кластеру)

он обычно обрабатывается автоматически.

если автообнаружение не работает. Отредактируйте файл конфигурации эластичного поиска, включив обнаружение одноадресной рассылки

узел 1:

    cluster.name: mycluster
    node.name: "node1"
    node.master: true
    node.data: true
    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: ["node1.example.com"]

узел 2:

    cluster.name: mycluster
    node.name: "node2"
    node.master: false
    node.data: true
    discovery.zen.ping.multicast.enabled: false
    discovery.zen.ping.unicast.hosts: ["node1.example.com"]

и так далее для узла 3,4,5. Сделайте узел 1 главным, а остальные только как узлы данных.

Edit: обратите внимание, что по правилу ES, если у вас есть N узлы, то по соглашению,N/2+1 узлы должны быть хозяевами для отказа однако механизмы они могут быть или не быть узлами данных.

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

например, подумайте о кластере из 10 000 узлов и всех 10 000 узлов, выполняющих авто-пинги.

я попробовал шаги, которые @KannarKK предложил на ES 2.0.2, однако я не смог запустить кластер. Очевидно, я что-то понял, поскольку я установил номер порта tcp на Master, на обнаружении конфигурации ведомого устройства.дзен.свистеть.одноадресный.хостам требуется номер порта мастера вместе с IP-адресом (номер порта tcp) для обнаружения. Поэтому, когда я пытаюсь следовать конфигурации он работает для меня.

узел 1

cluster.name: mycluster
node.name: "node1"
node.master: true
node.data: true
http.port : 9200
tcp.port : 9300
discovery.zen.ping.multicast.enabled: false
# I think unicast.host on master is redundant.
discovery.zen.ping.unicast.hosts: ["node1.example.com"]

узел 2

cluster.name: mycluster
node.name: "node2"
node.master: false
node.data: true
http.port : 9201
tcp.port : 9301
discovery.zen.ping.multicast.enabled: false
# The port number of Node 1
discovery.zen.ping.unicast.hosts: ["node1.example.com:9300"]

Comments

    Ничего не найдено.