虚拟机中用Docker安装并启动了Elasticsearch,浏览器却访问不了_elasticsearchexception[failed to bind service]; ne

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

1.防火墙问题:

网上大部分说的就是防火墙的问题,但是在刚学docker时,我就关闭了防火墙并且禁止了开机启动,给有需要的提供下命令吧:

firewall-cmd --state # 查看防火墙状态
systemctl stop firewalld.service # 停止firewall
systemctl disable firewalld.service # 禁止firewall开机启动
reboot # 重启虚拟机

2.max_map_count太小:

第二种比较多的说法是:max_map_count太小了,但是我修改了之后问题依然没有解决,命令如下:

先查看max_map_count值(一般是65530,但如果是262144就不用改):

cat /proc/sys/vm/max_map_count
65530

修改65530为262144:

#临时修改
sysctl -w vm.max_map_count=262144

#永久修改
vm.max_map_count=262144​
3.虚拟机内存不足以给ES分配:

还有说法是ES占用的内存比较多,如果虚拟机内存不足以分配给ES时会导致启动失败,解决方法:

#查看ES的容器id:
docker ps -a
 
#删除ES容器:
docker rm + 容器id

#新建ES容器(重点加上-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"):
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-plugins:/usr/share/elasticsearch/plugins \
-v /path/to/data/dir:/usr/share/elasticsearch/data \
--network es-net \
--privileged \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.12.1

这个是黑马视频中说到过的,所以我也是加上的,对我的问题没有帮助。

正解:挂载点目录问题:

1.查看日志:

我在寻求方法时,偶然发现,这个命令可以查看Elasticsearch的日志:

# 查看最新日志(默认情况下使用-f选项)
docker logs -f +容器id或者镜像名

# 查看特定时间段内的日志:
docker logs --since 2022-01-01 +容器id或者镜像名

# 仅查看错误日志:
docker logs --since 1d --grep ERROR +容器id或者镜像名

然后我查看了我的日志,发现在我浏览器访问ip:9200时,会出现这个错误并且此时我的容器会被自动删除:

ElasticsearchException[failed to bind service]; nested: FileSystemException[/usr/share/elasticsearch/data/nodes/0: Not a directory];
Likely root cause: java.nio.file.FileSystemException: /usr/share/elasticsearch/data/nodes/0: Not a directory
2.尝试修复:

大致意思就是说我的挂载目录不存在,但是我单独创建了目录后,还是会报错:


uncaught exception in thread [main]
ElasticsearchException[failed to bind service]; nested: AccessDeniedException[/usr/share/elasticsearch/data/nodes];
Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes

然后我就针对目录做了一系列的我能想到的方法,但是都没解决问题。

3.正确方法:

无奈之下,我只能完全删除了Elasticsearch的镜像以及容器,重新安装,但是在安装之前先创建挂载点文件目录!

下面为docker安装Elasticsearch的完整步骤:

(1)创建一个网络,方便后期部署kibana:

docker network create es-net

(2)docker拉取Elasticsearch,不知道为什么在拉取Elasticsearch时,必须加tag,不能直接用latest:



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据)**
![img](https://img-blog.csdnimg.cn/img_convert/24b5c7fd22c06825a604508ce46c797e.png)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

可以添加V获取:vip204888 (备注大数据)**
[外链图片转存中...(img-aFdSsLXO-1713206139940)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值