首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elasticsearch 5.1和Docker -如何正确配置网络以从主机访问Elasticsearch

Elasticsearch 5.1和Docker -如何正确配置网络以从主机访问Elasticsearch
EN

Stack Overflow用户
提问于 2017-01-20 06:09:31
回答 3查看 1.4K关注 0票数 2

使用Docker公共存储库中的Elasticsearch:latest (v5.1),我创建了自己的包含Cerebro的映像。我现在正在尝试正确配置Elasticsearch网络,以便可以从Cerebro连接到Elasticsearch。在我创建的容器中运行的Cerebro在我的主机上正确渲染:http://localhost:9000

提交镜像后,我使用以下内容创建了Docker容器:

代码语言:javascript
复制
sudo docker run -d -it --privileged --name es5.1 --restart=always \
-p 9200:9200 \
-p 9300:9300 \
-p 9000:9000 \
-v ~/elasticsearch/5.1/config:/usr/share/elasticsearch/config \
-v ~/elasticsearch/5.1/data:/usr/share/elasticsearch/data \
-v ~/elasticsearch/5.1/cerebro/conf:/root/cerebro-0.4.2/conf \
elasticsearch_cerebro:5.1 \
/root/cerebro-0.4.2/bin/cerebro

我在~/elasticsearch/5.1/ elasticsearch.yml中的配置当前指定了以下网络和发现条目:

代码语言:javascript
复制
network.publish_host: 192.168.1.26
discovery.zen.ping.unicast.hosts: ["192.168.1.26:9300"]

我还尝试了0.0.0.0,并且没有为这些设置指定默认回送的值。此外,我还尝试使用值的组合来指定network.host。不管我怎么设置,elasticsearch都会在启动时记录:

代码语言:javascript
复制
[info] play.api.Play - Application started (Prod)
[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
[error] p.c.s.n.PlayDefaultUpstreamHandler - Cannot invoke the action
java.net.ConnectException: Connection refused: localhost/127.0.0.1:9200
… cascading errors because of this connection refusal...

无论我如何设置elasticsearch.yml网络,Elasticsearch启动时的错误消息都不会改变。我验证了elasticsearch.yml是否在Docker容器中被拾取。如果我在这个配置上出错了,请告诉我。

EN

回答 3

Stack Overflow用户

发布于 2017-01-20 06:43:56

好吧,看起来我在和这个问题斗争了几天之后回答了我自己的问题!问题是elasticsearch并不是从容器内部开始的。为了确定这一点,我在容器中加入了一个终端:

代码语言:javascript
复制
docker exec -it es5.1 bash

进入容器后,我检查了服务状态:

代码语言:javascript
复制
service elasticsearch status

对此,操作系统的回应是:

失败elasticsearch未运行...失败!

我是这样开始的:

代码语言:javascript
复制
service elasticsearch start

我添加了一个脚本,我将从docker run调用它来启动elasticsearch和cerebro,这应该可以完成任务。然而,我仍然想知道是否有更好的方法来配置它。

票数 0
EN

Stack Overflow用户

发布于 2017-01-24 08:18:14

我做了一个github docker-compose repo,它将启动一个elasticsearch,kibana,logstash,cerebro集群

https://github.com/Shuliyey/elkc

========================================================================

另一方面,关于实际问题(elasticsearch_cerebro不工作)。

让elasticsearch和cerebro在一个docker容器中工作。需要使用supervisor

https://docs.docker.com/engine/admin/using_supervisord/

将更新更多详细信息

票数 0
EN

Stack Overflow用户

发布于 2017-08-07 22:17:59

根本不需要使用supervisor。解决这个问题的一个非常简单的方法是使用docker-compose并将Elasticsearch和Cerebro捆绑在一起,如下所示:

docker-compose.yml:

代码语言:javascript
复制
version: '2'

services:

  elasticsearch:
    build: elasticsearch
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./elasticsearch/data:/usr/share/elasticsearch/data
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx1500m -Xms1500m"
    networks:
      - elk

  cerebro:
    build: cerebro
    volumes:
      - ./cerebro/config/application.conf:/opt/cerebro/conf/application.conf
    ports:
      - "9000:9000"
    networks:
      - elk
    depends_on:
      - elasticsearch

networks:
  elk:
    driver: bridge

elasticsearch/Dockerfile:

代码语言:javascript
复制
FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.1

cerebro/Dockerfile:

代码语言:javascript
复制
FROM yannart/cerebro

然后运行docker-compose builddocker-compose up。一切启动后,您可以访问http://localhost:9200上的ES和http://localhost:9000上的Cerebro

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41752646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档