Solr5.2.1+Zookeeper3.4.9分布式集群搭建
1.选取三台服务器
由于机器比较少,现将zookeeper和solr都部署在以下三台机器上。(以下操作都是在172.16.20.101主节点上进行的哦)
172.16.20.101 主节点
172.16.20.102 从节点
172.16.20.103 从节点
2.Zookeeper集群部署
1)访问官网下载zookeeper安装包,我用的是zookeeper-3.4.9.tar.gz
2)解压安装包,我是解压到自己新建的目录/data/zookeeper下。
tar -zxvf zookeeper-3.4.9.tar.gz
3)在/data/zookeeper目录下新建data,logs两个文件夹。
4)进入zookeeper-3.4.9/conf目录,把zoo_sample.cfg文件改成zoo.cfg
cp zoo_sample.cfg zoo.cfg
5)修改zoo.cfg文件,需要修改以下几个地方
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
在文件末尾添加:
server.1=172.16.20.101:2888:3888
server.2=172.16.20.102:2888:3888
server.3=172.16.20.103:2888:3888
6)将配置好的zookeeper复制到另外两台服务器上。
scp -r /data/zookeeper root@172.16.20.102:/data
scp -r /data/zookeeper root@172.16.20.103:/data
7)分别在三台服务器的/data/zookeeper/data目录下新建myid文件,内容分别为server.1,server.2,server.3后面的数字,例如:
echo "1" > myid
8)分别进入三台服各器的/data/zookeeper/zookeeper-3.4.9/bin目录下,启动服务。
./zkServer.sh start
9)启动完成后,查看服务状态。
./zkServer.sh status
3.Solr分布式集群部署
1)访问Apache官网下载solr安装包,我用的是solr-5.2.1.zip包。
2)解压安装包,我是解压到自己新建的目录/data/solr下。
unzip solr-5.2.1.zip
3)修改/data/solr/solr-5.2.1/bin/solr.in.sh文件
SOLR_JAVA_MEM="-Xms1G -Xmx1G"
ZK_HOST="172.16.20.101:2181,172.16.20.102:2181,172.16.20.103:2181"
4)将配置好的solr复制到另外两台服务器上。
scp -r /data/solr root@172.16.20.102:/data
scp -r /data/solr root@172.16.20.103:/data
5)在每个节点启动solr服务,进入/data/solr/solr-5.2.1,执行如下命令
bin/solr start
6)在每个节点查看solr运行状态
bin/solr status
7)solr集群搭建完毕,访问solr界面。
http://172.16.20.101:8983/solr
4.Solr集群的操作
以下的操作均是以http://172.16.20.101:8983/solr这个开头访问的,然后跟在这个url后面才是完整的路径。如:我写的/admin/collections?action=DELETE&name=article,则访问路径是:http://172.16.20.101:8983/solr/admin/collections?action=DELETE&name=article
4.1 创建collection
两种方式创建collection,根据路由方式的不同:
第一种implicit路由方式
/admin/collections?action=CREATE&name=article&router.name=implicit&shards=shard1,shard2,shard3&maxShardsPerNode=5&collection.configName=collection3Conf
第二种compositeId路由方式
/admin/collections?action=CREATE&name=article&router.name=compositeId&numShards=5&replicationFactor=1&maxShardsPerNode=5&collection.configName=collection3Conf
或者
/admin/collections?action=CREATE&name=application&router.name=compositeId&numShards=1&replicationFactor=2&maxShardsPerNode=2&collection.configName=application&createNodeSet=172.16.20.102:8983_solr,172.16.20.103:8983_solr
4.2删除collection
/admin/collections?action=DELETE&name=article
4.3增加分片shard
implicit路由实现该需求比较简单,只要创建Shard即可。
/admin/collections?action=CREATESHARD&collection=article&shard=shard1&name=article_shard1_replica2
compositeId路由实现该需求稍微麻烦一下,通过分裂(SPLITSHARD)操作实现。
/admin/collections?action=SPLITSHARD&collection=article&shard=shard1
4.4删除分片shard
/admin/collections?action=DELETESHARD&collection=article&shard=shard1
4.5上传SolrCloud的配置文件到zookeeper,统一保存配置文件
java -classpath .:/data/solr/solr-5.2.1/server/solr-webapp/webapp/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd upconfig -zkhost 172.16.20.101:2181,172.16.20.102:2181,172.16.20.102:2181 -confdir /data/solr/solr-5.2.1/server/solr/configsets/sample_techproducts_configs/conf/ -confname collection1Conf
4.6将上传到ZooKeeper中配置文件与Collection相关联
java -classpath .:/data/solr/solr-5.2.1/server/solr-webapp/webapp/WEB-INF/lib/* org.apache.solr.cloud.ZkCLI -cmd linkconfig -collection collection1 -confname collection1Conf -zkhost 172.16.20.101:2181,172.16.20.102:2181,172.16.20.103:2181
4.7将配置上传到zookeeper,如果要让正在运行的solr同步加载这些文件,需要让solr重新加载一下配置文件
/admin/collections?action=RELOAD&name=article