摘要
本节主要讲解启动solr cloud,以及部分运维处理过程
启动solr cloud
添加replica
split shard
unload core
其中启动solr cloud以及添加replica 参照 split shard
split shard参照 《solr in action》 P433 Starting Solr in cloud mode
unload core参照 《solr in action》 P408 unloading and deleting cores
创建core
将E:\Program Files (x86)\solr-4.6.0\solr-4.6.0\example 复制两份 重命名为shard1和shard2
就存在了E:\Program Files (x86)\solr-4.6.0\solr-4.6.0\shard1 以及 shard2
启动solr cloud
先用一个已有的solr node来完成启动,等待后续其他node的到来
命令行执行(此时tomcat关掉,因为下面命令用start.jar用的jetty起的)
e:
cd E:\Program Files (x86)\solr-4.6.0\solr-4.6.0\shard1
java -Dcollection.configName=collection1 -DzkRun -DnumShards=2 -jar start.jar -Dbootstrap_confdir=./solr/collection1/conf
启动完之后,输入 http://localhost:8983/solr/#/~cloud
呈现,
这里应该要出现在shard1才对(没有指定的话应该是每个shard轮流来),暂时没有深究
这里和文件名shard1没有关系
启动另外一个shard
在上面solr cloud已经启动的基础上,
命令行执行
e:
cd E:\Program Files (x86)\solr-4.6.0\solr-4.6.0\shard2
java -DzkHost=localhost:9983 -Djetty.port=8984 -jar start.jar
启动之后,输入 http://localhost:8984/solr/#/~cloud
呈现,
这里这个core被分配到了shard1
加入replica
把之前的example文件夹在复制一份重命名为8985(上面的文件夹名字shard1,shard2有一点误导性)
然后命令行
e:
cd E:\Program Files (x86)\solr-4.6.0\solr-4.6.0\8985
java -DzkHost=localhost:9983 -Djetty.port=8985 -jar start.jar
此时打开 http://localhost:8983/solr/#/~cloud 发现进入了shard2
split shard
参照split shard
直接在admin页面输入
http://localhost:8983/solr/admin/collections?action=SPLITSHARD&collection=collection1&shard=shard2
这里表示将collection1这个collection的shard2再进行split
再分区之后的shard2树形结构
"shard2":{
"range":"0-7fffffff",
"state":"inactive",
"replicas":{
"core_node1":{
"state":"active",
"base_url":"http://10.240.34.149:8983/solr",
"core":"collection1",
"node_name":"10.240.34.149:8983_solr",
"leader":"true"},
"core_node3":{
"state":"active",
"base_url":"http://10.240.34.149:8985/solr",
"core":"collection1",
"node_name":"10.240.34.149:8985_solr"}}},
"shard2_0":{
"range":"0-3fffffff",
"state":"active",
"replicas":{
"core_node4":{
"state":"active",
"base_url":"http://10.240.34.149:8983/solr",
"core":"collection1_shard2_0_replica1",
"node_name":"10.240.34.149:8983_solr",
"leader":"true"},
"core_node6":{
"state":"active",
"base_url":"http://10.240.34.149:8985/solr",
"core":"collection1_shard2_0_replica2",
"node_name":"10.240.34.149:8985_solr"}}},
"shard2_1":{
"range":"40000000-7fffffff",
"state":"active",
"replicas":{
"core_node5":{
"state":"active",
"base_url":"http://10.240.34.149:8983/solr",
"core":"collection1_shard2_1_replica1",
"node_name":"10.240.34.149:8983_solr",
"leader":"true"},
"core_node7":{
"state":"active",
"base_url":"http://10.240.34.149:8984/solr",
"core":"collection1_shard2_1_replica2",
"node_name":"10.240.34.149:8984_solr"}}}}
可以看到,split之前的shard2已经是inactive状态了,但是保存了旧的数据,可以unload掉
新的分出来的分别叫做shard2_0以及shard2_1,把原来shard2的range进一步细分了
这里有个问题没有明白,就是shard2是8983和8985端口的,split之后的shard2_1是8983和8984端口了,这个相当于是让另外一个solr server(ip:port)完成了部分split的工作,需要看看源码
unload没有用的core
把shard2 split之前的两个节点给unload掉,没用了
分别去
http://localhost:8983/solr/#/~cores/collection1
http://localhost:8985/solr/#/~cores/collection1
进行unload操作,如下图
最后cloud如下图
问题
1.为什么第一个core启动时候出现在了shard2,书上是这样写的
SolrCloud takes the most logical action when new nodes join the cluster
so you don’t have to worry about manually assigning nodes to shards
2.如何知道solrCloudServer是哪一台机器,端口
3.splitshard的时候怎么完成让另外一个solr server完成部分split的任务的,需要查看源码
refer
《solr in action》
split shard
http://blog.csdn.net/shirdrn/article/details/9770829