SolrCloud搜索引擎集群搭建【伪分布式、完全分布式】

一.SolrCloud简介 

  Apache Solr能够设置结合了容错能力和高可用性的Solr服务器集群。这些功能称为SolrCloud,其提供分布式索引和搜索功能,具有以下特点:

    1.集群的集中配置

    2.自动负载均衡和查询故障转移

    3.集成ZooKeeper用于集群协调和配置

  SolrCloud是灵活的分布式搜索和索引框架,无需主节点即可分配节点,分片和副本。 同时,Solr可以使用ZooKeeper来管理这些设置,具体取决于配置文件和设计模式。 Solr可以将文档发送到任何服务器节点,ZooKeeper会自动加载。

二.SolrCloud伪分布式集群搭建

  SolrCloud旨在提供高度可用的容错环境,以便在多个服务器之间分配索引和查询请求。这是一个系统,其中数据被组织切分成多段或分片,可以托管在多台计算机上,副本提供冗余,以实现可伸缩性和容错能力; ZooKeeper服务器则可以帮助管理整体结构,以便进行索引和搜索请求可以正确路由。

  1.bin/solr脚本使您轻松入门SolrCloud,它引导您完成以云模式启动Solr节点并添加集合的过程。 要开始使用,只需执行以下操作:

  ./bin/solr -e cloud

  注意:root用户操作时需要加-force

  这将启动一个交互式会话,以引导您完成使用嵌入式ZooKeeper设置简单SolrCloud集群的步骤。 该脚本首先询问您要在本地集群中运行多少个Solr节点,默认值为2

  

  2.该脚本最多支持启动4个节点,但是建议在启动时使用默认值2。 这些节点将各自存在于单个计算机上,但是将使用不同的端口来模拟不同服务器上的操作。 接下来,脚本将提示您输入将每个Solr节点绑定到的端口

  

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

一直Enter直到创建完两个solr,若报如下错误:

ERROR: Failed to start Solr using command: "/usr/local/soft/solrcloud/solr-7.7.2/bin/solr" start -cloud -p 8983 
-s "/usr/local/soft/solrcloud/solr-7.7.2/example/cloud/node1/solr"
Exception : org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)

  4.则设置节点的最大用户进程数,执行如下命令查看当前节点的默认最大用户进程数:

  

  5.修改配置文件/etc/security/limits.conf,添加如下配置:

  

  6.重新加载配置文件,查看修改后的最大用户进程数:

  

  7.重新执行solr脚本创建solrcloud,如下表示创建成功:

   

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

  

  9.指定shard的个数,默认

  

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

  

  11.只能设置它提示的名称,默认为gettingstarted

  

  12.创建成功,前往登录

  

  13.查看集群节点及shard分片布局:

  

  14.执行查询

  

  15.Solr还提供了一种使用以下命令对集合执行基本诊断的方法healthcheck命令:

 1 [root@master bin]# ./solr healthcheck -c gettingstarted
 2 {
 3   "collection":"gettingstarted",
 4   "status":"healthy",
 5   "numDocs":0,
 6   "numShards":2,
 7   "shards":[
 8     {
 9       "shard":"shard1",
10       "status":"healthy",
11       "replicas":[
12         {
13           "name":"core_node3",
14           "url":"http://192.168.136.7:8983/solr/gettingstarted_shard1_replica_n1/",
15           "numDocs":0,
16           "status":"active",
17           "uptime":"0 days, 0 hours, 42 minutes, 45 seconds",
18           "memory":"41.9 MB (%8.5) of 490.7 MB"},
19         {
20           "name":"core_node5",
21           "url":"http://192.168.136.7:7574/solr/gettingstarted_shard1_replica_n2/",
22           "numDocs":0,
23           "status":"active",
24           "uptime":"0 days, 0 hours, 42 minutes, 33 seconds",
25           "memory":"69.9 MB (%14.2) of 490.7 MB",
26           "leader":true}]},
27     {
28       "shard":"shard2",
29       "status":"healthy",
30       "replicas":[
31         {
32           "name":"core_node7",
33           "url":"http://192.168.136.7:8983/solr/gettingstarted_shard2_replica_n4/",
34           "numDocs":0,
35           "status":"active",
36           "uptime":"0 days, 0 hours, 42 minutes, 45 seconds",
37           "memory":"42.5 MB (%8.7) of 490.7 MB"},
38         {
39           "name":"core_node8",
40           "url":"http://192.168.136.7:7574/solr/gettingstarted_shard2_replica_n6/",
41           "numDocs":0,
42           "status":"active",
43           "uptime":"0 days, 0 hours, 42 minutes, 33 seconds",
44           "memory":"70.4 MB (%14.4) of 490.7 MB",
45           "leader":true
46         }]
47     }]
48 }

  16.healthcheck命令收集有关集合中每个副本的基本信息,例如文档数,当前状态(活动,关闭等)和地址(副本在群集中的位置)。要在SolrCloud模式下停止Solr,可以使用bin / solr脚本并发出stop命令,如下所示:

  $ bin/solr stop -all

三.安装Zookeeper集群

  参考我的博客:https://www.cnblogs.com/yszd/p/10039249.html

四.安装Tomcat集群

  1.上传tomcat8.5到三台机器的对应目录上

    

  2.分别配置tomcat中conf目录下的配置文件server.xml

    

    第一台机器上的tomcat:

 1 <!-- Note:  A "Server" is not itself a "Container", so you may not
 2      define subcomponents such as "Valves" at this level.
 3      Documentation at /docs/config/server.html
 4  -->
 22行 <Server port="8105" shutdown="SHUTDOWN">
 6     <!-- A "Connector" represents an endpoint by which requests are received
 7          and responses are returned. Documentation at :
 8          Java HTTP Connector: /docs/config/http.html
 9          Java AJP  Connector: /docs/config/ajp.html
10          APR (HTTP/AJP) Connector: /docs/apr.html
11          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
12     -->
69行     <Connector port="8180" protocol="HTTP/1.1"
14                connectionTimeout="20000"
15                redirectPort="8443" />
16 
17     <!-- Define an AJP 1.3 Connector on port 8009 -->
116行     <Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />

     第二台机器上的tomcat:  

 1 <!-- Note:  A "Server" is not itself a "Container", so you may not
 2      define subcomponents such as "Valves" at this level.
 3      Documentation at /docs/config/server.html
 4  -->
 22行 <Server port="8205" shutdown="SHUTDOWN">
 6     <!-- A "Connector" represents an endpoint by which requests are received
 7          and responses are returned. Documentation at :
 8          Java HTTP Connector: /docs/config/http.html
 9          Java AJP  Connector: /docs/config/ajp.html
10          APR (HTTP/AJP) Connector: /docs/apr.html
11          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
12     -->
69行     <Connector port="8280" protocol="HTTP/1.1"
14                connectionTimeout="20000"
15                redirectPort="8443" />
16 
17     <!-- Define an AJP 1.3 Connector on port 8009 -->
116行     <Connector port="8209" protocol="AJP/1.3" redirectPort="8443" />

    第三台机器上的tomcat:

 1 <!-- Note:  A "Server" is not itself a "Container", so you may not
 2      define subcomponents such as "Valves" at this level.
 3      Documentation at /docs/config/server.html
 4  -->
 22行 <Server port="8305" shutdown="SHUTDOWN">
 6     <!-- A "Connector" represents an endpoint by which requests are received
 7          and responses are returned. Documentation at :
 8          Java HTTP Connector: /docs/config/http.html
 9          Java AJP  Connector: /docs/config/ajp.html
10          APR (HTTP/AJP) Connector: /docs/apr.html
11          Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
12     -->
69行     <Connector port="8380" protocol="HTTP/1.1"
14                connectionTimeout="20000"
15                redirectPort="8443" />
16 
17     <!-- Define an AJP 1.3 Connector on port 8009 -->
116行     <Connector port="8309" protocol="AJP/1.3" redirectPort="8443" />

  3.配置tomcat节点关联zookeeper集群

    配置三台机器上的tomcat/bin目录下的catalina.sh文件,配置如下:

    

五.配置SolrCloud完全分布式集群

  1. 上传solr7.7.2到三台机器上的目录/usr/local/soft/solrcloud/下:

    

  2. 配置三台机器上的solr-7.7.2/server/solr/solr.xml文件

    

  3. 指定各个节点tomcat启动solr的路径,修改tomcat/conf/web.xml文件

     

六.访问solrcloud集群

  1. 启动tomcat集群

    

    依次在三台机器上执行命令:./startup.sh 启动tomcat

  2.访问solrcloud集群

    打开浏览器,输入:http://master:8180/solr/index.html#/~cloud

       

    表示搭建成功!

  3. 配置文件简介

    

七. 操作SolrCloud

  1. 创建collection

    执行命令:

    http://bg-demo-01.haiyi.com:8180/solr/admin/collections?action=CREATE&name=fxk_collection&numShards=2&replicationFactor=2&collection.configName=fxk&maxShardsPerNode=2

  2. 删除collection

    执行命令:

    http://bg-demo-01.haiyi.com:8180/solr/admin/collections?action=DELETE&name=fxk

  3. 创建索引

    

  4.搜索

    

原文地址:https://www.cnblogs.com/yszd/p/9984277.html