我正在尝试备份solr云集合。Solr和Zookeeper正在码头集装箱中运行。有3个solr(使用端口:8988189883(和3个ZKs容器正在运行。我正在将docker卷传递给solr容器
volumes:
- solr_backups:/solr-backups/storage
在Dockerfile中,文件夹被构建并被赋予chmod 777
。因此,所有solr容器都将文件夹视为网络共享(我认为(。
执行
$ curl "localhost:8981/solr/admin/collections?action=BACKUP&name=test1&collection=myColl&location=/solr-backups/storage"
返回以下
...
"failure":{
"172.19.0.22:8983_solr":"org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException:
Error from server at http://172.19.0.22:8983/solr:
Failed to backup core=myColl_shard1_replica_n1 because org.apache.solr.common.SolrException:
Path /solr-backups/storage/test1 must be relative to SOLR_HOME, SOLR_DATA_HOME coreRootDirectory.
Set system property 'solr.allowPaths' to add other allowed paths."},
"Operation backup caused exception:":"org.apache.solr.common.SolrException:org.apache.solr.common.SolrException:
Could not backup all shards",
"exception":{
"msg":"Could not backup all shards",
"rspCode":500},
"error":{
"metadata":[
"error-class","org.apache.solr.common.SolrException",
"root-error-class","org.apache.solr.common.SolrException"],
"msg":"Could not backup all shards",
...
卷曲被发送到8981(可以发送到3中的任何一个(。错误从8983发回报告。myColl
在8981上没有碎片。正在创建备份文件夹test1
,所有3个正在运行的solr容器都可以访问该文件夹。
在其中一个容器中执行shell。
$ ls -al /solr-backups/storage/
total 16
drwxrwxrwx 4 root root 4096 Nov 30 16:49 .
drwxr-xr-x 3 root root 4096 Nov 30 16:22 ..
drwxr-xr-x 2 solr root 4096 Nov 30 16:49 test1
drwxr-xr-x 2 solr root 4096 Nov 30 16:25 test3
显示文件夹在那里并且由solr所有。
从solr.xml
<str name="allowPaths">${solr.allowPaths:*,_ALL_,/solr-backups/storage/}</str>
我已经用just*和just路径尝试了上面的内容。此外,所有的特色菜和路径。
当预成型docker组成时,我还设置了一个集群属性
curl "http://solr1:8983/solr/admin/collections?action=CLUSTERPROP&name=location&val=/solr-backups/storage";
如有任何协助,我们将不胜感激。
错误消息显示:
/solr-backups/storage/test1 must be relative to SOLR_HOME, SOLR_DATA_HOME coreRootDirectory.
因此您需要有一个目录,如$SOLR_HOME/SOLR backups/storage/或$SOLR_DATA_HOME/SOLR备份/存储/
对于solr v8.11$solr_HOME是/var/solr/data