Elasticsearch — Кластер

В предыдущей статье был установлен Elasticsearch на примере CentOS 7. Для того, чтобы создать кластер нам необходимо минимум 2 инстанса с установленным Elasticsearch.
Так как это тестовая среда, то в кластере будет 2 воркера Elasticsearch, а так рекомендуется нечетное количество, и минимальное количество — 3.

Откроем файл конфигурации Elasticsearch:

vim /etc/elasticsearch/elasticsearch.yml

Тут нам интересны следующее параметры:

  • cluster.name — имя кластера;
  • node.name: имя ноды;
  • network.host: IP адрес, который сервер будет "слушать".

Мне на AWS такого "минимального набора" не хватило, Elasticsearch падал с таким сообщением в лог:

bound or publishing to a non-loopback address, enforcing bootstrap checks

Виной тому параметр "network.bind_host" и "network.publish_host". Привел конфиг к следующему виду:

cluster.name: artem-es
node.name: node-US
node.master: true
node.data: true
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 1.1.1.1

Elasticsearch перестал падать при запуске.

Имя ноды: node-US, так как тестил запуск кластера Elasticsearch в разных зонах.

Второй инстанс настроим по тому же подобию. И так есть 2 инстанса, это node-US и node-EU.

Неоходимо разрешить им доступ к друг другу по TCP порту 9300. На AWS это делается в SecureGroup, если вы запускали не на AWS, то добавьте разрешающие правило в фаерволе.

Теперь все готово, чтобы объединить наши ноды в кластер.

Вернемся опять к файлу конфигурации:

vim /etc/elasticsearch/elasticsearch.yml

И добавим следующее:

discovery.zen.ping.unicast.hosts: ["1.1.1.1", "2.2.2.2"]
discovery.zen.minimum_master_nodes: 1

Получилось следующее.

Хост node-US:

cluster.name: artem-es
node.name: node-US
node.master: true
node.data: true
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 1.1.1.1
discovery.zen.ping.unicast.hosts: ["1.1.1.1", "2.2.2.2"]
discovery.zen.minimum_master_nodes: 1

Хост node-EU:

cluster.name: artem-es
node.name: node-EU
node.master: true
node.data: true
network.host: 0.0.0.0
network.bind_host: 0.0.0.0
network.publish_host: 2.2.2.2
discovery.zen.ping.unicast.hosts: ["1.1.1.1", "2.2.2.2"]
discovery.zen.minimum_master_nodes: 1

Посмотреть список хостов в кластере можно так:

curl -X GET localhost:9200/_cat/nodes?v

Состояние кластера:

curl -X GET localhost:9200/_cluster/health?pretty

На этом статья о установке Elasticsearch кластера, в следующей мы к уже существующему кластеру прикрутим Kibana.

Метки: Метки

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии