ES的配置错误信息
1.1.org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
也就是说ES不能使用root用户运行,因为root叫做超级管理员,权限太大,在运行期间可能会去篡改ES的配置信息
解决方案:
需要创建一个新的用户来运行ES
useradd esuser
passwd 123456
虽然已经把esuser这个用户创建完毕了,但是data目录是root用户进行创建,包括es压缩包都是root用户进行上传的
所以必须要给esuser进行授权
chown -R esuser /home/apps/es…
**1.2.java.lang.UnsupportedOperationException: seccomp unavailable: CONFIG_SECCOMP not compiled into kernel, CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER are needed**
在centos7.x版本中会默认自带CONFIG_SECCOMP_FILTER过滤器,但是centos6.x没有这个过滤器
因为ES在启动中默认就是会去加载CONFIG_SECCOMP_FILTER过滤器,但是centos6.x中没有这个过滤器,所以报错,让ES启动的时候不加载这个过滤器即可(当然也可以换系统)
需要在es的配置文件中添加一行:
bootstrap.system_call_filter: false
**1.3.max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]**
因为Linux的自我保护机制(Linux本身自己运行也需要消耗硬盘和内存,不可能把所有的内存和硬盘都给客户的软件使用,所以会限制用户所上传上来的一些软件)
最大给了ES是4096,但是ES不能满足,需要最少增加到65536
解决方案:
vim /etc/security/limits.conf(推荐直接复制粘贴,如果写不好容易造成服务器崩溃)
* soft nproc 655350
* soft nofile 655350
* hard nproc 655350
* hard nofile 655350
*
**1.4.max number of threads [1024] for user [esuser] is too low, increase to at least [4096]**
也就是说ES所需要运行的最大线程数是4096,但是Linux默认只给es用户分配了1024,对于es用户来说不够用
解决方案:
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 1024---->4096
root soft nproc unlimited
**1.5.max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]**
linux给ES的虚拟内存太小了,不足以ES正常运转(因为ES的所有的数据都在内存中)
解决方案:
vim /etc/sysctl.conf
跳转到文件的末尾
vm.max_map_count=262144
以上的bug解决完毕之后,再次运行还是不行,需要让这些配置立即生效
sysctl -p
**1.6.Exception in thread "main" java.nio.file.AccessDeniedException: /home/apps/elasticsearch-6.4.0/config/jvm.options**
因为曾经使用root用户启动过,当ES一旦启动,无论是否成功,都会把这些数据信息或者日志信息存放在data/logs目录中,因为root用户权限实在太大了,esuser用户并没有权限去访问它,这个时候当esuser需要去读取data目录中数据的时候没有权限,所以直接报错
解决方案:
所以在这并不能授权,需要删除data目录中所有文件夹/文件
然后再次切换esuser来进行启动即可