Elasticsearch 5.1和Docker – 如何正确configurationnetworking以便从主机到达Elasticsearch
使用Docker公共库中的Elasticsearch:latest(v5.1),我创build了自己的包含Cerebro的映像。 我现在试图让Elasticsearchnetworking正确configuration,以便我可以连接到Cerebro的Elasticsearch。 运行在我创build的容器内的Cerebro,在我的主机上正确呈现: http:// localhost:9000 。
提交我的图像后,我创build了以下的Docker容器:
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 / config中的elasticsearch.yml目前有以下networking和发现条目:
network.publish_host: 192.168.1.26 discovery.zen.ping.unicast.hosts: ["192.168.1.26:9300"]
我也试过0.0.0.0,并没有指定这些设置的默认值到环回。 另外,我试过用值的组合来指定network.host。 无论我如何设置,elasticsearch在启动时login:
[info] play.api.Play - Application started (Prod) [info] pcsNettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 [error] pcsnPlayDefaultUpstreamHandler - Cannot invoke the action java.net.ConnectException: Connection refused: localhost/127.0.0.1:9200 … cascading errors because of this connection refusal...
无论如何设置elasticsearch.ymlnetworking,Elasticsearch启动时的错误消息都不会改变。 我validation了在Docker容器内拾取elasticsearch.yml。 请让我知道我错了这个configuration。
那么看起来好像我在经过了数天的战斗之后回答了我自己的问题!问题是弹性search并没有在容器内部开始,为了确定这个问题,我得到了一个terminal进入容器:
docker exec -it es5.1 bash
一旦进入容器,我检查了服务状态:
service elasticsearch status
为此,操作系统回应:
[失败] elasticsearch没有运行…失败!
我开始与它:
service elasticsearch start
我添加一个脚本,我会从docker运行调用来启动elasticsearch和cerebro,应该做的伎俩。 不过,我仍然想听听是否有更好的方法来configuration它。
我做了一个github docker-compose repo,它将启动elasticsearch,kibana,logstash,cerebro cluster
https://github.com/Shuliyey/elkc
================================================== ======================
另一方面,关于实际问题(elasticsearch_cerebro不起作用)。
在一个docker集装箱进行弹性研究和脑力劳动。 需要使用主pipe
https://docs.docker.com/engine/admin/using_supervisord/
将更新更多的细节
根本不需要使用主pipe。 解决这个问题的一个非常简单的方法是使用docker-compose并将Elasticsearch和Cerebro捆绑在一起,如下所示:
泊坞窗,compose.yml:
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:
FROM docker.elastic.co/elasticsearch/elasticsearch:5.5.1
脑/ Dockerfile:
FROM yannart/cerebro
然后运行docker-compose build
和docker-compose up
。 当一切开始时,您可以通过http:// localhost:9200和Cerebro的http:// localhost:9000访问ES