记录Docker安装ES出现的问题以及解决办法
-
ES官方镜像站 https://www.docker.elastic.co/
里面包含了所有版本的镜像文件。但是要注意的是依赖的JDK 版本有要求,5 以上的要求JDK为1.8以上版本才行。
-
镜像拉取,运行
docker run -d -p 8200:9200 -p 8300:9300 \ -e ES_JAVA_OPTS="-Xms128m -Xmx256m " \ -e "discovery.type=single-node" \ -v /opt/data/es/data:/usr/share/elasticsearch/data \ --name es docker.elastic.co/elasticsearch/elasticsearch:7.0.1
-
java.nio.file.AccessDeniedException:/usr/share/elasticsearch/data/nodes
原因是宿主机的文件目录权限不足 chmod 777 /opt/data/es/data
-
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
修改config目录下的jvm.options里面的参数, 软件包启动的时候默认启用 -XX:+AssumeMP导致 启动镜像的时候 加上 -XX:-AssumeMP
-
Java HotSpot™ 64-Bit Server VM warning: INFO: os::commit_memory(0x0000000085330000, 2060255232, 0) failed; error='Cannot allocate memory’
es默认2g(5.0以上版本),而在创建docker时默认内存是1g, 导致启动失败,这时就需要修改加参数修改容器内存: 所加参数为 :-e ES_JAVA_OPTS="-Xms512m -Xmx512m"
-
java.lang.IllegalStateException: The index [[.watcher-history-3-2019.06.14/YSn3ziUURO-8w-osDYcyXQ]] was created with version [5.5.3] but the minimum compatible version is [6.0.0-beta1]. It should be re-indexed in Elasticsearch 6.x before upgrading to 7.0.1.
这个异常刚开始我拉取的版本是5.5.3 运行没有问题, 我有拉取新版本运行,结果报错,显示版本升级之前,要从新创建索引。 这是因为,版本升级,挂载的data文件内容没有升级, 所以把/opt/data/es/data 目录下的文件删除即可
-
Root身份运行(压缩包解压运行) 异常
sh ./elasticsearch
如果以root身份运行将会出现以下问题,这个错误,是因为使用root用户启动elasticsearch,elasticsearch是不允许使用root用户启动的
解决办法:-
切换非root 用户启动ES
groupadd es //创建新的分组es useradd es -g es -p 12345 //新建用户es 密码12345 cat /etc/group文件包含所有组 cat /etc/shadow和cat /etc/passwd系统存在的所有用户名 usermod 或者修改 /etc/passwd文件即可修改当前用户所属组的方法 w 可以查看当前活跃的用户列表
-
创建elsearch用户组及elsearch用户
groupadd elsearch useradd es -g elsearch -p 12345
-
更改elasticsearch文件夹及内部文件的所属用户及组为es:elsearch
cd /es chown -R es:elsearch elasticsearch
-
切换到es用户再启动
su es sh es/elasticsearch-7.1.1/bin/elasticsearch
-