如何使用HAProxy检查Solr健康状况

时间:2012-04-10 14:09:26

标签: java solr load-balancing high-availability haproxy

我有4个Solr从站用于查询,还有一个HAproxy用于对连接进行负载均衡。但是,有时solr服务器停止回答请求(这是我应该解决的另一个问题,但是另一个问题的主题......),但是java进程没有关闭,所以HAProxy仍然认为服务器已启动并且正在运行,但是solr slave不响应任何请求。我尝试使用此配置进行健康检查solr从站,但没有成功,因为HAProxy将所有服务器标记为关闭:

listen  solr 0.0.0.0:10004
    mode http
    option httpchk GET /content/local/admin/ping HTTP/1.1
    balance roundrobin
    server  solr-27 192.168.1.27:8088 check inter 2000 rise 2 fall 3
    server  solr-36 192.168.1.36:8088 check inter 2000 rise 2 fall 3
    server  solr-37 192.168.1.37:8088 check inter 2000 rise 2 fall 3
    server  solr-38 192.168.1.38:8088 check inter 2000 rise 2 fall 3

我也尝试用HEAD取代GET,但没有成功。

有什么想法吗?

由于

3 个答案:

答案 0 :(得分:2)

在我的公司,基础设施人员使用查询而不是ping 考虑到你有一个名为id的uniqueField(你最有可能),可以这样做:

/solr/select/?q=id:1234

只要您有一个名为id且字段正确的字段,索引中不存在该ID就没有关系。即使SOLR没有返回任何文件,它仍然会返回200,并且该查询速度很快。

答案 1 :(得分:0)

我有同样的问题,我的健康检查总是返回400(错误请求)。问题是HTTP 1.1 需要 Host标头,而我没有提供。一旦我添加了主机标头(如下所示),我的健康检查就开始工作了。

option httpchk GET /content/local/admin/ping\ HTTP/1.1\r\nHost:\ solr

答案 2 :(得分:-1)

尝试

option httpchk GET /content/local/admin/ping HTTP/1.0

HTTP / 1.1是麻烦制造者。

相关问题