Elasticsearch不会开始使用./bin/elasticsearch
.它引发了以下异常:
- ElasticsearchIllegalStateException[Failed to obtain node lock, is the following location writable?: [/home/user1/elasticsearch-1.4.4/data/elasticsearch]
Run Code Online (Sandbox Code Playgroud)
我检查了同一位置的权限,该位置拥有777权限,并由user1拥有.
ls -al /home/user1/elasticsearch-1.4.4/data/elasticsearch
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)drwxrwxrwx 3 user1 wheel 4096 Mar 8 13:24 . drwxrwxrwx 3 user1 wheel 4096 Mar 8 13:00 .. drwxrwxrwx 52 user1 wheel 4096 Mar 8 13:51 nodes
问题是什么?
尝试在没有root访问权限的情况下在linux上运行elasticsearch 1.4.4.
kui*_*ro5 53
我有一个与Elasticsearch相关的孤立java进程.杀死它解决了锁定问题.
ps aux | grep 'java'
kill -9 <PID>
Run Code Online (Sandbox Code Playgroud)
Dar*_*cks 28
我得到了同样的错误消息,但事情安装正常,权限都正确分配.
事实证明,我有一个'孤儿'的弹性搜索过程,并没有被正常的停止命令杀死.
我不得不手动杀死进程,然后重新启动elasticsearch再次工作.
Ima*_*deh 17
原因是另一个实例正在运行!
首先找到运行弹性的id.
ps aux | grep 'elastic'
Run Code Online (Sandbox Code Playgroud)
然后杀死使用kill -9 <PID_OF_RUNNING_ELASTIC>
.
删除node.lock文件有一些答案,但这没有帮助,因为正在运行的实例将再次使用它!
ole*_*sii 10
在我的情况下,我在ES dir文件夹上有错误的权限.设置正确的所有者解决了它
# change owner
chown -R elasticsearch:elasticsearch /data/elasticsearch/
# to validate
ls /data/elasticsearch/ -la
# prints
# drwxr-xr-x 2 elasticsearch elasticsearch 4096 Apr 30 14:54 CLUSTER_NAME
Run Code Online (Sandbox Code Playgroud)
与这里回复的许多其他人一样,这是由目录权限错误引起的(不属于elasticsearch用户)。在我们的例子中,这是由于卸载 Elasticsearch 并重新安装(通过 yum,使用官方存储库)引起的。
截至目前,存储库nodes
在卸载时不会删除该目录,但会删除elasticsearch
拥有该目录的用户/组。因此,当重新安装 Elasticsearch 时,elasticsearch
会创建一个新的、不同的用户/组,旧nodes
目录仍然存在,但由旧 UID/GID 拥有。这就会发生冲突并导致错误。
@oleksii 提到的递归 chown 是解决方案。
在我将 elasticsearch docker-image 从版本 5.6.x 升级到 6.3.y 后,由于上述错误,容器将不再启动
获取节点锁失败
在我的情况下,错误的根本原因是缺少文件权限
elasticsearch 使用的数据文件夹从主机系统挂载到容器中(在 docker-compose.yml 中声明):
volumes:
- /var/docker_folders/common/experimental-upgrade:/usr/share/elasticsearch/data
Run Code Online (Sandbox Code Playgroud)
由于我根本不明白的原因,elasticsearch 无法再访问该文件夹。在我为此文件夹和所有子文件夹设置非常宽松的文件权限后,容器确实再次启动。
我不想重现命令来在挂载的 docker-folder 上设置那些非常宽松的访问权限,因为这很可能是一个非常糟糕的做法和安全问题。我只是想分享一个事实,即它可能不是运行 elasticsearch 的第二个进程,而实际上只是缺少对已安装文件夹的访问权限。
也许有人可以详细说明为 docker-container 中的挂载文件夹设置的适当权限?
您已经运行了 ES。要证明该类型:
curl 'localhost:9200/_cat/indices?v'
如果你想在同一个机器上运行另一个实例,你可以将 elasticsearch.yml 中的 node.max_local_storage_nodes 设置为大于 1 的值。
归档时间: |
|
查看次数: |
39083 次 |
最近记录: |