设置“solr.allowPaths”时Apache Solr云备份对路径的问题

avkwfej4  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(392)

我正在尝试备份一个solr云集合。Solr和Zookeeper正在docker容器中运行。有3个solr(使用端口:8981,8982,8983)和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",
...

curl被发送到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>

我已经尝试了上面的方法,只使用 * 和path。还有,所有的special和和path。
我还在执行docker-compose up时设置了一个集群属性

curl \"http://solr1:8983/solr/admin/collections?action=CLUSTERPROP&name=location&val=/solr-backups/storage\";

如有任何帮助,我们将不胜感激。

aemubtdh

aemubtdh1#

错误消息显示:

/solr-backups/storage/test1 must be relative to SOLR_HOME, SOLR_DATA_HOME coreRootDirectory.

因此您需要有一个类似于**$SOLR_HOME/solr-backups/storage/$SOLR_DATA_HOME/solr-backups/storage/**的目录
对于solr v8.11,$SOLR_HOME为/var/solr/data

相关问题