1. 文件挂载权限问题

在使用docker来部署elasticsearch服务时,通常需要把elasticsearch的索引数据和日志数据映射到本地进行持久化存储,但是经常会遇到权限问题:elasticsearch无法读取数据或者无法写入日志文件,主要有两种处理方法:

  • 将外部文件权限全部打开,有一定安全风险
# 将外面文件夹权限设定为全部用户可读写
chmod -R 777 /PATH/TO/ES_DATA
chmod -R 777 /PATH/TO/ES_LOG
  • 将镜像内文件与宿主机文件的用户及组id统一,因为在校验权限时通过uid和gid来验证,官方elasticsearch镜像内部为elasticsearch用户,uid和gid为1000,因此我们也将外部用户及组id修改为1000
# 将外部文件夹用户与组与镜像内部统一
chown 1000:1000 /PATH/TO/ES_DATA
chown 1000:1000 /PATH/TO/ES_DATA

2. 系统配置设置

基于docker启动elasticsearch,和在linux机器配置elasticsearch类似,同样需要做一些配置:

  • 虚拟内存配置
    elasticsearch使用mmapfs的方式来存储索引,通常系统默认的mmap数值较小,容易产生内存不足的错误,处理方法:
    • 先切换到root用户,执行vi /etc/sysctl.conf
    • 添加配置vm.max_map_count=655360
    • 执行sysctl -p使得配置生效
    • 重新启动elasticsearch配置即生效
  • 进程数配置
    elasticsearch通过线程池来执行不同操作,系统要保证elasticsearch用户至少可以创建4096个线程。
    • 切换root用户,执行vi /etc/security/limits.conf
    • 添加elasticsearch - nproc 4096
  • 打开文件句柄数设置,设定最大可以打开65536个文件句柄
    • 切换root用户,执行vi /etc/security/limits.conf
    • 添加elasticsearch - nofile 65336
    • 重启elasticsearch。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐