SolrCloud 入门

SolrCloud 设计目标是提供一个高可用,容错的环境,将索引过的内容和查询请求分发到多台服务器上。

这是一个数据被组织为多份或多片,存储在多个服务器上,复制副本来以提供扩展性和容错的系统;使用 ZooKeeper 服务器管理所有属性,以使索引和查询请求可被正确路由。

本小节解释了 SolrCloud 及其内部工作细节,但是在你深入之前,最好是搞清楚你要达成什么目标。本页提供了一个简单的启动 Solr cloud 模式的操作说明,使你能对solr 分片在索引和查询时如何互相协作有个感性认识。为此,我们将用一个简单的例子,在单个服务器上配置 SolrCloud,显然这不是一个真正的,有多台服务器或虚拟机的生产环境。

SolrCloud 示例

交互式启动

bin/solr 脚本使 SolrCloud 入门很简单,它引导你 cloud 模式启动 solr 并添加 collection,输入下述命令开始

$ bin/solr -e cloud

这会启动一个交互式的会话,引导你创建一个使用内置的 ZooKeeper 的、简单的 SolrCloud 集群。脚本询问你想要在本地集群创建几个节点(node),默认是 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 个。这些节点在一台机器上,使用不同的端口来模拟在不同机器上。接下来,脚本提示你每个节点绑定的端口

Please enter the port for node1 [8983]

为每个节点选择可用的端口,默认第一个节点是 8983,第二个节点是 7574。脚本将顺序启动各节点,并显示启动服务器的命令,如下

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

第一个节点将同时启动一个内置的 ZooKeeper,绑定 9983 端口,第一个节点的 solr home 目录为 example/cloud/node1/solr,由 -s 选项指定

在集群的所有节点都启动后,脚本提示你输入要创建的 collection 的名字

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

默认的名字是 "gettingstarted",你也可以选择一个更恰当的名字

然后,脚本会提示你这个 collection 跨越的分片的数量。

然后,脚本会提示你每个分片的副本数量。

最后,脚本会提示你的 collection 的配置目录的名字,你可以选择 basic_configsdata_driven_schema_configs, 或 sample_techproducts_configs。配置目录是从 server/solr/configsets/ 拉取的,所以你可以事先审核这些配置。如果你要为你的文档定义 schema,且需要一些灵活性,默认配置 data_driven_schema_configs 是很有用的。

此刻,你在本地的 Solr 集群里新建了一个 collection。为了验证这一点,可以执行 status 命令

$ bin/solr status

如果在这个过程中,碰到了任何的错误,在 example/cloud/node1/logsexample/cloud/node2/logs 查看 solr 的日志文件。

可以在 Solr 管理界面的 cloud 面板查看你的 collection 是如何发布到集群的:http://localhost:8983/solr/#/~cloud,Solr 也提供一个 healthcheck 命令来为 collection 执行简单的诊断

$ bin/solr healthcheck -c gettingstarted

healthcheck 命令收集 collection 里每个副本的基本信息,例如文档数量,当前状态(active,down,等),地址(副本在集群的位置)

现在可以用 post 工具将文档添加到 SolrCloud

要停止 solr,使用 stop 命令,如下

$ bin/solr stop -all

-noprompt 启动选项

以默认配置启动 SolrCloud,而不是交互式会话模式

$ bin/solr -e cloud -noprompt

重启节点

使用 bin/solr 脚本重启 SolrCloud 节点,例如,重启端口为 8989 的节点 1

$ 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

注意,重启节点 2 时,你需要指定 ZooKeeper 的地址(-z localhost:9983),这样节点 2 才能加入到集群

向集群添加节点

向一个已存在的集群添加节点,有一点高级。。。和更多一点对 solr 的理解。当你使用 startup 脚本启动了一个 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 home 目录,你需要复制 solr.xmlsolr_home 目录,或在 ZooKeeper /solr.xml

示例如下

$ 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 节点,其 home 目录为 example/cloud/node3/solr。新的节点将日志文件写入到 example/cloud/node3/logs

results matching ""

    No results matching ""