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