在 Lucidworks Fusion 4 中更改 "Solr Cluster"

Change "Solr Cluster" in Lucidworks Fusion 4

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

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

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

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

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

我使用 AWS Fusion UI/API/etc、本地 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 集群,以确认没有任何集合在使用它(我不确定是否有任何东西会使用'default' 集群,所以我认为最好不要冒险)。 然后我能够停止本地 ZK,将 AWS ZK 置于独立模式,然后重新启动 Fusion。一切似乎都顺利开始了。

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