我有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,但没有成功。
有什么想法吗?
由于
答案 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是麻烦制造者。