Elasticsearch path.repo阻止服务启动

时间:2017-02-05 15:02:55

标签: elasticsearch debian

我想在此处存储我的快照:

/root/backups/elastic

所以我在/etc/elasticsearch/elasticsearch.yml的末尾添加了这一行:

path.repo: ["/root/backups/elastic"]

当我尝试启动elasticsearch服务时,错误表示服务无法启动。 在评论该行之后,我可以再次启动该服务 在日志文件中出现错误:

java.lang.IllegalStateException: Unable to access 'path.repo' (/root/backups/elastic)
        at org.elasticsearch.bootstrap.Security.addPath(Security.java:316)
        at org.elasticsearch.bootstrap.Security.addFilePermissions(Security.java:262)
        at org.elasticsearch.bootstrap.Security.createPermissions(Security.java:212)
        at org.elasticsearch.bootstrap.Security.configure(Security.java:118)
        at org.elasticsearch.bootstrap.Bootstrap.setupSecurity(Bootstrap.java:212)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:183)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:286)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:45)
Caused by: java.nio.file.AccessDeniedException: /root/backups
        at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
        at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
        at sun.nio.fs.UnixFileSystemProvider.checkAccess(UnixFileSystemProvider.java:308)
        at java.nio.file.Files.createDirectories(Files.java:702)
        at org.elasticsearch.bootstrap.Security.ensureDirectoryExists(Security.java:337)
        at org.elasticsearch.bootstrap.Security.addPath(Security.java:314)

我使用这些命令来解决问题:

sudo chmod 777 /root/backups/
sudo chown elasticsearch /root/backups/
sudo chown elasticsearch /root/backups/elastic/

怎么了?

1 个答案:

答案 0 :(得分:1)

嗯,首先使用根目录对于备份是一个非常糟糕的主意,并且在获得所有权限的情况下,这是一个安全噩梦。 AccessDeniedException可能是弹性搜索无法访问root目录。

$ ls -l /root
ls: cannot open directory '/root': Permission denied
$ ls -l /
drwx------  10 root root       4096 Jan 25 22:41 root

如果你真的只想测试chmod o+rx /root,那么异常就会消失。我强烈建议使用共享SAN / NAS挂载点或AWS S3文件存储进行备份。

其次,我假设您使用共享文件系统方法。

您可能需要添加一些信息来推断问题。您的群集中有多少个节点?你正在运行什么样的elasticsearch版本?

设置path.repo必须位于群集中所有节点的elasticsearch.yml中。即使节点启动,备份也可能会失败,从而恢复。