# Организация безопасного кластера

**URL:** https://discuss.elastic.co/t/topic/106121
**Category:** Вопросы на русском языке
**Created:** [November 2, 2017, 5:16am UTC](https://discuss.elastic.co/t/topic/106121 "2017-11-02T05:16:17Z")
**Posts on this page:** 17
**Page:** 1

<div class="post-metadata">

### Author: ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)
#### Post date: [November 2, 2017, 5:16am UTC](https://discuss.elastic.co/t/topic/106121/1 "2017-11-02T05:16:17Z")

</div>

Здравствуйте!  
Я новичок в эластике, но мы пытаемся внедрить его в наш проект.  
Сейчас стоит задача о создании безопасной структуры кластера. Я прочитал несколько статей, но не все понятно, не могли бы вы ответить на пару моих вопросов?

1. Для создания надежного кластера нужно как минимум 3 ноды?

2. Для защиты от split-brain нужно выставит параметр minimum\_master\_nodes равным 2, при наличии 3х нод. Мне не понятно, что делает этот параметр? В кластере будет 2 мастер-ноды?

3. В некоторых статьях, упоминается что хранить данные на мастер-ноде не является хорошим тоном, это так?

4. Так же я прочитал, что для мастер-нод можно использовать менее производительные машины? Это позволяет взять больше машин, за те же деньги и защититься от split-brain.

5. Сколько балансировщиков должно быть в кластере? 1?

Буду благодарен за ваши советы и комментарии!

---

<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: [November 2, 2017, 2:08pm UTC](https://discuss.elastic.co/t/topic/106121/2 "2017-11-02T14:08:01Z")

</div>

Есть несколько архитектур, которые во многом зависят от размера кластера. Если забыть про все что вы читали, то какой размер будет у вашего кластера в данный момент?

---

<div class="post-metadata">

### Author: ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)
#### Post date: [November 2, 2017, 3:01pm UTC](https://discuss.elastic.co/t/topic/106121/3 "2017-11-02T15:01:19Z")

</div>

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

---

<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: [November 2, 2017, 3:31pm UTC](https://discuss.elastic.co/t/topic/106121/4 "2017-11-02T15:31:20Z")

</div>

Бесперебойную работу и не чтение данных и на запись? Или только на чтение?

---

<div class="post-metadata">

### Author: ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)
#### Post date: [November 2, 2017, 4:01pm UTC](https://discuss.elastic.co/t/topic/106121/5 "2017-11-02T16:01:41Z")

</div>

Желательно и то, и другое, но это не строго. Все зависит от необходимых средств для этого.

---

<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: [November 2, 2017, 5:09pm UTC](https://discuss.elastic.co/t/topic/106121/6 "2017-11-02T17:09:44Z")

</div>

Начнем с одной ноды. Если эта нода падает - все пропало.

Добавляем вторую ноду. Если одна из нод падает - то все хорошо вторая нода становится (или остается) мастером и все работает. Однако, если нода не падает, а вместо этого теряет связь с первой - у нас получается сплит брейн и потеря данных, что не хорошо. Чтобы решить эту проблему ставим `minimum_master_node: 2`. Теперь если одна из нод падает или отделяется обе ноды перестают быть мастерами, и кластер переходим в режим только для чтение. Это лучше, чем сплит брейн, но не идеально.

Добавляем третью ноду и оставляем `minimum_master_node: 2`. Теперь если одна из нод отделяется или падает, две других все еще могут избрать мастера, потому что их 2. То есть все работает при потере одного сервера. Мы можем писать и читать. Но кто-то нам говорить, что это плохой тон. Почему? Дело в том, что у нас мастера в данной архитектуре работают как мастера, так и сервера данных. Поэтому если перегрузка по поисковому или индексному трафику может перегрузить мастера и вызвать нестабильность в кластере. Как это исправить?

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

---

<div class="post-metadata">

### Author: ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)
#### Post date: [November 2, 2017, 5:40pm UTC](https://discuss.elastic.co/t/topic/106121/7 "2017-11-02T17:40:06Z")

</div>

Игорь, в вашем последнем сообщении сказано, что идеальным вариантом является 2 дата-ноды + 3 мастер-ноды, не могли бы вы пояснить, почему именно 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: [November 2, 2017, 5:45pm UTC](https://discuss.elastic.co/t/topic/106121/8 "2017-11-02T17:45:13Z")

</div>

По тем же причинам, что и с 2-мя нодами. Если вы одну мастер-ноду потеряете, то вторая не сможет стать мастером из-за `minimum_master_node: 2`.

---

<div class="post-metadata">

### Author: ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)
#### Post date: [November 2, 2017, 6:29pm UTC](https://discuss.elastic.co/t/topic/106121/9 "2017-11-02T18:29:36Z")

</div>

А, кажется я понял, голосовать за выбор мастера могут только другие мастер-ноды, а не дата-ноды, поэтому нужно именно 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: [November 2, 2017, 6:34pm UTC](https://discuss.elastic.co/t/topic/106121/10 "2017-11-02T18:34:10Z")

</div>

Верно.

---

<div class="post-metadata">

### Author: ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)
#### Post date: [November 2, 2017, 6:46pm UTC](https://discuss.elastic.co/t/topic/106121/11 "2017-11-02T18:46:56Z")

</div>

Игорь, спасибо за вашу помощь!  
И последний вопрос, роль балансировщика нужно выносить на отдельную машину? Или где ее лучше установить на мастере или дата-ноде?

---

<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: [November 2, 2017, 7:10pm UTC](https://discuss.elastic.co/t/topic/106121/12 "2017-11-02T19:10:22Z")

</div>

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

---

<div class="post-metadata">

### Author: ![MichaelAA](https://avatars.discourse-cdn.com/v4/letter/m/0ea827/32.png) [@MichaelAA](https://discuss.elastic.co/u/MichaelAA)
#### Post date: [November 2, 2017, 9:32pm UTC](https://discuss.elastic.co/t/topic/106121/13 "2017-11-02T21:32:26Z")

</div>

Игорь, приветствую!  
Возможно глупые вопросы, а три ноды - это три отдельных сервера, которые являются мастер и дата нодами одновременно?

Данные реплицируется с самого мастеровитого на остальные?

Три сервера в одном ДЦ находятся или можно в разных?

Если в разных ДЦ (каждая нода и мастер и данных хранит и настройка стоит minimum\_master\_node: 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: [November 2, 2017, 10:28pm UTC](https://discuss.elastic.co/t/topic/106121/14 "2017-11-02T22:28:25Z")

</div>

> а три ноды - это три отдельных сервера, которые являются мастер и дата нодами одновременно?

да

> Данные реплицируется с самого мастеровитого на остальные?

нет, вы путаете понятия мастера в кластере и праймари шарды. Праймари реплицирует. Мастер только изменяет состояние кластера и посылает изменения всем остальным нодам.

> Три сервера в одном ДЦ находятся или можно в разных?

Можно в разных, но только если между ними связь очень хорошая и она находятся рядом.

> то не будет ли тормозить запись и чтение? Как будет определяться куда сначала идет запись и откуда сначала должно идти чтение? или к какой из нод обращаюсь с той и происходит работа?

Опять же, почитайте про роль мастера в кластере и про разницу между праймари и репликой. Можно почитать [тут](https://www.elastic.co/guide/en/elasticsearch/guide/current/distributed-cluster.html).

---

<div class="post-metadata">

### Author: ![MichaelAA](https://avatars.discourse-cdn.com/v4/letter/m/0ea827/32.png) [@MichaelAA](https://discuss.elastic.co/u/MichaelAA)
#### Post date: [November 3, 2017, 12:36pm UTC](https://discuss.elastic.co/t/topic/106121/15 "2017-11-03T12:36:29Z")

</div>

Игорь, спасибо!

---

<div class="post-metadata">

### Author: ![IvanTushin](https://avatars.discourse-cdn.com/v4/letter/i/dbc845/32.png) [@IvanTushin](https://discuss.elastic.co/u/IvanTushin)
#### Post date: [November 23, 2017, 8:12am UTC](https://discuss.elastic.co/t/topic/106121/16 "2017-11-23T08:12:48Z")

</div>

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

Игорь, подскажите, пожалуйста, если у нас есть 2 дата ноды + 1 мастер нода, в случае потери мастер ноды кластер перейдет в состояние "только для чтения". А что будет с кластером если данные мастер ноды будут потеряны безвозвратно? Можно подключить новую мастер ноду и все само заработает?

---

<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: [December 21, 2017, 8:13am UTC](https://discuss.elastic.co/t/topic/106121/17 "2017-12-21T08:13:11Z")

</div>

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