【问题标题】:Not able to connect Elasticsearch docker container running on different port无法连接在不同端口上运行的 Elasticsearch docker 容器
【发布时间】:2020-04-06 17:22:33
【问题描述】:

我有一个 elasticsearch 7.6.1 docker 容器,我想在 9400,9500 端口上运行它。

这是我用过的 docker run 命令。

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

我还将 elasticsearch.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

因此,我的 kibana 也无法访问 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

这个 kibana 容器的日志。

{"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"}

【问题讨论】:

    标签: docker elasticsearch kibana iptables


    【解决方案1】:

    您已经定义了自定义传输端口 9400 并将其用作您的 curl 命令中的 HTTP 端口来检查 Elastic 服务器,该错误消息明确指出。

    这不是 HTTP 端口

    如您所述,您想在 9400 和 9500 上运行 Elastic,那么您需要使用以下命令将默认 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,之后,您可以使用curl http://eserver:9500(即使用HTTP 端口)检查您的ES 服务器。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-26
    • 2017-08-21
    相关资源
    最近更新 更多