我想在此处存储我的快照:
/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/
怎么了?
答案 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
中。即使节点启动,备份也可能会失败,从而恢复。