ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как установить и настроить кластер Elasticsearch с несколькими узлами

Как установить и настроить кластер Elasticsearch с несколькими узлами

В нашей недавней статье по FlexibleSearch мы обсуждали, как установить и настроить отдельный экземпляр Elassearch.

В то время как автономная установка хороша для dev/test, для производства рекомендуется настроить кластерasticsearch. Кластер Elasticsearch имеет много преимуществ по сравнению с автономным.

 

Преимущества Elastisearch Cluster

  1. Распределенные данные: В кластере данные распространяются, реплицируются на другой сервер. Таким образом, в случае сбоя одного узла, данные могут быть восстановлены с узла реплики. Это позволяет избежать единой точки отказа.
  2. Роли выделенного узла. Каждому узлу назначена выделенная роль, которая обеспечивает определенную роль и распределение нагрузки на основе ролей, что повышает производительность. Вот две важные роли узлов
  3. Узел данных: эти узлы хранят только данные и выполняют операции, связанные с данными, поиск и манипулирование данными.
  4. Главный узел: Мастер всех узлов, он отвечает за весь кластер, добавляет и удаляет узлы из кластера, отслеживает живые узлы, повторно выбирает мастер в соответствующих случаях.
  5. Масштабируемость: модель кластера легко масштабируется до нескольких узлов. Таким образом увеличивается производительность и надежность упругого поиска.

В этой статье мы настроим кластер из трехузлового эластичного поиска.

 

Узел 1 – установка и настройка

Давайте начнем установку Elasticsearch, мы покажем каждый шаг во время процедуры установки

Следуйте нашей предыдущей статье Как установить Elasticsearch и скачать zip-архив elasticsearch, распаковать его на сервер или установить с помощью deb-репозитория.

Теперь откройте файл конфигурации Elasticsearch в извлеченной папке или /etc/asticsearch в случае установки непосредственно из репозитория.

vim /etc/elasticsearch/elasticsearch.yml

 

Теперь нам нужно настроить его как узлы кластера, в следующем файле необходимо изменить следующие записи.

Установите имя кластера:

cluster-name=TGS

 

Установите имя первого узла:

node.name=tgs-1

 

Установите, будет ли этот узел действовать как мастер:

node.master=true

 

Установите, будет ли этот узел действовать как узел данных:

node.data=true

 

Установите ip и порт первого узла:

network.host=192.168.113.31
http.port=9200

 

Протокол обнаружения узлов кластера и список узлов:

discovery.zen.ping.unicast.hosts: ["192.168.113.31", "192.168.113.32","192.168.113.33"]

 

Все эти узлы являются частью кластера, что облегчает обнаружение узлов.

Теперь запустите серверasticsearch, следующие важные части журналов установки:

[INFO ][o.e.c.s.ClusterApplierService] [tgs-1] new_master {tgs-1}{7IqQvmfdSb66AFcP0u0AZQ}{OveP8d_SR0WIjVupZcW35g}{192.168.113.31}{192.168.113.31:9300}{ml.machine_memory=134986862592xpack.installed=trueml.max_open_jobs=20ml.enabled=true}reason: apply cluster state (from master [master {tgs-1}{7IqQvmfdSb66AFcP0u0AZQ}{OveP8d_SR0WIjVupZcW35g}{192.168.113.31}{192.168.113.31:9300}{ml.machine_memory=134986862592xpack.installed=trueml.max_open_jobs=20ml.enabled=true} committed version [1] source [zen-disco-elected-as-master ([0] nodes joined)]])
[INFO ][o.e.h.n.Netty4HttpServerTransport] [tgs-1] publish_address {192.168.113.31:9200}bound_addresses {192.168.113.31:9200}
[INFO ][o.e.n.Node               ] [tgs-1] started
[WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [tgs-1] Failed to clear cache for realms [[]]
[INFO ][o.e.l.LicenseService     ] [tgs-1] license [77777777-dddd-4444-aaaa-888888888888] mode [basic] - valid
[INFO ][o.e.g.GatewayService     ] [tgs-1] recovered [0] indices into cluster_state
[INFO ][o.e.c.s.MasterService    ] [tgs-1] zen-disco-node-join[{tgs-2}{S64iPm03Qtq0-bvJipk-_A}{eAChESS6TceLHHTHyfMU7g}{192.168.113.32}{192.168.113.32:9300}{ml.machine_memory=134986862592ml.max_open_jobs=20xpack.installed=trueml.enabled=true}]reason: added {{tgs-2}{S64iPm03Qtq0-bvJipk-_A}{eAChESS6TceLHHTHyfMU7g}{192.168.113.32}{192.168.113.32:9300}{ml.machine_memory=134986862592ml.max_open_jobs=20xpack.installed=trueml.enabled=true},}
[INFO ][o.e.c.s.ClusterApplierService] [tgs-1] added {{tgs-2}{S64iPm03Qtq0-bvJipk-_A}{eAChESS6TceLHHTHyfMU7g}{192.168.113.32}{192.168.113.32:9300}{ml.machine_memory=134986862592ml.max_open_jobs=20xpack.installed=trueml.enabled=true},}reason: apply cluster state (from master [master {tgs-1}{7IqQvmfdSb66AFcP0u0AZQ}{OveP8d_SR0WIjVupZcW35g}{192.168.113.31}{192.168.113.31:9300}{ml.machine_memory=134986862592xpack.installed=trueml.max_open_jobs=20ml.enabled=true} committed version [4] source [zen-disco-node-join[{tgs-2}{S64iPm03Qtq0-bvJipk-_A}{eAChESS6TceLHHTHyfMU7g}{192.168.113.32}{192.168.113.32:9300}{ml.machine_memory=134986862592ml.max_open_jobs=20xpack.installed=trueml.enabled=true}]]])

 

Узел 2 – установка и настройка

Войти на второй сервер, установить elasticsearch или извлечь из загруженного архива

Отредактируйте файл конфигурации соответственно.

Установите имя кластера:

cluster-name=TGS

 

Установите имя второго узла:

node.name=tgs-2

 

Установите, будет ли этот узел действовать как мастер:

node.master=true

 

Установите, будет ли этот узел действовать как узел данных:

node.data=true

 

Установите IP-адрес и порт второго узла:

network.host=192.168.113.32
http.port=9200

 

Протокол обнаружения узлов кластера и список узлов:

discovery.zen.ping.unicast.hosts: ["192.168.113.31", "192.168.113.32","192.168.113.33"]

 

Все эти узлы являются частью кластера, что облегчает обнаружение узлов.

Теперь запустите сервер Flexiblesearch, следующие являются важной частью журналов установки

[INFO ][o.e.c.s.ClusterApplierService] [tgs-2] detected_master {tgs-1}
[WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [tgs-2] Failed to clear cache for realms [[]]
[INFO ][o.e.x.s.a.TokenService   ] [tgs-2] refresh keys
[INFO ][o.e.x.s.a.TokenService   ] [tgs-2] refreshed keys
[INFO ][o.e.l.LicenseService     ] [tgs-2] license [77777777-dddd-4444-aaaa-888888888888] mode [basic] - valid
[INFO ][o.e.h.n.Netty4HttpServerTransport] [tgs-2] publish_address {192.168.113.32:9200}, bound_addresses {192.168.113.32:9200}
[INFO ][o.e.n.Node               ] [tgs-2] started
[INFO ][o.e.c.s.ClusterApplierService] [tgs-2] added {{tgs-3}

 

Узел 3 – Установка и настройка

Авторизуйтесь на третьем сервере и установите elasticsearch или распакуйте загруженный zip-архив

Установите имя кластера:

cluster-name=TGS

 

Установите имя третьего узла:

node.name=tgs-3

 

Установите, будет ли этот узел действовать как мастер:

node.master=true

 

Установите, будет ли этот узел действовать как узел данных:

node.data=true

 

Установите IP-адрес и порт второго узла:

network.host=192.168.113.33
http.port=9200

 

Протокол обнаружения узлов кластера и список узлов

discovery.zen.ping.unicast.hosts: ["192.168.113.31", "192.168.113.32","192.168.113.33"]

 

Все эти узлы являются частью кластера, что облегчает обнаружение узлов.

Теперь запустите сервер Flexiblesearch, следующие являются важной частью журналов установки

[INFO ][o.e.c.s.ClusterApplierService] [tgs-3] detected_master {tgs-1}
[WARN ][o.e.x.s.a.s.m.NativeRoleMappingStore] [tgs-3] Failed to clear cache for realms [[]]
[INFO ][o.e.x.s.a.TokenService   ] [tgs-3] refresh keys
[INFO ][o.e.x.s.a.TokenService   ] [tgs-3] refreshed keys
[INFO ][o.e.l.LicenseService     ] [tgs-3] license [77777777-dddd-4444-aaaa-888888888888] mode [basic] - valid
[INFO ][o.e.h.n.Netty4HttpServerTransport] [tgs-3] publish_address {192.168.113.33:9200}, bound_addresses {192.168.113.33:9200}
[INFO ][o.e.n.Node               ] [tgs-3] started

 

Проверить состояние кластера Elasticsearch

Наш кластер настроен и работает, давайте проверим настройки этого кластера, мы могли бы использовать API кластерного поиска с elasticsearch для проверки состояния кластера (подробно рассмотрим API-интерфейсы кластера в статьях серии ES)

curl -XGET 'http://localhost:9200/_cluster/state?pretty'

 

Вывод:

{
"cluster_name" : "TGS",
"cluster_uuid" : "vlt_bBfJRP268MFFA5XY4w",
"version" : 5,
"state_uuid" : "VxN1E51xRievom5n1BDiNQ",
"master_node" : "7IqQvmfdSb66AFcP0u0AZQ",
"blocks" : { },
"nodes" : {
"S64iPm03Qtq0-bvJipk-_A" : {
"name" : "tgs-2",
"ephemeral_id" : "eAChESS6TceLHHTHyfMU7g",
"transport_address" : "192.168.113.32:9300",
"attributes" : {
"ml.machine_memory" : "134986862592",
"ml.max_open_jobs" : "20",
"xpack.installed" : "true",
"ml.enabled" : "true"
}
},
"syxQbgRPS4q992NXkx3ptw" : {
"name" : "tgs-3",
"ephemeral_id" : "-uK6TjQ2Qz6o_6arfmRR3Q",
"transport_address" : "192.168.113.33:9300",
"attributes" : {
"ml.machine_memory" : "134986862592",
"ml.max_open_jobs" : "20",
"xpack.installed" : "true",
"ml.enabled" : "true"
}
},
"7IqQvmfdSb66AFcP0u0AZQ" : {
"name" : "tgs-1",
"ephemeral_id" : "OveP8d_SR0WIjVupZcW35g",
"transport_address" : "192.168.113.31:9300",
"attributes" : {
"ml.machine_memory" : "134986862592",
"xpack.installed" : "true",
"ml.max_open_jobs" : "20",
"ml.enabled" : "true"
}
}
},

 

Это значимая часть API статуса, она показывает кластер, узлы, транспортный адрес и идентификаторы.

curl -XGET 'http://localhost:9200/_cluster/health'

 

Вывод:

{
"cluster_name" : "TGS",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 0,
"active_shards" : 0,
"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.0
}

 

Приведенный выше вывод отображает общее состояние кластера и его текущий статус – зеленый.

Exit mobile version