我有 3 个 Ubuntu vm 完全安装并运行 Solr 6.0.1 和外部 Zookeeper。Solr 在云模式下运行,并通过 Zookeeper 跨 3 个节点进行复制。数据索引在所有服务器上复制,单个查询在所有服务器上运行良好。当我在 Solr01 上执行查询时,我从 Solr 文档中了解到,所有节点都将被自动轮询,并且负载平衡是“内置”的。然而,当我检查 Solr02 和 Solr03 的日志时,似乎这些服务器实际上并没有被使用。我对负载平衡的假设是否正确,我如何确认它正在工作?
问问题
430 次
1 回答
2
由于您在所有三台服务器上复制相同的内容,因此 Solr01 没有理由联系任何其他服务器 - 它已经拥有回答您的查询所需的所有文档。
如果您使用 SolrJ(或其他支持 Zookeeper 的客户端),它将(如果您使用正确的客户端)对索引的所有副本的读取进行负载平衡。如果您使用的客户端不支持 Zookeeper,但支持多个服务器地址,请提供具有您感兴趣的集合的所有服务器(即SolrClient([http://solr01, http://solr02, http://solr03])
。如果您的客户端仅支持单个 URL,请使用常规负载均衡器(我即使您的客户端支持提供多个 URL,也建议您这样做,因为它允许您在不接触代码的情况下删除和添加节点)。有大量可用的负载均衡器可供选择,例如 haproxy、nginx、varnish、Apache 等。
于 2016-06-13T21:06:58.910 回答