2017-02-05 134 views
0

我想在這裏保存我的快照:Elasticsearch path.repo防止服務正在啓動

/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

你確定它是你添加的行的餘弦?任何其他*錯誤*跟蹤? – Kulasangar

+0

@Darth_Vader是的!在發表評論之後,我可以再次啓動服務 –

回答

1

那麼,首先使用根目錄是一個非常糟糕的想法備份和給予所有權限,這是一個安全噩夢。 AccessDeniedException很有可能是root目錄不適用於elasticsearch。

$ 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全部節點集羣中。即使節點啓動,備份可能會失敗,從而導致還原。