SolrCloud 入门
SolrCloud 旨在为您的索引内容和查询请求提供高可用性、容错环境,以便在多台服务器上进行分布。
这是一个系统,其中数据被组织成多个部分或分片,这些部分或分片可以托管在多台机器上,副本为可扩展性和容错性提供冗余,ZooKeeper 服务器帮助管理整体结构,以便可以正确路由索引和搜索请求。
本节详细介绍了 SolrCloud 及其内部工作原理,但在深入了解之前,最好了解您要完成的任务。
此页面提供了一个简单的教程,用于在 SolrCloud 模式下启动 Solr,以便您可以开始了解分片在索引期间和处理查询时如何相互交互。为此,我们将使用在单台机器上配置 SolrCloud 的简单示例,这显然不是真正的生产环境,其中将包括多台服务器或虚拟机。在真正的生产环境中,您还将使用真实机器名称,而不是我们在此处使用的“localhost”。
在本节中,您将学习如何使用启动脚本和特定配置集启动 SolrCloud 集群。
本教程假定您已经熟悉使用 Solr 的基础知识。如果您需要复习,请参阅Solr 教程以了解 Solr 概念。如果您在该练习中加载了文档,则应为这些 SolrCloud 教程重新开始使用新的 Solr 安装。 |
出于安全原因,Solr 节点默认只接受来自 |
SolrCloud 示例
交互式启动
bin/solr
脚本使您可以轻松开始使用 SolrCloud,因为它会指导您完成在 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。该脚本将按顺序启动每个节点,并向您显示用于启动服务器的命令,例如
$ bin/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”,但您可能希望选择更适合您特定搜索应用程序的名称。
接下来,该脚本会提示您输入将集合分布到的分片数。SolrCloud 分片和索引将在后面进行更详细的介绍,因此如果您不确定,我们建议您使用默认值 2,以便您可以了解如何在 SolrCloud 集群中的多个节点上分布集合。
接下来,该脚本会提示您输入要为每个分片创建的副本数。同样,这将在本指南的后面进行更详细的介绍,因此如果您不确定,请使用默认值 2,以便您可以了解如何在 SolrCloud 中处理复制。
最后,脚本会提示您输入集合的配置目录的名称。您可以选择_default
或sample_techproducts_configs
。配置目录从server/solr/configsets/
中提取,因此如果您愿意,可以事先查看它们。_default
配置在您仍为文档设计架构并且在使用 Solr 时需要一些灵活性时非常有用,因为它具有无架构功能。但是,在创建集合后,可以禁用无架构功能以锁定架构(以便在执行此操作后编入索引的文档不会更改架构)或自行配置架构。可以按照以下方式进行此操作(假设您的集合名称为mycollection
)
V1 API
$ curl http://host:8983/solr/mycollection/config -d '{"set-user-property": {"update.autoCreateFields":"false"}}'
V2 API SolrCloud
$ curl http://host:8983/api/collections/mycollection/config -d '{"set-user-property": {"update.autoCreateFields":"false"}}'
此时,您应该在本地 SolrCloud 集群中创建了一个新集合。要验证这一点,您可以运行状态命令
$ bin/solr status
如果您在此过程中遇到任何错误,请检查example/cloud/node1/logs
和example/cloud/node2/logs
中的 Solr 日志文件。
您可以通过访问 Solr 管理员 UI 中的云面板来查看集合如何在集群中部署:http://localhost:8983/solr/#/~cloud。Solr 还提供了一种使用 healthcheck 命令对集合执行基本诊断的方法
$ bin/solr healthcheck -c gettingstarted
healthcheck 命令收集有关集合中每个副本的基本信息,例如文档数、当前状态(活动、关闭等)和地址(副本在集群中的位置)。
现在可以使用Post Tool将文档添加到 SolrCloud。
要在 SolrCloud 模式下停止 Solr,您需要使用bin/solr
脚本并发出stop
命令,如下所示
$ bin/solr stop -all
重启节点
您可以使用bin/solr
脚本重启 SolrCloud 节点。例如,要重启在端口 8983 上运行的 node1(带有嵌入式 ZooKeeper 服务器),您需要执行
$ bin/solr restart -c -p 8983 -s example/cloud/node1/solr
要重启在端口 7574 上运行的 node2,您可以执行
$ bin/solr restart -c -p 7574 -z localhost:9983 -s example/cloud/node2/solr
请注意,在启动 node2 时,您需要指定 ZooKeeper 地址(-z localhost:9983
),以便它可以与 node1 加入集群。
向集群添加节点
向现有集群添加节点有点高级,需要对 Solr 有更多了解。使用启动脚本启动 SolrCloud 集群后,可以通过以下方式向其中添加新节点
$ mkdir <solr.home for new Solr node>
$ bin/solr start -cloud -s solr.home/solr -p <port num> -z <zk hosts string>
请注意,上述操作要求您创建 Solr 主目录。
示例(带目录结构),向以“bin/solr -e cloud”启动的示例添加节点
$ mkdir -p 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 节点。