Solr运行状况检查>0个文档

j8yoct9x  于 2023-03-02  发布在  Solr
关注(0)|答案(2)|浏览(208)

为负载平衡器健康检查提供的solr of /admin/ping的默认配置与Amazon ELB负载平衡器健康检查集成良好。
但是,由于我们在调配新节点时使用的是主从复制,Solr启动,复制发生,但同时/admin/ping在索引从主节点复制到另一个节点并存在文档之前返回成功。
我们希望节点只有在完成第一次复制并拥有文档后才能被激活。我看不出有任何方法可以通过/admin/ping PingRequestHandler实现这一点--如果搜索成功,它总是返回成功,即使没有结果。
响应中的预期文本与ELB运行状况检查配置也不匹配/不匹配。
我们如何才能做到这一点?

wlzqhblo

wlzqhblo1#

为了详细说明问题的本质,PingRequestHandler将始终返回成功,除非......
1.它的查询将导致引发异常。
1.它配置为使用运行状况检查文件,但找不到该文件。
因此,我的建议是配置PingRequestHandler处理程序以使用healthcheck文件,然后在Solr系统上使用cron作业,该作业的任务是检查文档是否存在,并相应地创建(或删除)healthcheck文件,如果healthcheck文件不存在,PingRequestHandler将抛出HTTP 503,这对于ELB应该足够了。
我使用的粗略算法是...

  • 每分钟查询http://localhost:8983/solr/select?q=*:*
  • 如果numDocs > 0,则touch /path/to/solr-enabled
  • Else rm /path/to/solr-enabled(可选,取决于您的严格程度)

healthcheck文件可以在<admin>块中配置,您可以使用绝对路径,也可以使用相对于启动Solr的目录的文件名。

<admin>
  <defaultQuery>solr</defaultQuery>
  <pingQuery>q=*:*</pingQuery>
  <healthcheck type="file">/path/to/solr-enabled</healthcheck>
</admin>

让我知道它是如何工作的!我很想在Websolr上为读从实现类似的东西。

9gm1akwq

9gm1akwq2#

我遇到了一个有趣的解决方案:https://jobs.zalando.com/tech/blog/zookeeper-less-solr-architecture-aws/?gh_src=4n3gxh1
它基本上是一个servlet,您可以将其添加到Solr webapp中,然后检查所有核心以确保它们具有文档。
我正在考虑一个更复杂的解决方案,但还没有测试/取得很大进展:https://gist.github.com/er1c/e261939629d2a279a6d74231ce2969cf
我喜欢这种方法(理论上)是能够检查多核复制状态/成功。如果有人发现这种方法的实际实现,请告诉我!

相关问题