# Архитектура кластера ElasticSearch

**URL:** https://discuss.elastic.co/t/elasticsearch/198019
**Category:** Вопросы на русском языке
**Created:** [September 4, 2019, 9:20am UTC](https://discuss.elastic.co/t/elasticsearch/198019 "2019-09-04T09:20:54Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![Lebedev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lebedev/32/53579_2.png) [@Lebedev](https://discuss.elastic.co/u/Lebedev)
#### Post date: [September 4, 2019, 9:20am UTC](https://discuss.elastic.co/t/elasticsearch/198019/1 "2019-09-04T09:20:54Z")

</div>

Здравствуйте, коллеги.  
Проконсультируйте, пожалуйста.

В настоящий момент я собираю кластер ElasticSearch.  
Получается следующая схема (HA):

Площадка 1(основная):  
1хMaster node  
3хData node(hot)

Площадка 2(резервная - копия данных основной):  
1хMaster node  
3хData node (hot)

Диски SSD.

Требуется, обеспечить высокую доступность данных, то есть при выключении площадки 1 или 2 должен быть обеспечен доступ ко всем накопленным данным с доступной площадки + при включении площадки обратно в стек данные должны синхронизироваться.

Безусловно Logstash должен продолжать лить данные на доступную площадку.

В связи с этим у меня есть ряд вопросов:  
Правильно ли я понимаю, то что включение настройки  
master.node: true обеспечивают данный результат ? если нет то подскажите, как настроить или куда посмотреть.

Как в этой ситуации необходимо настраивать Logstash output? Необходимо настроить отправку в master на обе площадки или есть другие решения, чтобы не нагружать канал между площадками?

Заранее спасибо за ответ

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [September 4, 2019, 2:08pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/2 "2019-09-04T14:08:32Z")

</div>

> [@Lebedev](#):
>
> Правильно ли я понимаю, то что включение настройки  
> master.node: true обеспечивают данный результат ?

Не совсем.

> если нет то подскажите, как настроить или куда посмотреть.

Зависит от того, распеределены ли площадки географически или нет. Если нет - то лучше добавить еще одну площадку (хотя бы маленькую с одним voting-only master-eligible узлом) объеденить все в один кластер, и смотреть надо тут  
[Discovery and cluster formation | Elasticsearch Guide [8.11] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html) и [Cluster-level shard allocation and routing settings | Elasticsearch Guide [8.11] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-cluster.html) особенно на forced awareness в вашем случае.

Если одна площадка в Москве а другая на Сахалине, то надо все ноды сделать master-eligible, оставить два отдельных кластера и смотреть тут - [Cross-cluster replication | Elastic Stack Overview [7.4] | Elastic](https://www.elastic.co/guide/en/elastic-stack-overview/current/xpack-ccr.html)

---

<div class="post-metadata">

### Author: ![Lebedev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lebedev/32/53579_2.png) [@Lebedev](https://discuss.elastic.co/u/Lebedev)
#### Post date: [September 4, 2019, 3:12pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/3 "2019-09-04T15:12:50Z")

</div>

Игорь, приветствую. Рад слышать) У меня в проекте две географически разделенные площадки.  
Насколько я понимаю ccr входит в состав X-pack и распространяется под Platinum лицензию. Скорее всего это следующий шаг и да, спасибо за ссылку.

А если исходить от базовой лицензии. У меня в каждом кластере есть +1 одна Ingest node и Logstash. В итоге, Ingets node\logstash разливают данные по data nodes, а Beats отправляет данные на ingets nodes на обе площадки. Как по вашему мнению такая конфигурация жизнеспособна? И каких сюрпризов от нее можно ожидать на первых этапах проекта? Или вообще отказаться от какого то куска?

Срок хранения данных на первом этапе планируется 1-2 месяца.  
Затем планируется масштабирование.

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [September 5, 2019, 3:48pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/4 "2019-09-05T15:48:49Z")

</div>

> [@Lebedev](#):
>
> Как по вашему мнению такая конфигурация жизнеспособна? И каких сюрпризов от нее можно ожидать на первых этапах проекта? Или вообще отказаться от какого то куска?

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

---

<div class="post-metadata">

### Author: ![Lebedev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lebedev/32/53579_2.png) [@Lebedev](https://discuss.elastic.co/u/Lebedev)
#### Post date: [September 6, 2019, 6:34am UTC](https://discuss.elastic.co/t/elasticsearch/198019/5 "2019-09-06T06:34:01Z")

</div>

Игорь, Спасибо, за ответы.

Скажите,  
Правильно ли я понимаю:  
Все Beat будут идти у меня с настройкой loadbalancer: true на две ноды logstash, расположенные по одному на площадке 1 и 2. Конфигурация logstash output должна включать в себя все ноды кластера elastic или logstash должен отправлять данные только в свои data node расположенные на той же площадке?

Ко всему прочему, к кластеру я планирую подключить Cordinate node и подключить к ней кибану и Grafana, это нормальная практика?

И Игорь, подскажите, по версии elastic 7.3. Правильно ли я понимаю, что в версии 7.3 голосующую ноду можно включить на любой другой data node на площадке?  
И насколько я слышал в версии 7.3 представлена возможность включения парольной защиты кластера(в базовой лицензии), где можно найти информацию по этому вопросу?

Заранее большое спасибо за оказанную поддержку и помощь!

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [September 6, 2019, 2:11pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/6 "2019-09-06T14:11:22Z")

</div>

> [@Lebedev](#):
>
> Все Beat будут идти у меня с настройкой loadbalancer: true на две ноды logstash, расположенные по одному на площадке 1 и 2.

На сколько я понимаю, loadbalance разделяет нагрузку по нескольким logstash-ам, а не дублицирует ее, а вам надо как раз наоборот?

> Конфигурация logstash output должна включать в себя все ноды кластера elastic или logstash должен отправлять данные только в свои data node расположенные на той же площадке?

Вы не могли более подробно описать свой план. Судя по этим вопросам, я не правильно себе представляю, что вы хотите сделать.

> Ко всему прочему, к кластеру я планирую подключить Cordinate node и подключить к ней кибану и Grafana, это нормальная практика?

Это нормальная практика для больших кластеров. Для вашего кластера, я думаю, это пока делать рановато.

> Правильно ли я понимаю, что в версии 7.3 голосующую ноду можно включить на любой другой data node на площадке?

Для выборов нужен кворум. Если Вы разместите ноду на одной из 2 площадок, то если эта площадка упадет - то вторая не сможет провести выборы, так как у нее одной кворума не будет.

> И насколько я слышал в версии 7.3 представлена возможность включения парольной защиты кластера(в базовой лицензии), где можно найти информацию по этому вопросу?

> **[Security for Elasticsearch is now free](https://www.elastic.co/blog/security-for-elasticsearch-is-now-free)**
>
> We are thrilled to announce that the core security features of the Elastic Stack -- like TLS encryption, RBAC, and both file and native authentication -- are now free.

> Заранее большое спасибо за оказанную поддержку и помощь!

Рад помочь! Кстати, если интересно, то у нас будут [курсы в Москве](https://training.elastic.co/?courseId=0&city=MOSCOW) в середине октября. Читать их, скорее всего, буду я, но в любом случае мы там многие эти и другие вопросы будем подробно обсуждать.

---

<div class="post-metadata">

### Author: ![Lebedev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lebedev/32/53579_2.png) [@Lebedev](https://discuss.elastic.co/u/Lebedev)
#### Post date: [September 6, 2019, 3:30pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/7 "2019-09-06T15:30:02Z")

</div>

> [@Igor\_Motov](#):
>
> На сколько я понимаю, loadbalance разделяет нагрузку по нескольким logstash-ам, а не дублицирует ее, а вам надо как раз наоборот?

Игорь, целью кластера является мониторинг сервисов и хранение метрик.  
По предыдущему описанию да, понял, что если кластер хранит копию данных, то нужно отключать балансировку на Beats. И в целях пилота назначить любую ноду голосующей. НО тут же у меня возникает x2 или даже x3 нагрузка на канале между площадками.

А если представить, то что все ноды (на двух площадках являются одним большим кластером). То есть Beats балансирует данные на оба logstash (на площадке 1 и 2), а дальше logstash разливает данные по data nodes. Я уменьшаю нагрузку на канал и в случае если площадка упадет, то нагрузку на себя примет доступный Logstash. Нужно ли вводить мастер ноду в этой ситуации?

> [@Igor\_Motov](#):
>
> Это нормальная практика для больших кластеров. Для вашего кластера, я думаю, это пока делать рановато.

То есть мне необходимо подключать Kibana и Grafana в этой ситуации к master  
node, а она отдаст информацию от всего кластера?

> [@Igor\_Motov](#):
>
> Для выборов нужен кворум. Если Вы разместите ноду на одной из 2 площадок, то если эта площадка упадет - то вторая не сможет провести выборы, так как у нее одной кворума не будет.

Да, этот момент я прорабатывал, в итоге пришел к выводу, что можно через VirtualIP реализовать.

> [@Igor\_Motov](#):
>
> Рад помочь! Кстати, если интересно, то у нас будут [курсы в Москве](https://training.elastic.co/?courseId=0&city=MOSCOW) в середине октября. Читать их, скорее всего, буду я, но в любом случае мы там многие эти и другие вопросы будем подробно обсуждать.

Здорово, буду иметь ввиду и постараюсь быть. Спасибо еще раз за содействие и заранее простите за возможно базовые вопросы!

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [September 6, 2019, 8:24pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/8 "2019-09-06T20:24:02Z")

</div>

Я думаю, было бы неплохо подробно изучить весь раздел [Discovery And cluster formation](https://www.elastic.co/guide/en/elasticsearch/reference/7.0/modules-discovery.html) нашей документации. Одна мастер нода в кластере это не хорошо, потому что если эта нода накрывается, кластер становиться неработоспособным. Выделенные мастер ноды, если их 3, увеличивают устойчивость кластера, но если на них посылать трафик из кибаны, но весь толк от их выделения пропадает.

---

<div class="post-metadata">

### Author: ![Lebedev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lebedev/32/53579_2.png) [@Lebedev](https://discuss.elastic.co/u/Lebedev)
#### Post date: [September 7, 2019, 4:40pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/9 "2019-09-07T16:40:49Z")

</div>

> [@Igor\_Motov](#):
>
> Выделенные мастер ноды, если их 3, увеличивают устойчивость кластера, но если на них посылать трафик из кибаны, но весь толк от их выделения пропадает.

Хорошо, третью мастер ноду я размещу в другой стойке, для устойчивости кластера при падении серверов, понимаю, что это не застрахует от падения площадки полностью, но это следующие шаги. А как же быть с подключением Кибана и Графана, есть ли рекомендации по этому поводу?

---

<div class="post-metadata">

### Author: ![Igor\_Motov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/igor_motov/32/45193_2.png) [@Igor\_Motov](https://discuss.elastic.co/u/Igor_Motov)
#### Post date: [September 9, 2019, 1:30pm UTC](https://discuss.elastic.co/t/elasticsearch/198019/10 "2019-09-09T13:30:59Z")

</div>

> [@Lebedev](#):
>
> А как же быть с подключением Кибана и Графана, есть ли рекомендации по этому поводу?

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

---

<div class="post-metadata">

### Author: ![Lebedev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/lebedev/32/53579_2.png) [@Lebedev](https://discuss.elastic.co/u/Lebedev)
#### Post date: [September 11, 2019, 9:22am UTC](https://discuss.elastic.co/t/elasticsearch/198019/11 "2019-09-11T09:22:57Z")

</div>

Игорь, спасибо большое за консультацию.  
Кластер собран=)

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [October 9, 2019, 9:23am UTC](https://discuss.elastic.co/t/elasticsearch/198019/12 "2019-10-09T09:23:04Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
