Не удается подключить контейнер Elasticsearch docker, работающий через другой порт - PullRequest
1 голос
/ 06 апреля 2020

У меня есть контейнерasticsearch 7.6.1 docker, который я хочу запустить через порт 9400,9500.

Это команда запуска docker, которую я использовал.

docker run -d --name elasticsearch761v2  -v /data/dump/:/usr/share/elasticsearch/data 

-p 9400:9400 -p 9500:9500 -e "discovery.type=single-node" elasticsearch:7.6.1

, что дает следующий вывод.

docker ps -a | grep elastic
idofcontainer        elasticsearch:7.6.1                        "/usr/local/bin/docke"   18 minutes ago      Up 4 minutes                     

9200/tcp, 0.0.0.0:9400->9400/tcp, 9300/tcp, 0.0.0.0:9500->9500/tcp   elasticsearch761v2

Я также установил для параметраasticsearch.yml значение ниже.

[root@idofcontainer config]# vi elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
transport.tcp.port: 9400

Я также добавил запись Iptable для указанных выше портов.

Журнал для этого контейнера: -

{"type": "server", "timestamp": "2020-04-06T08:25:22,684Z", "level": "INFO", "component": "o.e.c.r.a.AllocationService", "cluster.name": "docker-cluster", "node.name": "4196b5b23",
"message": "Cluster health status changed from [RED] to [GREEN] (reason: [shards started [[.kibana_task_manager_1][0], [.kibana_1][0]]]).", "cluster.uuid": "gx7s8R_PTUK4lFPPGBZA", "node.id": "XfLZnNNnQnAOHJnWdDQg"  }

Вывод Curl такой: -

curl http://eserver:9400/_cat
This is not an HTTP port

Из-за этого моя кибана также не может добраться до сервера ES. Я установил kibana.yml так, чтобы он указывал на указанный выше порт.

Kibana.yml

# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://eserver:9400/"]
xpack.monitoring.ui.container.elasticsearch.enabled: true

Журнал этого контейнера кибаны.

{"type":"log","@timestamp":"2020-04-06T08:49:14Z","tags":["warning","elasticsearch","admin"],"pid":7,"message":"Unable to revive connection: http://eserver:9400/"}

{"type":"log","@timestamp":"2020-04-06T08:49:14Z","tags":["warning","elasticsearch","admin"],"pid":7,"message":"No living connections"}

1 Ответ

1 голос
/ 06 апреля 2020

Вы определили пользовательский транспортный порт 9400 и используете его в качестве порта HTTP в своей команде curl для проверки сервера Elasti c, на сообщение о котором явно указывает ошибка.

Это это не HTTP-порт

Как вы упомянули, вы хотите запустить Elasti c на 9400 и 9500, тогда вам нужно правильно привязать HTTP-порт по умолчанию 9200 к 9500, используя приведенную ниже команду.

docker run -d --name elasticsearch761v2  -v /data/dump/:/usr/share/elasticsearch/data 

-p 9400:9400 -p 9500:9200 -e "discovery.type=single-node" elasticsearch:7.6.1

Обратите внимание, что требуется только изменение -p 9500:9200, и после этого вы можете проверить сервер ES, используя curl http://eserver:9500, ie, используя порт HTTP.

...