Common Host 指向向 SolrCloud 发送请求

Common Host point to Send requests to SolrCloud

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

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

我得到了结果。如果我将 machineIP 更改为任何一个 3 机器 IP,它就会工作。

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

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

提前致谢, 酒

一种方法是使用像 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 has a good, clearly written intro 以 Nginx 作为代理和上游模块。

否则,Nginx docs are the place to go