# Два Elasticsearch на одном хосте. Серты и порты

**URL:** <https://discuss.elastic.co/t/elasticsearch/252719>\
**Category:** Вопросы на русском языке\
**Created:** [October 20, 2020, 5:09pm UTC](https://discuss.elastic.co/t/elasticsearch/252719 "2020-10-20T17:09:32Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [October 20, 2020, 5:09pm UTC](https://discuss.elastic.co/t/elasticsearch/252719/1 "2020-10-20T17:09:33Z")

</div>

Добрый день!

Скажите пожалуйста, как правильно разместить на одном хосте два Elasticsearch? Как выпустить серты для каждого, с учетом того, что серты выпускаются на ip или на dns?

Или два Elasticsearch могут работать с одним сертом?

Как разнести по портам? Например - 9200,9201 - 9300,9301?

Планирую разместить в докере.

---

<div class="post-metadata">

**Author:** ![dzyubanv](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dzyubanv/32/24110_2.png) [@dzyubanv](https://discuss.elastic.co/u/dzyubanv)\
**Post date:** [October 24, 2020, 4:53pm UTC](https://discuss.elastic.co/t/elasticsearch/252719/2 "2020-10-24T16:53:49Z")

</div>

Эластик - это распределенная система, то есть на одном хост можно установить (инсталлировать) два или более нод.  
Один нод это один эластик инстанс. Более того, можно установить два и более нодов на другом хосте или хостах.  
Два или более нод на одном хосте или на нескольких будут коммуникировать между собой и с внешними устройствами  
с помощью портов и хост имя или айпи адресов, которые конфигурируются в elasticsearch.yml файле на каждом ноде.  
Эти ноды на хосте или хостах образуют элаcтик кластер, функционирующий как единое целое.  
9300,9301 и т.д. предназначены для общения между нодами 9200,9201 и т.д. для общения с внешними устройствами.  
Серты подразумевают сертификат файлы ?  
Если да, то ответить коротко не получится.  
Я установил элаcтик кластер недавно и это взяло некоторое время для решения различных проблем по ходу.  
Кластер установлен на двух хостах, два нода на каждом хосте.  
На кластере я конфигурировал секюрити TLS/SSL как для внутреннего так и для наружного общения.  
Для этого мне потребовалось подробно ознакомиться со всей документацией, много экспериментироваь и общаться  
с эластик инженерами на форуме [Testing TLS/SSL secured elastic cluster](https://discuss.elastic.co/t/testing-tls-ssl-secured-elastic-cluster/250572/23).

Серты можно генерировать (а)только для ip, (б)только для dns (с)или для ip и для dns.  
Как генерировать серты [https://www.elastic.co/guide/en/elasticsearch/reference/7.x/configuring-tls.html#node-certificates](https://www.elastic.co/guide/en/elasticsearch/reference/7.x/configuring-tls.html#node-certificates)

```
bin/elasticsearch-certutil ca
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
bin/elasticsearch-certutil http

```

Для докера смотри [https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls-docker.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls-docker.html)

Я бы советовал путь от простого к сложному:  
-установи на докере эластик кластер с двумя нодами без секюрити  
-убедись что они образовали кластер и правильно работают с помощью CURL команды  
-генерируй юзера и его пароль, создай роль с опреденными пермишн, присвой эту роль юзеру.  
-этот изер и пароль будешь использовать при тестировании кластера с помощью CURL команды  
-добавь TLS/SSL для внутреннего обмена между нодами  
-убедись что они правильно работают с помощью CURL команды  
-добавь TLS/SSL для врешнего обмена между нодами  
-убедись что они правильно работают с помощью CURL команды

Главное, прочитай эластик документацию и особенно тщательно в отношении секюрити. Без этого будет очень сложно. Путь непростой но преодолимый.

Удачи.

---

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [October 25, 2020, 6:24pm UTC](https://discuss.elastic.co/t/elasticsearch/252719/3 "2020-10-25T18:24:43Z")

</div>

Благодарю за ответ!

Если вы собирали через docker-compose - могли бы вы поделиться рабочим конфигом?

И я так понимаю самая большая трудность - правильно выпустить сертификаты, чтобы несколько нод работали на одном сервере. Как правильно прописать ноды в instances.yml? И как правильно потом прописать эти ноды в конфиге эластиков?

---

<div class="post-metadata">

**Author:** ![dzyubanv](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dzyubanv/32/24110_2.png) [@dzyubanv](https://discuss.elastic.co/u/dzyubanv)\
**Post date:** [October 26, 2020, 2:06pm UTC](https://discuss.elastic.co/t/elasticsearch/252719/4 "2020-10-26T14:06:33Z")

</div>

Я инсталлировал эластик кластер на RHEL (Linux) серверах  
Прежде чем генерировать сертификаты, надо инстлл-ть эластик кластер минимум с двумя нодами без всякого секюрити, стартовать его убедиться что кластер работает правильно и лишь затем конфигурировать секюрити.  
Ты проделал эту часть уже ?  
С документацией по ссылках ознакомился ?  
Трудно что то советовать, не зная на какой стадии ты находишься, какую версию эластика используешь (7.0 или 7.9) ?

Сертификаты генерируются не для того,чтобы несколько нод работали на одном сервере а для конфигурирования секюрити на кластере.  
Мне кажется мы под "сертами" подрaзумеваем разные вещи или я не понял этот жаргон о "сертах" изначально.

---

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [October 26, 2020, 3:38pm UTC](https://discuss.elastic.co/t/elasticsearch/252719/5 "2020-10-26T15:38:01Z")

</div>

Благодарю за ответ! Да, эту часть я проделал - на одной ноде собрал кластер, и он работает. Кластер собрал по вашей ссылке - в докере и с SSL.

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

Со 2 сервера могу выполнить на 1 команду:

`curl -XGET -k "https://es01-01-d:9200/_cluster/health?pretty=true" -u elastic:pass`

но в логах:

`es02-03-m | {"type": "server", "timestamp": "2020-10-26T15:30:55,336Z", "level": "WARN", "component": "o.e.d.SeedHostsResolver", "cluster.name": "es-logs-cluster", "node.name": "es02-03-m", "message": "failed to resolve host [es01-01-d]"`

"Серты" - все верно, так называют сертификаты.

---

<div class="post-metadata">

**Author:** ![dzyubanv](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dzyubanv/32/24110_2.png) [@dzyubanv](https://discuss.elastic.co/u/dzyubanv)\
**Post date:** [October 26, 2020, 4:28pm UTC](https://discuss.elastic.co/t/elasticsearch/252719/6 "2020-10-26T16:28:50Z")

</div>

какая версия эластик ?  
сколько серверов и нодов на каждом сервере ты конфигурировал и стартовал чтобы образовать эластик кластер ?  
содержимое elasticsearch.yml конфиг файлов на серверах/нодах ?

чтобы проверить или ноды образуют кластер  
`curl -XGET -k "https://es01-01-d:9200/_cut/nodes?v" -u elastic:pass`

какой результат этой и предыдущей команды  
`curl -XGET -k "https://es01-01-d:9200/_cluster/health?pretty=true" -u elastic:pass`

---

<div class="post-metadata">

**Author:** ![dzyubanv](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dzyubanv/32/24110_2.png) [@dzyubanv](https://discuss.elastic.co/u/dzyubanv)\
**Post date:** [November 8, 2020, 1:46am UTC](https://discuss.elastic.co/t/elasticsearch/252719/7 "2020-11-08T01:46:32Z")

</div>

Привет Сергей,  
Хотя бы дал знать как твой проект.  
Жаль потраченного на тебя времeни.  
Осваивай английский.  
Удачи.

---

<div class="post-metadata">

**Author:** ![Sergei\_Frolov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/sergei_frolov/32/47922_2.png) [@Sergei\_Frolov](https://discuss.elastic.co/u/Sergei_Frolov)\
**Post date:** [November 9, 2020, 12:53pm UTC](https://discuss.elastic.co/t/elasticsearch/252719/8 "2020-11-09T12:53:34Z")

</div>

Добрый день!

Извиняюсь, не увидел в почте уведомления, а на форум захожу не часто.

Прошу прощения, не держите на меня зла.

Сделал overlay-сеть для хостов, на которых установлен docker.

Сделал все по документации:

> **[Encrypting communications in an Elasticsearch Docker Container |...](https://www.elastic.co/guide/en/elasticsearch/reference/current/configuring-tls-docker.html)**

Сеть также называется elastic, но она - overlay сеть из docker-swarm.

Думаю что следующим шагом загоню все это в кубер. Сейчас контейнеры работают стабильно, держат нагрузку примерно 35000 индексируемых событий в секунду.

---

<div class="post-metadata">

**Author:** ![dzyubanv](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dzyubanv/32/24110_2.png) [@dzyubanv](https://discuss.elastic.co/u/dzyubanv)\
**Post date:** [November 10, 2020, 1:33am UTC](https://discuss.elastic.co/t/elasticsearch/252719/9 "2020-11-10T01:33:14Z")

</div>

ok, np

---

<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 8, 2020, 1:33am UTC](https://discuss.elastic.co/t/elasticsearch/252719/10 "2020-12-08T01:33:19Z")

</div>

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