SolrCloud是什么
参考 solrCloud官网介绍 http://lucene.apache.org/solr/guide/6_6/solrcloud.html
Apache Solr 可以设置solr集群,并且有容错性和高可用性能力,这被称为SolrCloud,它的功能是提供分布式索引和搜索,支持以下功能:
-
集中式的中央配置
-
自动负载平衡和故障切换
-
ZooKeeper集成,用于集群协调和配置。
SolrCloud是灵活的分布式搜索和索引,没有主节点分配节点,分片和副本。相反,Solr使用ZooKeeper来管理这些位置,具体取决于配置文件和模式。查询和更新可以发送到任何服务器。Solr将使用ZooKeeper数据库中的信息来确定哪些服务器需要处理请求。
SolrCloud结构图
因为集中配置、协调,所以需要zookeeper。
zookeeper的集群安装
安装3个zk服务器做集群 localhost:2181,localhost:2182,localhost:2183。
安装zk,参考
安装好后启动3个zk
solrCloud安装
下载solr
下载后解压,命名为solr-1,进入 \solr-1\bin 目录
需要做3个操作
1.配置zookeeper服务
修改solr.in.cmd
REM set ZK_HOST= 替换为(这里是zookeeper服务地址:端口,中间用逗号隔开)
set ZK_HOST=localhost:2181,localhost:2182,localhost:2183
REM set ZK_CLIENT_TIMEOUT=15000替换为
set ZK_CLIENT_TIMEOUT=15000
2.配置solr端口
修改solr.cmd,编辑文件,搜索 SOLR_PORT=8983
将端口改为8981
编辑好以后,将solr-1文件夹复制3分,分别命名为 solr-2,solr-3,solr-4
然后分别修改对应的solr.cmd文件,设置端口为 8982,8983,,8984
3.上传solr的core配置到zookeeper
因为需要让zk统一治理solr,所以需要让zk管理solr的配置信息。
进入\solr-1\server\scripts\cloud-scripts 目录,看到有zk的客户端指令文件
现在需要将\solr-1\server\solr\configsets\basic_configs\conf 里的所有配置都上传到zk服务上,执行命令:
zkcli.bat -zkhost zk1:port,zk2:port... -cmd upconfig -confdir solr的conf目录 -confname solrconf
例如:
zkcli.bat -zkhost localhost:2181,localhost:2182,localhost:2183 -cmd upconfig -confdir D:\develop-env\solr-cluster\solr-1\server\solr\configsets\basic_configs\conf -confname solrconf
上传以后,查看是否成功,用zk客户端连接到任意一个zk服务器,查看 根路径
zkCli.cmd -server localhost:2181
ls /
ls /configs
如果有我们前面命名的 solrconf,说明上传成功
启动solr
设置好以后,用cmd先进入solr-1的bin目录,执行命令 ,然后分别进入 solr-2/bin solr-3/bin solr-4/bin,同样执行下面命令:
solr start
然后访问地址 http://localhost:8981/ (或8982 8983 8984)
创建solr core
新建一个core,在config set选项中,能看到上传的solr配置
选择solrconf配置,numShards 和replicationFact 都填4,添加添加按钮,会提示错误:
最后一句说需要 4*4=16个分片,超出了允许的值。规则是 numShards数量 * replicationFact数量 <= solrCloud中solr服务的数量
numShards 和replicationFact 分别填 1 1 创建 core1
numShards 和replicationFact 分别填 4 1 创建 core1
numShards 和replicationFact 分别填 1 4 创建 core1
numShards 和replicationFact 分别填 2 2 创建 core1
然后查看 Cloud
黑色选中的是zk选举出来的leader
访问其他solr,效果一样