最近在学习elasticsearch,一开始就遇到一堆问题
- 下载加压之后,直接运行bin 下elasticsearch,异常 seccomp unavailable
百度下seccomp
seccomp(全称securecomputing mode)是linuxkernel从2.6.23版本开始所支持的一种安全机制。
在Linux系统里,大量的系统调用(systemcall)直接暴露给用户态程序。但是,并不是所有的系统调用都被需要,而且不安全的代码滥用系统调用会对系统造成安全威胁。通过seccomp,我们限制程序使用某些系统调用,这样可以减少系统的暴露面,同时是程序进入一种“安全”的状态。
它被合并到2005年3月8日发布的内核版本2.6.12中的Linux内核主线上。seccomp允许进程单向转换为“安全”状态,除了exit(),sigreturn(),read()和write()之外,它不能对已经打开的文件描述符进行任何系统调用。 如果它尝试任何其他系统调用,内核将使用SIGKILL或SIGSYS 终止进程。 从这个意义上说,它不会虚拟化系统的资源,而是将过程与它们完全隔离开来。
详细介绍可参考seccomp内核文档。
我的环境:
elasticsearch默认bootstrap.system_call_filter为true进行检测,所以导致检测失败,失败后直接导致ES不能启动。
vim elasticsearch.yml
修改如下
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
- 再次启动Ok,但是不能远程访问9200端口,本地curl OK
修改elasticsearch.yml
network.host: 0.0.0.0
- 重启,报错bootstrap checks failed
切换到root用户
vim /etc/security/limits.conf
uat为当前非root用户
vim /etc/security/limits.d/90-nproc.conf
将1024修改为4096
退出,重新登录后配置生效,启动elasticsearch