一.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.搜索