Centos7上搭建solrcloud(solr7.3.1+内置jetty+zookeeper3.4.12)

        solrcloud(solr云)是基于 solr 和 zookeeper 的分布式搜索方案,它的主要思想是使用zookeeper作为solrcloud集群的配置信息中心,统一管理solrcloud的配置,比如solrconfig.xml和managed-schema。

        当你需要大规模,高容错率,分布式索引和检索能力时使用solrcloud。当索引量很大,搜索请求并发很高,这时需要使用solrcloud满足这些需求。当一个系统的索引数据量少的时候是不需要使用solrcloud的。

        solrcloud 一般都是解决大数据量,大并发的搜索服务。

        solrcloud将索引数据进行shard拆分(分片),每个分片有多台服务器共同完成,当一个索引或搜索请求过来时会分别从不同的shard的服务器中操作索引。

它有几个特色功能:

1)集中式的配置信息:使用zk进行集中配置,启动时可以指定把solr的相关配置文件上传zookeeper,多机器共用同一套配置。这些zk中的配置不会再拿到本地缓存,solr直接读取zk中的配置信息。另外配置文件的变动,所有机器都可以感知到。

2)自动容错:solrcloud对索引分片,并对每个分片(shard)创建多个replication。每个 replication 都可以对外提供服务。一个 replication 挂掉不会影响索引服务,更强大的是,solrcloud还能自动的在其它机器上帮你把失败机器上的索引replication重建并投入使用。

3)近实时搜索:立即推送式的replication(也支持慢推送),可以在秒内检索到新加入索引。

4)查询时自动负载均衡:solrcloud 索引的多个replication可以分布在多台机器上,均衡查询压力,如果压力大,可以通过扩展机器,增加replication来减缓。

除此之外,solrcloud还提供了其他一些特色功能:

1) 可将索引存储在HDFS上

2)通过MR批量创建索引

3)强大的restful API



一、准备工作

      1.系统及软件版本

    系统版本:centos7.5、zookeeper版本:zookeeper-3.4.12、solr版本:solr-7.3.1

  2.安装2台虚拟机(最好3台或3台以上)

         虚拟机ip    192.168.0.242,192.168.0.243

  3.给每台机器安装jdk

二、zookeeper集群安装

  1.解压zookeeper

    tar -zxvf zookeeper-3.4.12.tar.gz  

或者使用 

             [root@localhost ~]# tar -xvf zookeeper-3.4.12.tar.gz -C /usr/local

  2.创建 data和log目录用于存放数据

    mkdir  /tmp/zdatadir

    mkdir  /tmp/zlogdir

  3.拷贝zookeeper配制文件zoo_sample.cfg

    cp conf/zoo_sample.cfg  conf/zoo.cfg

  4.修改配置文件 zoo.cfg

    vi conf/zoo.cfg

    加入如下如内容:

dataDir=/tmp/zdatadir
dataLogDir=/tmp/zlogdir

# zookeeper集群
server.1=192.168.0.242:2888:3888
server.2=192.168.0.243:2888:3888

        5.在/tmp/zdatadir/下创建myid文件 并写入对应的数字

    注意:myid文件内容中的数字要对应,在192.168.0.242服务器上的myid 数字为1,在192.168.0.243服务器上的myid 数字为2。这些数字可以任意 但要和zoo.cfg中的server.数字中的数字一致。

        6.开启zookeeper端口

[root@solr bin]# firewall-cmd --add-port=2181/tcp --zone=public --permanent
success
[root@solr bin]# firewall-cmd --add-port=2888/tcp --zone=public --permanent
success
[root@solr bin]# firewall-cmd --add-port=3888/tcp --zone=public --permanent
success

        7.重启防火墙以使改动生效     

[root@solr bin]# firewall-cmd --reload
success

    8.启动zookeeper集群

      进入 zookeeper中的bin目录   

      ./zkServer.sh start

      查看集群状态

      ./zkServer.sh status   刚启动可能会有错误,集群中其他节点一并起来后就正常了

      ./zkServer.sh stop  停止

      ./zkServer.sh restart  重启

      ./zkCli.sh  连接zookeeper集群

    9.安装成功的结果如下   1个 leader   1个follower(如果是三台机器,则为1个leader,2个follower)

[root@solr bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@solr bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: leader
[root@solr bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.12/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@solr bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/zookeeper-3.4.12/bin/../conf/zoo.cfg
Mode: follower

 

注意:

zookeeper日志文件为:zookeeper.out

默认位置:zookeeper-3.4.12/bin     下

查看zookeeper日志方法:

[root@solr1 bin]# tail -f zookeeper.out

三、solr集群的搭建

1.在 /usr/local/ 下新建文件夹solrcloud,然后解压 solr-7.3.1.tgz 到 /usr/local/solrcloud目录下

[root@solr ~]# ls
anaconda-ks.cfg  solr-7.3.1.tgz  zookeeper-3.4.12.tar.gz
[root@solr ~]# mkdir /usr/local/solrcloud
[root@solr ~]# tar -xvf solr-7.3.1.tgz -C /usr/local/solrcloud

2.进入solr解压文件夹,修改solr bin目录下的solr.in.sh文件 

[root@solr ~]# cd /usr/local/solrcloud/solr-7.3.1/bin
[root@solr bin]# ls
init.d  install_solr_service.sh  oom_solr.sh  post  solr  solr.cmd  solr.in.cmd  solr.in.sh

 

修改bin下solr.in.sh文件

  ZK_HOST="192.168.0.242:2181,192.168.0.243:2181"

    去掉 ZK_CLIENT_TIMEOUT 的注释

# Set the ZooKeeper connection string if using an external ZooKeeper ensemble
# e.g. host1:2181,host2:2181/chroot
# Leave empty if not using SolrCloud
#ZK_HOST=""

# Set the ZooKeeper client timeout (for SolrCloud mode)
#ZK_CLIENT_TIMEOUT="15000"

改为:

# Set the ZooKeeper connection string if using an external ZooKeeper ensemble
# e.g. host1:2181,host2:2181/chroot
# Leave empty if not using SolrCloud
ZK_HOST="192.168.0.242:2181,192.168.0.243:2181"

# Set the ZooKeeper client timeout (for SolrCloud mode)
ZK_CLIENT_TIMEOUT="15000"

最好再修改3处:

3.启动组成solrcloud的各个solr(不能再用 ./solr start -force 命令了,另外在启动solrcloud之前一定要先启动zookeeper,否则报500)

进入/usr/local/solrcloud/solr-7.3.1/bin 后:

[root@solr bin]# ./solr start -cloud -force

[root@solr bin]# ./solr restart -cloud -force

 

 



常用solr命令:

1. 上传配置

solrcloud使用zookeeper进行统一配置管理,那么怎么上传配置到zookeeper?

a. 我先把要上传的配置准备好,放在/usr/local/solrcloud/solr-7.3.1/server/solr/configsets 目录下,如图

b. 然后使用/usr/local/solrcloud/solr-7.3.1/server/scripts/cloud-script 目录下的 zkcli.sh 命令进行上传:

[root@solr1 cloud-scripts]# ./zkcli.sh -zkhost solr1:2181,solr2:2181 -cmd upconfig -confdir /usr/local/solrcloud/solr-7.3.1/server/solr/configsets/storages/conf -confname storages

再比如:

./zkcli.sh -zkhost 192.168.0.6:2181,192.168.0.7:2181,192.168.0.8:2181 -cmd upconfig -confdir /usr/local/solrcloud/solr-7.3.1/server/solr/configsets/products/conf/ -confname products

2. 通过指定配置创建 collection

进入solr的bin目录,然后执行命令类似如下:

[root@solr1 bin]# ./solr create_collection -c storages -shards 2 -replicationFactor 1 -n storages -force
Re-using existing configuration directory storages
Created collection 'storages' with 2 shard(s), 1 replica(s) with config-set 'storages'

-n storages 是指定配置文件,不指定的话,将使用默认配置文件_default

3. 启动solrcloud

如果 solr-7.3.1/bin/solr.in.sh文件中配置了ZK_HOST,比如:
ZK_HOST="172.100.0.6:2181,172.100.0.7:2181,172.100.0.8:2181"
则,启动solrcloud的命令可以直接用:
[root@zky-solr1 bin]# ./solr start -cloud  -p 8983 -force

如果 solr-7.3.1/bin/solr.in.sh文件中未配置ZK_HOST,
则,启动solrcloud的命令中需要指定zookeeper, 启动solrcloud的命令为:
[root@zky-solr1 bin]# ./solr start -cloud -z zookeeper01:2181,zookeeper02:2181 -p 8983 -force
注:zookeeper01,zookeeper02为zookeeper所在主机的hostname

4. 查看solr运行状态
./solr status



如果solr索引数据存放在hadoop hdfs中的话:

如果solr索引数据存放在hadoop hdfs中的话,创建的 collection 的 solrconfig.xml 文件要做3处改动(以logistics的solrconfig.xml为例):
第一处:<datadir>的值:

<dataDir>${solr.data.dir:hdfs://master:9000/solr/logistics}</dataDir>

第二处:<directoryFactory>

<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory">
  <str name="solr.hdfs.home">hdfs://master:9000/solr</str>
  <bool name="solr.hdfs.blockcache.enabled">true</bool>
  <int name="solr.hdfs.blockcache.slab.count">1</int>
  <bool name="solr.hdfs.blockcache.direct.memory.allocation">true</bool>
  <int name="solr.hdfs.blockcache.blocksperbank">16384</int>
  <bool name="solr.hdfs.blockcache.read.enabled">true</bool>
  <bool name="solr.hdfs.nrtcachingdirectory.enable">true</bool>
  <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">16</int>
  <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">192</int>
</directoryFactory>

第三处:<lockType>

<lockType>${solr.lock.type:hdfs}</lockType>

solrconfig.xml中这三处默认值是:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值