SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是正在开发中的Solr4.0(目前还是ALPHA版本,基于lucene4.0)的核心组件之一,它的主要思想是使用Zookeeper作为集群的配置信息中心。它有几个特色功能:1)集中式的配置信息 2)自动容错 3)近实时搜索 4)查询时自动负载均衡 。
下载地址:http://lucene.apache.org/solr/downloads.html
流程架构图
基本应用
1、构建2个shard的配置
按照官方的说明 ,将example复制为example2。
cp -r example example2
启动第一个shard
cd example
java -Dbootstrap_confdir=D:/training/apache-solr-4.0.0-ALPHA/example/solr/conf -Dcollection.configName=lifeba -DzkRun -DnumShards=2 -jar start.jar
-DzkRun 启动一个嵌入式的Zookeeper服务器
-Dbootstrap_confdir 指定了solr的conf路径
-DnumShards指定了shard数量
-Dcollection.configName 指定了储存到zookeeper中的config名称
默认创建的核为collection1
启动第2个shard
cd example2
java -Djetty.port=7574 -DzkHost=localhost:9983 -jar start.jar
-Djetty.port 指定了jetty的端口,默认的8983端口已经被占用。
-DzkHost=localhost:9983就是指明了第一个shard中启动的Zookeeper的路径,solr集成的内嵌的zookeeper默认端口为solr的端口+1000,在这里为9983,对应的9984 9985端口分别用于:zookeeper的同步和选举。
访问
http://localhost:8983/solr/#/~cloud?view=graph
提交数据
cd exampledocs
java -Durl=http://localhost:8983/solr/collection1/update -jar post.jar ipod_video.xml
java -Durl=http://localhost:8983/solr/collection1/update -jar post.jar monitor.xml
java -Durl=http://localhost:8983/solr/collection1/update -jar post.jar mem.xml
查询数据
http://localhost:8983/solr/collection1/select?q=*:*
2、构建2个shard和replicas配置。
cp -r example exampleB
cp -r example2 example2Bcd exampleB
java -Djetty.port=8900 -DzkHost=localhost:9983 -jar start.jarcd example2B
java -Djetty.port=7500 -DzkHost=localhost:9983 -jar start.jar
3、构建Zookeeper集群的配置
配置文件存放在zookeeper中,为了避免单点故障,需要配置Zookeeper集群来实现高可用性和容错性。
使用集成的zookeeper启动
先停掉4个server,然后执行
rm -r example*/solr/zoo_data
启动第一个solr server
cd example
java -Dbootstrap_confdir=D:/training/apache-solr-4.0.0-ALPHA/example/solr/conf -Dcollection.configName=lifeba1 -DzkRun -DzkHost=localhost:9983,localhost:9574,localhost:9900 -DnumShards=2 -jar start.jar
对应的其他3个solr启动
cd example2
java -Djetty.port=7574 -DzkRun -DzkHost=localhost:9983,localhost:9574,localhost:9900 -jar start.jarcd exampleB
java -Djetty.port=8900 -DzkRun -DzkHost=localhost:9983,localhost:9574,localhost:9900 -jar start.jarcd example2B
java -Djetty.port=7500 -DzkHost=localhost:9983,localhost:9574,localhost:9900 -jar start.jar
使用外部集群
java -Dbootstrap_confdir=D:/training/apache-solr-4.0.0-ALPHA/example/solr/conf -Dcollection.configName=lifeba1 -DzkHost=192.168.4.93:2181,192.168.4.94:2181,192.168.4.89:2181 -DnumShards=2 -jar start.jar
cd example2
java -Djetty.port=7574 -DzkHost=192.168.4.93:2181,192.168.4.94:2181,192.168.4.89:2181 -jar start.jarcd exampleB
java -Djetty.port=8900 -DzkHost=192.168.4.93:2181,192.168.4.94:2181,192.168.4.89:2181 -jar start.jarcd example2B
java -Djetty.port=7500 -DzkHost=192.168.4.93:2181,192.168.4.94:2181,192.168.4.89:2181 -jar start.jar