CentOS7下安装elastic search错误记录

本来只想安安静静装个es,看网上的步骤就两三步就完成了,但是到了我这里,因为我的服务器是新的,只有jdk是我自己装的1.8版本的,装的时候那真的是把坑都踩遍了,看样子不光是软件问题,环境也有很大的关系。下面就把我遇到的坑都贴出来看看吧。
我的服务器系统版本是:CentOS7.5 x86_64
安装的过程就只是解压,修改配置文件,启动的时候,错误就都来了。

启动bin目录下的elasticsearch

[root@VM_0_4_centos elasticsearch-7.4.2]# ./bin/elasticsearch

1 JNA.jar的问题

这时候却出现如下错误:

[2019-11-01T14:49:41,008][WARN ][o.e.b.Natives            ] [unknown] unable to load JNA native support library, native methods will be disabled.

看起来是少了jna的jar包,仔细看了下是有版本信息:4.5.1版本
缺少jna.jar
在安装的lib目录下发现有jna-4.5.1.jar包,网上找了解决问题的方法,先把原来的jar包备份,再重新下载放到lib目录下即可:所有jna版本下载地址
我这里找到4.5.1版本的,直接在lib目录下用wget下载:

#备份原来的jar包
[root@VM_0_4_centos lib]# mv jna-4.5.1.jar jna-4.5.1.jar.bak
#下载新的jar包
[root@VM_0_4_centos lib]# wget http://repo1.maven.org/maven2/net/java/dev/jna/jna/4.5.1/jna-4.5.1.jar

2 xpack.ml的问题

再启动又报下面的错:

org.elasticsearch.bootstrap.StartupException: ElasticsearchException[X-Pack is not supported and Machine Learning is not available for [linux-x86]; you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml]

错误信息里已经说了解决方法了,在config/elasticsearch.yml中加上如下代码即可:

xpack.ml.enabled: false

3 vm.max_map_count的问题

再启动又报错。。。。(再多的问题还是得解决啊),错误信息如下:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

错误原因是:elasticsearch用户拥有的内存权限太小,至少需要262144
所以要将内存权限永久调大,修改/etc/sysctl.conf文件最后添加一行

vm.max_map_count=262144

添加完成之后执行以下命令使其生效:

sysctl -p

4 不能用root用户启动的问题

再启动还有一个错:

org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root

这个错预料之中,elasticsearch不能用root用户启动,刚才忘记切换用户了,所以导致这个问题,切换用户再启动就可以了(没有用户的需要新建,不会的可以参考:https://blog.csdn.net/liu1160848595/article/details/102837314):

[root@VM_0_4_centos elasticsearch-6.8.3]# su lgs

5 不支持SecComp的问题

再启动,又还有错:

java.lang.UnsupportedOperationException: seccomp unavailable: 'i386' architecture unsupported

这是因为因为Centos6不支持SecComp,而ES默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,解决办法是在config/elasticsearch/yml里添加下面两行:

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

6 未使用服务器VM的问题

再启动,又有如下错误:

[1]: JVM is using the client VM [Java HotSpot(TM) Client VM] but should be using a server VM for the best performance

JVM正在使用客户机VM [Java HotSpot™客户机VM],但是为了获得最佳性能,应该使用服务器VM
解决方法是在jdk安装目录下:JAVA_HOME\jre\lib\i386\jvm.cfg这个文件,修改如下配置:
修改server_vm

7 文件夹权限问题

中间还有一个文件夹权限的问题我没有记录,我翻了一下我执行的命令记录,是有如下错误:

Java HotSpot(TM) Client VM warning: Cannot open file logs/gc.log due to Permission denied

这个很明显就是当前登录的用户没有此文件的操作权限,我试着给logs文件夹改变权限:chmod 777 logs,给文件夹赋予最高权限,但是还是有这个问题,后来修改了es安装目录文件夹的所有者才把问题解决:

chown -R 用户名:用户组 文件路径

到此这个问题才解决

8 开启端口防火墙

这时候启动发现没什么错误了,很慢,要耐心等待一会(服务器太差了),启动成功了但是就是访问不到,才想起来我设置了防火墙,所以得把9200端口的防火墙打开:

[root@VM_0_4_centos elasticsearch-6.8.3]# firewall-cmd --zone=public --add-port=9200/tcp --permanent

打开了外网还是访问不到,后来找了一些文章,说是es默认不允许外网访问,所以白开了端口。。。不过用内网访问也是可以测试是否成功的。
(这个问题已经解决,配置network.host:0.0.0.0之后,外网是可以访问的,开启防火墙之后需要刷新一下防火墙状态:firewall-cmd --reload,之前就是忘记刷新了,配置上倒是没什么错误。。。)

9 启动成功

以下这个界面代表启动成功了:
启动成功
运行以下命令查看端口监听:

[lgs@VM_0_4_centos elasticsearch-6.8.3]$ netstat -tln

端口监听
端口监听了基本上也就表明启动成功了,可以直接在服务器上运行以下命令访问:

[root@VM_0_4_centos ~]# curl http://127.0.0.1:9200

启动成功
看到这段文本简直是热泪盈眶啊,对linux小白的我来说,不仅是安装了一个es,而是对Linux系统更加熟悉了一些,千难万难,结果总归是好的,有进步就是成功!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值