2015-12-21 3 views
0

У меня возникла проблема с ES 2.1.1, где каждый узел, который я запускаю, запускается как ведущий, и я не могу установить фактический кластер. В основном, я получаю 3 кластера по одному узлу, а не один 3-узловой кластер. Это не проблема, если я запускаю ES 1.4.2 с теми же конфигурационными файлами.elasticsearch 2.1.1 - невозможно установить кластер

мышление я страдал проблему разделенного мозга, я начал до 3 узлов, и даже имел

discovery.zen.minimum_master_nodes: 2 

в моей конфигурации, но это не делает разницы. Ни один из узлов не знает о каких-либо других узлах, и ни один мастер не выбирается. Он ждет других узлов и не выбирает себя как мастер, но он никогда не обнаруживает никаких других узлов, которые присоединяются. Я предполагаю, что пинги вообще не отправляются.

Каждый узел имеет один и тот же конфигурационный файл, причем «node.name» является уникальным для каждого узла, и все это отлично работает на ES 1.4.2. Не уверен, что делать, чтобы заставить его работать над ES 2.1.1.

Полный конфигурационный файл выглядит следующим образом: (. Последние две строки, добавленные в попытке устранить разделенного мозга в качестве одной из причин этого не работал)

cluster.name: my_test_cluster 
node.name: "my_node1" (diff for each node) 
discovery.zen.ping.timeout: 30s 
network.host: _non_loopback:ipv4_ 
discovery.zen.minimum_master_nodes: 2 
discovery.zen.ping.multicast.enabled: true 

журналы не показывают ничего плохого, кроме «Исключение MasterNotDiscoveredException [ждали [30s]]», когда я выполняю запрос CURL для проверки состояния/работоспособности кластера. Что ожидается.

У кого-нибудь есть мысли о том, почему разница в поведении между ними и как получить 2.1.1. за работой?

Как указано ниже, я включил запись для node.host в файлы конфигурации, но поведение не изменилось.

ответ

1

Вам также необходимо установить network.host for each node, начиная с Elasticsearch 2.0.

Я бы предложил использовать либо _non_loopback:ipv4_, либо _non_loopback:ipv6_. Если вы работаете в AWS, то the discovery-ec2 plugin has separate options that are specific to that environment.

Без установки этого параметра по умолчанию используется только _local_, который (в качестве примечаний к документации) устанавливает его на кольцевые адреса, такие как 127.0.0.1, ::1.

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

discovery.zen.ping.unicast.hosts: ["host1", "host2"] 

Начиная с ES 2.x, multicast отключен по умолчанию, поэтому он больше не будет обнаруживать другие узлы в сети.

+0

Спасибо за ваш ответ! Я внес изменения, и я вижу, что при запуске publish_address и bound_address теперь обновляются на мой IP-адрес, а не на localhost. Однако поведение по-прежнему остается прежним. Вот что я получаю: 'C: \ Program Files \ cURL \ bin> curl -XGET http://172.16.0.68:9200/_cluster/health?довольно = истина " { "ошибка": { "ROOT_CAUSE": [{ "типа": "master_not_discovered_exception", "причина": "ждали [30s]" }], "Тип":" master_not_discovered_exception», „причина“:„ждали [30s]“ }, „статус“: 503 }' –

+0

Попробуйте network.bind я обнаружил, что я должен был указать фактический IP-адрес, так как он не автоматически. binding 0.0.0.0 – hubbardr

+0

@hubbardr Это уже не относится к ES 2.x. Это то, что он сделал для более ранних версий (ES 1.x). – pickypg

Смежные вопросы