# Перенос нод кластера в docker

**URL:** <https://discuss.elastic.co/t/docker/261126>\
**Category:** Вопросы на русском языке\
**Created:** [January 14, 2021, 1:46pm UTC](https://discuss.elastic.co/t/docker/261126 "2021-01-14T13:46:23Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)\
**Post date:** [January 14, 2021, 1:46pm UTC](https://discuss.elastic.co/t/docker/261126/1 "2021-01-14T13:46:23Z")

</div>

Добрый день.

Есть кластер из 4х нод - 3 дата и 1 координатор. Пытаюсь запустить координатора в docker. Прочитал официальную инструкцию, но не понял как правильно переносить инстансы, если они на разных нодах.

Права на директории выдал, контейнер запускаю командой

> docker run   
> -v /etc/elasticsearch/:/usr/share/elasticsearch/config/   
> -v /var/log/elasticsearch/:/var/log/elasticsearch/   
> -v /var/lib/elasticsearch/:/var/lib/elasticsearch/   
> -p 9200:9200   
> -p 9300:9300   
> [docker.elastic.co/elasticsearch/elasticsearch:7.9.1](http://docker.elastic.co/elasticsearch/elasticsearch:7.9.1)

elasticsearch.yml:

> node.master: false  
> node.data: false  
> node.ingest: false
> 
> cluster.name: [elk-cluster.mgt.com](http://elk-cluster.mgt.com)
> 
> node.name: Kibana-Balancer
> 
> path.data: /var/lib/elasticsearch
> 
> path.logs: /var/log/elasticsearch
> 
> network.host: "0.0.0.0"
> 
> http.port: 9200
> 
> discovery.seed\_hosts: ["10.199.5.104","10.199.5.105","10.199.5.106"]

Контейнер запускается, но не может подключиться к кластеру

```
[2021-01-14T13:42:44,385][INFO][o.e.n.Node] [Kibana-Balancer] started
[2021-01-14T13:42:44,509][INFO][o.e.c.c.JoinHelper] [Kibana-Balancer] failed to join {elk-es-node-03}{fKA8Je-YTV-RuQ3D5OyasQ}{vR5_dstqTMW2OczAqy9uew}{10.199.5.105}{10.199.5.105:9300}{dilmrt}{ml.machine_memory=12564250624, ml.max_open_jobs=20, xpack.installed=true, transform.node=true} with JoinRequest{sourceNode={Kibana-Balancer}{5IaB4a6yTAaCHcBYdMLJpA}{QBWF9WFjR-e6KIivGtc5og}{172.17.0.3}{172.17.0.3:9300}{lr}{ml.machine_memory=12563730432, xpack.installed=true, transform.node=false, ml.max_open_jobs=20}, minimumTerm=316, optionalJoin=Optional[Join{term=316, lastAcceptedTerm=0, lastAcceptedVersion=0, sourceNode={Kibana-Balancer}{5IaB4a6yTAaCHcBYdMLJpA}{QBWF9WFjR-e6KIivGtc5og}{172.17.0.3}{172.17.0.3:9300}{lr}{ml.machine_memory=12563730432, xpack.installed=true, transform.node=false, ml.max_open_jobs=20}, targetNode={elk-es-node-03}{fKA8Je-YTV-RuQ3D5OyasQ}{vR5_dstqTMW2OczAqy9uew}{10.199.5.105}{10.199.5.105:9300}{dilmrt}{ml.machine_memory=12564250624, ml.max_open_jobs=20, xpack.installed=true, transform.node=true}}]}
org.elasticsearch.transport.RemoteTransportException: [elk-es-node-03][10.199.5.105:9300][internal:cluster/coordination/join]
Caused by: org.elasticsearch.transport.ConnectTransportException: [Kibana-Balancer][172.17.0.3:9300] connect_timeout[30s]
	at org.elasticsearch.transport.TcpTransport$ChannelsConnectedListener.onTimeout(TcpTransport.java:972) ~[elasticsearch-7.9.1.jar:7.9.1]
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:651) ~[elasticsearch-7.9.1.jar:7.9.1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
[2021-01-14T13:42:44,515][INFO][o.e.c.c.JoinHelper] [Kibana-Balancer] failed to join {elk-es-node-03}{fKA8Je-YTV-RuQ3D5OyasQ}{vR5_dstqTMW2OczAqy9uew}{10.199.5.105}{10.199.5.105:9300}{dilmrt}{ml.machine_memory=12564250624, ml.max_open_jobs=20, xpack.installed=true, transform.node=true} with JoinRequest{sourceNode={Kibana-Balancer}{5IaB4a6yTAaCHcBYdMLJpA}{QBWF9WFjR-e6KIivGtc5og}{172.17.0.3}{172.17.0.3:9300}{lr}{ml.machine_memory=12563730432, xpack.installed=true, transform.node=false, ml.max_open_jobs=20}, minimumTerm=316, optionalJoin=Optional[Join{term=316, lastAcceptedTerm=0, lastAcceptedVersion=0, sourceNode={Kibana-Balancer}{5IaB4a6yTAaCHcBYdMLJpA}{QBWF9WFjR-e6KIivGtc5og}{172.17.0.3}{172.17.0.3:9300}{lr}{ml.machine_memory=12563730432, xpack.installed=true, transform.node=false, ml.max_open_jobs=20}, targetNode={elk-es-node-03}{fKA8Je-YTV-RuQ3D5OyasQ}{vR5_dstqTMW2OczAqy9uew}{10.199.5.105}{10.199.5.105:9300}{dilmrt}{ml.machine_memory=12564250624, ml.max_open_jobs=20, xpack.installed=true, transform.node=true}}]}
org.elasticsearch.transport.RemoteTransportException: [elk-es-node-03][10.199.5.105:9300][internal:cluster/coordination/join]
Caused by: org.elasticsearch.transport.ConnectTransportException: [Kibana-Balancer][172.17.0.3:9300] connect_timeout[30s]
	at org.elasticsearch.transport.TcpTransport$ChannelsConnectedListener.onTimeout(TcpTransport.java:972) ~[elasticsearch-7.9.1.jar:7.9.1]
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingRunnable.run(ThreadContext.java:651) ~[elasticsearch-7.9.1.jar:7.9.1]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
[2021-01-14T13:42:44,758][WARN][r.suppressed] [Kibana-Balancer] path: /.kibana/_search, params: {rest_total_hits_as_int=true, size=1000, index=.kibana, from=0}
org.elasticsearch.cluster.block.ClusterBlockException: blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];

```

Kibana показывает ошибку  
`{"statusCode":503,"error":"Service Unavailable","message":"blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];: [cluster_block_exception] blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];"}`

Подскажите пожалуйста, в чем может быть проблема?

---

<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:** [January 14, 2021, 5:25pm UTC](https://discuss.elastic.co/t/docker/261126/2 "2021-01-14T17:25:54Z")

</div>

> [@KOTOXJle6](#):
>
> Подскажите пожалуйста, в чем может быть проблема?

Проблема в сети. Когда нода подключается к кластеру, она 1) пытается соединиться к нодам, которые уже в кластере и 2) дает кластеру свой адрес и мастер нода из кластера пытается открыть соединение с этой нодой.

Координатор в docker проблематичен, так как он изолирует внутреннюю сеть. Поэтому нода координации думает что у нее IP 172.17.0.3 и так представляется другим узлам, а другие узлы вне docker-а понятия не имеют где эта сетка. Внешний адрес можно указать реальный IP машины на которой запущен в установке `network.publish_host`.

---

<div class="post-metadata">

**Author:** ![KOTOXJle6](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kotoxjle6/32/131136_2.png) [@KOTOXJle6](https://discuss.elastic.co/u/KOTOXJle6)\
**Post date:** [January 14, 2021, 5:33pm UTC](https://discuss.elastic.co/t/docker/261126/3 "2021-01-14T17:33:22Z")

</div>

Всё оказалось очень просто ) Причём я пробовал добавлять эту настройку, но указывал либо для network.host и publish\_host адрес хоста и ничего не работало, либо 0.0.0.0 и тоже ничего не работало.  
Сейчас сделал вот так

```
network.host: "0.0.0.0"
network.publish_host: "10.199.5.107"

```

И всё запустилось. Большое спасибо за помощь!

---

<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:** [January 14, 2021, 5:59pm UTC](https://discuss.elastic.co/t/docker/261126/4 "2021-01-14T17:59:47Z")

</div>

Да, `network.host` задает и `network.publish_host` и `network.bind_host`. Последний (`bind_host`) задает IP на котором elasticsearch должен принимать входящие соединения. Если задать адрес хоста, то внутри докера это адрес не существует, поэтом elasticsearch не может его использовать. `0.0.0.0`, `eth0` или `_site_` для `network.bind_host` или `network.host` должно работать.

---

<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:** [February 11, 2021, 5:59pm UTC](https://discuss.elastic.co/t/docker/261126/5 "2021-02-11T17:59:56Z")

</div>

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