您的位置:首页 > 运维架构 > Docker

Elasticsearch Docker环境下安装出现的问题

2019-01-24 11:11 417 查看

我用java程序连接远程的docker的时候报错

NoNodeAvailableException[None of the configured nodes are available:
[{#transport#‐1}{exvgJLR‐RlCNMJy‐hzKtnA}{192.168.184.135}
{192.168.184.135:9300}]
]
at
org.elasticsearch.client.transport.TransportClientNodesService.ensureNodes
AreAvailable(TransportClientNodesService.java:347)
at
org.elasticsearch.client.transport.TransportClientNodesService.execute(Tra
nsportClientNodesService.java:245)
at
org.elasticsearch.client.transport.TransportProxyClient.execute(TransportP
roxyClient.java:59)

百度找了找,发现elasticsearch从5版本以后默认不开启远程连接,需要修改配置文件
进入容器

docker exec ‐it elasticsearch /bin/bash

此时,我们看到elasticsearch所在的目录为/usr/share/elasticsearch ,进入config看到了
配置文件elasticsearch.yml,但容器不能直接修改,必须挂载出来
首先退出容器,然后执行命令:

docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml /usr/share/elasticsearch.yml

停止和删除原来创建的容器

docker stop elasticsearch
docker rm elasticsearch

重新执行创建容器命令

docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 -v /usr/share/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:5.6.8

修改/usr/share/elasticsearch.yml 将 transport.host: 0.0.0.0 前的#去掉后保
存文件退出。其作用是允许任何ip地址访问elasticsearch .开发测试阶段可以这么做,生
产环境下指定具体的IP
重启启动

docker restart elasticsearch

重启后发现重启启动失败了,这时什么原因呢?这与我们刚才修改的配置有关,因为
elasticsearch在启动的时候会进行一些检查,比如最多打开的文件的个数以及虚拟内存
区域数量等等,如果你放开了此配置,意味着需要打开更多的文件以及虚拟内存,所以
我们还需要系统调优
系统调优
我们一共需要修改两处
修改/etc/security/limits.conf ,追加内容

* soft nofile 65536
* hard nofile 65536

nofile是单个进程允许打开的最大文件个数 soft nofile 是软限制 hard nofile是硬限制
修改/etc/sysctl.conf,追加内容

vm.max_map_count=655360

限制一个进程可以拥有的VMA(虚拟内存区域)的数量
执行下面命令 修改内核参数马上生效

sysctl ‐p

重新启动虚拟机,再次启动容器,发现已经可以启动并远程访问
HEAD插件安装
修改/usr/share/elasticsearch.yml ,添加允许跨域配置

http.cors.enabled: true
http.cors.allow‐origin: "*"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: