在 Lucidworks Fusion 4

问题描述

我正在使用外部 Zookeeper (3.5.6) 和 Solr (7.7.2) 运行 Fusion 4.2.4。我一直在运行一组本地服务器,并且正在尝试迁移到 AWS 实例。我本地 Zookeeper 的所有配置都已复制到 AWS 实例,因此它们在功能上应该是等效的。

我想关闭旧的(本地)Zookeeper 实例并只使用在 AWS 中运行的实例。我已经更改了 Solr 和 Fusion (fusion.properties) 的配置,以便它们只使用 AWS 实例。

我遇到的问题是与我的所有集合关联的 Fusion 的 solr 集群(系统->Solr 集群)仍然设置为旧的 Zookeepers :9983,:9983,:9983 所以如果我关闭所有旧实例的 Zookeeper 我通过 Fusion 的查询 API 进行的查询不再有效。当我尝试更改该集群的“连接字符串”时,它失败了,因为该集群当前正在被集合使用。我能够创建一个新集群,但我无法看到将新集群与我的任何集合相关联。在设置类似于生产的测试环境中,我使用 Fusion 的 Collections API 更改了特定集合的 searchClusterId 但是这样做之后,当我关闭所有“旧”Zookeeper 实例时,查询仍然失败。似乎这是要走的路,所以我很惊讶它似乎不起作用。

到目前为止,lucidworks支持还未能提供解决方案 - 我愿意接受建议。

解决方法

这就是我想出来的解决这个问题的方法。

我使用 AWS Fusion UI/API/等、本地 Solr、AWS Solr、本地 ZK 和 AWS ZK 创建了一个测试环境。

  1. Configure Fusion and Solr to only have the AWS ZK configured
  2. Configure the two ZKs to be an ensemble
  3. Create a new Solr Cluster in Fusion containing only the AWS ZK
  4. For each collection in Solr
      a. GET the json from <fusion_url>:8764/api/collections/<collection>
      b. Edit the json to change “searchClusterId” to the new cluster defined in Fusion
      c. PUT the new json to <fusion_url>:8764/api/collections/<collection>

完成所有这些之后,我能够在 Fusion Admin UI 中更改“默认”Solr 集群以确认没有集合正在使用它(我不确定是否有任何东西会使用“默认”集群,所以我认为不冒险是明智的)。 然后我能够停止本地 ZK,将 AWS ZK 置于独立模式,然后重新启动 Fusion。一切似乎都顺利开始。

我不确定这是最好的方法,但它解决了我所能确定的问题。