SolrCloud入门

2018-12-25 14:35 更新

SolrCloud旨在提供高度可用的容错环境,用于在多个服务器之间分发索引内容和查询请求。

这是一个将数据组织成可以托管在多台机器上的多个碎片的系统,其中副本为可扩展性和容错性提供了冗余,还有一个ZooKeeper服务器,用于帮助管理整个结构,以便索引和搜索请求可以正确地路由。

本节详细介绍了SolrCloud及其内部工作原理,但是在深入研究之前,最好先了解一下您要完成的任务。

这个页面提供了一个在SolrCloud模式下启动Solr的简单教程,所以您可以开始了解在索引和提供查询期间碎片如何相互影响。为此,我们将使用在单台机器上配置SolrCloud的简单示例,这显然不是真正的生产环境,其中包括几台服务器或虚拟机。在实际的生产环境中,您还将使用真正的机器名称而不是我们在此使用的“localhost”。

在本节中,您将学习如何使用启动脚本和特定的配置集来启动SolrCloud集群。

本教程假定您已经熟悉了使用 Solr 的基本知识。如果您需要进行复习,请参阅入门部分以了解Solr概念。如果您将文档作为该练习的一部分进行加载,则应该从这些SolrCloud教程的全新Solr安装开始。

SolrCloud示例

交互式启动

该bin/solr脚本使您可以轻松开始使用SolrCloud,因为它引导您完成在云模式下启动Solr节点并添加集合的过程。要开始,只需:

bin/solr -e cloud

这将启动一个交互式会话,引导您完成设置嵌入式ZooKeeper的简单SolrCloud集群的步骤。

该脚本首先询问您要在本地群集中运行多少个Solr节点,默认值为2。

Welcome to the SolrCloud example!

This interactive session will help you launch a SolrCloud cluster on your local workstation.
To begin, how many Solr nodes would you like to run in your local cluster? (specify 1-4 nodes) [2]

该脚本支持最多启动4个节点,但我们建议在启动时使用默认值2。这些节点将分别存在于一台机器上,但将使用不同的端口来模拟不同服务器上的操作。

接下来,该脚本会提示您将端口绑定到每个Solr节点,例如:

 Please enter the port for node1 [8983]

为每个节点选择任何可用的端口;第一个节点的默认值是第二个节点的8983和7574。该脚本将按顺序启动每个节点,并向您显示它用于启动服务器的命令,例如:

solr start -cloud -s example/cloud/node1/solr -p 8983

第一个节点也将启动一个绑定到端口9983的嵌入式ZooKeeper服务器。第一个节点的Solr主目录在example/cloud/node1/solr中,如-s选项所示。

启动集群中的所有节点后,脚本会提示您输入要创建的集合的名称:

 Please provide a name for your new collection: [gettingstarted]

建议的默认值是“gettingstarted”,但您可能希望选择一个更适合您的特定搜索应用程序的名称。

接下来,脚本会提示您分配集合的碎片数量。分片进行更详细的覆盖以后,所以如果您不确定,我们建议使用2默认,以便您可以看到集合是如何在 SolrCloud 群集中的多个节点之间分布的。

接下来,脚本会提示您为每个分片创建副本的数量。 本指南稍后将详细介绍复制,所以如果您不确定,请使用默认值2,以便您可以看到如何在SolrCloud中处理复制。

最后,脚本会提示您输入您的集合的配置目录名称。您可以选择_default或sample_techproducts_configs。配置目录是从server/solr/configsets/如果你愿意,您可以预先审查。_default 配置在您仍在为文档设计架构时非常有用,需要您尝试使用Solr,因为它具有无架构功能的一些flexiblity配置是非常有用的。但是,创建集合之后,可以禁用无模式功能,以便锁定模式(以便在执行此操作后编入索引的文档不会改变模式)或自行配置模式。这可以如下完成(假设你的集合名称是 mycollection):

curl http://host:8983/solr/mycollection/config -d '{"set-user-property": {"update.autoCreateFields":"false"}}'

此时,您应该在本地SolrCloud群集中创建一个新的集合。要验证这一点,您可以运行“status”命令:

bin/solr status

如果在此过程中遇到任何错误,请检查Solr的日志文件example/cloud/node1/logs和example/cloud/node2/logs。

您可以通过访问Solr管理界面中的云面板来查看您的集群在集群中的部署方式:http://localhost:8983/solr/#/〜cloud。Solr还提供了一种使用healthcheck命令为集合执行基本诊断的方法:

bin/solr healthcheck -c gettingstarted

healthcheck命令收集有关集合中每个副本的基本信息,例如文档数量,当前状态(活动,关闭等)和地址(副本在集群中的位置)。

现在可以使用Post工具将文档添加到SolrCloud 。

要在SolrCloud模式下停止Solr,您可以使用bin/solr脚本并发出stop命令,如下所示:

bin/solr stop -all

从-noprompt开始

您也可以使用以下命令,以所有默认值(而不是交互式会话)开始SolrCloud:

bin/solr -e cloud -noprompt

重新启动节点

您可以使用bin/solr脚本重新启动您的SolrCloud节点。例如,要重新启动在端口8983(使用嵌入式ZooKeeper服务器)上运行的node1,您应该:

bin/solr restart -c -p 8983 -s example/cloud/node1/solr

要重新启动端口7574上运行的节点2,您可以执行以下操作:

bin/solr restart -c -p 7574 -z localhost:9983 -s example/cloud/node2/solr

请注意,启动node2时需要指定ZooKeeper地址(-z localhost:9983),以便可以将节点1连接到群集。

将节点添加到群集

将节点添加到现有集群有点高级,并且对Solr有了更多的了解。一旦使用启动脚本启动SolrCloud集群,您可以通过以下方式向其添加新节点:

mkdir <solr.home for new solr node>
cp <existing solr.xml path> <new solr.home>
bin/solr start -cloud -s solr.home/solr -p <port num> -z <zk hosts string>

请注意,上述要求您创建一个Solr主目录。您需要将 solr xml 复制到 solr_home ,或者保存在ZooKeeper中的/solr.xml。

将节点添加到以“bin / solr -e cloud”开头的示例的示例(使用目录结构):

mkdir -p example/cloud/node3/solr
cp server/solr/solr.xml example/cloud/node3/solr
bin/solr start -cloud -s example/cloud/node3/solr -p 8987 -z localhost:9983

前面的命令将在端口8987上启动另一个 solr 节点,并将 solr 主页设置为 example/cloud/node3/solr。新节点会将其日志文件写入 example/cloud/node3/logs。

一旦您对 SolrCloud 示例的工作方式感到满意,我们建议使用将 Solr 带到生产中的过程,以便在生产中设置 SolrCloud 节点。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号