Docker 安装ElasticSearch 启动项目出现 [{#transport#-1}{WW73fQYgSq-vd8jQXTmdIw}{192.168.11.134}{192.168.11.13

1), docker 安装 elasticSearch 如下

docker run -di --name=tensquare_es -p 9200:9200 -p 9300:9300 elasticsearch:5.6.8

2),通过如下命令 查看是否成功

docker ps

3),页面访问 elasticsearch 是否成功

                

4), 使用postMain 创建索引 如下

5), 把项目的elasticsearch 项目的访问地址 改为linux 虚拟机地址 运行项目,执行向索引库插入数据的方法 出现了错误

NoNodeAvailableException[None of the configured nodes are available: [{#transport#-1}{WW73fQYgSq-vd8jQXTmdIw}{192.168.11.134}{192.168.11.134:9300}]]
	at org.elasticsearch.client.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)
	at org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)
	at org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)
	at org.elasticsearch.client.transport.TransportClient.doExecute(TransportClient.java:366)
	at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:408)
	at org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)

...
  • linux 虚拟机 9300 端口不可用 但是9200 可用
  • window 电脑安装的elasticsearch 9200 与9300 端口都可用
  • 这个错误 是因为 elasticsearch 从5版本以后默认不开启远程连接,需要修改配置文件(由于我们使用的是docker 安装的 elasticsearch 所以 我们怎么修改容器里面的配置文件呢?下面为你解答)

接下来来解决9300 端口不可用的这个问题

1), docker 获取 elasticsearch 路径名称

docker exec -it tensquare_es /bin/bash

运行如下

2),获取docker 容器中 elasticsearch 的 elasticsearch.yml 文件位置 ,如下

      

  • 路径为 /usr/share/elasticsearch/config/elasticsearch.yml

2-1), 注意 如果我们直接使用 vi elasticsearch.yml来进行修改容器中的文件是不能进行修改的 如下

   

2-2),退出elasticsearch 

       

3),接下来就是在虚拟机上创建这样一个文件 来 代替docker 容器中 elasticsearch.yml的配置文件

3-1),接下来使用ftp 查看我们复制的 elasticsearch.yml 文件如下复制成功

      

4),删除原来的 elasticsearch 容器 重新创建新容器

4-1),重新创建新的elasticsearch容器

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

如下

5),修改 /usr/share/elasticsearch.yml 的配置文件

命令

vi /usr/share/elasticsearch.yml

5-1),修改如下

            

保存退出命令是 esc :wq

6),重新启动 elasticsearch 容器如下

  • 我们看 他跑起来了 其实没有跑起来 而是elasticsearch 在走日志 ,日志出错所以就显示关闭
  • 这个问题主要是虚拟机的问题

6-1),这是什么原因呢?

  • 这与我们刚才修改的配置有关,因为 elasticsearch 在启动的时候会进行一些检查,比如说最多打开的文件个数一级虚拟机内存区域数量等等,如果你开放了此设置,意味着需要打开更多的文件一级虚拟内存,所以我们还需要系统调优。

6-2),对linux 虚拟机进行系统调优

6-2-1),修改/etc/security/limits.conf ,追加内容

* soft nofile 65536 
* hard nofile 65536
  • nofile 是单个进程允许打开的最大文件个数
  • soft nofile 是软限制 hard nofile 是硬限制
 

 6-2-2),修改/etc/sysctl.conf,追加内容

vm.max_map_count=655360
  • 限制一个进程可以拥有的VMA(虚拟内存区域)的数量

6-2-3),重启虚拟机

#重启虚拟机
reboot 

                

7),重新启动elasticsearch 容器

 8),重新执行 9300端口测试 如下

发布了256 篇原创文章 · 获赞 188 · 访问量 65万+

猜你喜欢

转载自blog.csdn.net/qq_40646143/article/details/103276067
今日推荐