1

我用 3 台不同的机器设置了 solrCloud。3shards用&创建了集合,2replicas并在其中索引了一些文档。如果我使用如下 URL 查询

http:machineIP:8983/solr/collection1/select?q=*:*

我得到结果。如果我将 machineIP 更改为任何一台 3 机器 IP,它将起作用。

我的问题是,如果机器在请求 solr(比如机器 1)时停机,如何将查询请求重定向到其他可用的 solr 机器(机器 2 或 3)。

我正在寻找一个共同点(或 URL)来向 solrcloud 发送请求。如果机器(或节点)发生故障,它将负责将请求传递给其他可用机器。

在此先感谢,维诺德

4

1 回答 1

4

一种方法是使用像 Nginx 这样的代理服务器。

Nginx 允许您创建一个服务器位置池以将流量转发到。

配置可能如下所示:

upstream backend_hosts {
    server machineIP1:8983;
    server machineIP2:8983;
    server machineIP3:8983;
}

server {
    listen 80;
    server_name example.com;

    location /solr/ {
        proxy_pass http://backend_hosts;
    }
}

使用此解决方案,请求如下:

http://example.com/solr/collection1/select?q=

将被转发到upstream块中定义的池中的服务器之一。如果与其中一个服务器通信发生错误,它将被转发到列表中的下一个。默认情况下,流量以循环方式分布。

如果您将另一台机器添加到 SolrCloud,您只需将其添加到池中即可。

Digital Ocean对 Nginx 作为代理和上游模块有很好的、清晰的介绍。

否则,Nginx 文档就是去的地方

于 2016-08-23T21:36:41.583 回答