SolrCloud4.9+zookeeper在CentOS上的搭建与安装

Apache SolrCloud安装

SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection。SolrCloud自动支持Solr Replication,可以同时对分片进行复制,冗余存储。下面,我们基于Solr最新的4.9.0版本进行安装配置SolrCloud集群。

1. 安装环境

我使用的安装程序各版本如下:

  • Solr: Apache Solr-4.9.0
  • Tomcat: Apache Tomcat 7
  • ZooKeeper: Apache ZooKeeper 3.4.5

各个目录说明:

  • 所有的程序安装在/home目录下,你可以依照你的实际情况下修改安装目录。
  • ZooKeeper的数据目录在:/home/zookeeper/data
  • solrhome设置在:/home/solrcloud/solrhome

2. 规划SolrCloud

  • 单一SolrCloud数据集合:mycollection
  • ZooKeeper集群:2台
  • SolrCloud实例:2节点
  • 索引分片:2
  • 复制因子:2

手动将2个索引分片(Shard)的复本(Replica)分布在2个SolrCloud节点上

三个节点:

  • 192.168.56.121
  • 192.168.56.122
  • 192.168.56.123

3. 安装ZooKeeper集群

由于需要用到ZooKeeper,故我们先安装好ZooKeeper集群

首先,在第一个节点上将zookeeper-3.4.5.tar.gz解压到/home目录:

$ tar zxvf zookeeper-3.4.5.tar.gz -C /home/

创建zookeeper配置文件zookeeper-3.4.5/conf/zoo.cfg,内容如下:

tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/data clientPort=2181 server.1=192.168.56.121:2888:3888 server.2=192.168.56.122:2888:3888 server.3=192.168.56.123:2888:3888

zookeeper的数据目录指定在/home/zookeeper/data,你也可以使用其他目录,通过下面命令进行创建该目录:

$ mkdir /home/zookeeper/data -p

然后,初始化myid,三个节点编号依次为1,2,3,在其余节点上分别执行命令(注意修改编号)。

$ echo "1" >/home/zookeeper/data/myid

然后,在第二个和第三个节点上依次重复上面的操作。这样第一个节点中myid内容为1,第二个节点为2,第三个节点为3。

最后,启动ZooKeeper集群,在每个节点上分别启动ZooKeeper服务:

$ cd /home $ sh zookeeper-3.4.5/bin/zkServer.sh start

可以查看ZooKeeper集群的状态,保证集群启动没有问题:

[[email protected] opt]# sh zookeeper-3.4.5/bin/zkServer.sh status 
JMX enabled by default 
Using config: /home/zookeeper-3.4.5/bin/../conf/zoo.cfg 
Mode: follower

4. 安装Solr

简单来说,执行以下命令:

步骤如下:

首先,在执行如下操作之前建立三个文件:(1):/home/solrcloud/solrhome   (2):/home/solrcloud/solr-lib  (3)/home/solrcloud/solr-config
    mkdir -p /home/solrcloud/solrhome
    mkdir -p /home/solrcloud/solr-lib
    mkdir -p /home/solrcloud/solr-config

然后进行如下操作:

1.解压缩apache-tomcat7.zip 到/home/solrcloud/tomcat7 文件中  
    unzip apache-tomcat7.zip -d /home/solrcloud/tomcat7
2.解压缩solr-4.9.0.zip到/home/solr-4.9.0文件
    unzip solr-4.9.0.zip -d /home/solr-4.9.0
3.首先把solr-4.9.0/example/webapps/solr.war解压缩,然后复制到tomcat7的webapps下面
    $ cp solr-4.9.0/example/webapps/solr.war apache-tomcat7/webapps/ 
4.把solr-4.9.0/example/lib/ext/下所有jar文件copy到apache-tomcat7/webapps/solr/WEB-INF/lib/下 
    $ cp solr-4.9.0/example/lib/ext/* apache-tomcat-6.0.36/webapps/solr/WEB-INF/lib/
5.把solr-4.9.0/example/resources/log4j.properties 复制 apache-tomcat7/lib/ 下
    $ cp solr-4.9.0/example/resources/log4j.properties apache-tomcat7/lib/
6.把solr-4.9.0/example/solr/solr.xml复制到/home/solrcloud/solrhome中
    $ cp solr-4.9.0/example/solr/solr.xml /home/solrcloud/solrhome
7.在/home/solrcloud/solr-config下面建立一个core目录,比如叫mycollection/conf
    mkdir -p /home/solrcloud/solr-config/mycollection/conf
8.复制solr-4.9.0/example/solr/collection1/conf 到/home/solrcloud/solr-config/mycollection/conf
    $ cp solr-4.9.0/example/solr/collection1/conf /home/solrcloud/solr-config/mycollection/conf
9.修改/home/solrcloud/solrhome/solr.xml的 hostPort 节点的端口号为tomcat的端口号
    <int name="hostPort">${jetty.port:8080}</int>

在其他节点上重复以上操作完成所有节点的solr的安装。

5. Tomcat配置与启动

自动创建Collection及初始Shard,不需要通过zookeeper手动上传配置文件并关联collection。

1、在第一个节点修改tomcat启动参数

JAVA_OPTS=‘-Djetty.port=8080 -Dsolr.solr.home=/home/solrcloud/solrhome -DzkHost=192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -DnumShards=3 -Dbootstrap_confdir=/home/solrcloud/solr-config/mycollection/conf -Dcollection.configName=myconf‘

然后启动tomcat。这个步骤上传了集群的相关配置信息(/home/solrcloud/solr-config/mycollectin/conf)到ZooKeeper中去,所以启动下一个节点时不用再指定配置文件了。

2、在第二个和第三个节点修改tomcat启动参数

JAVA_OPTS=‘-Djetty.port=8080 -Dsolr.solr.home=/home/solrcloud/solrhome -DzkHost=192.168.56.122:2181,192.168.56.122:2181,192.168.56.123:2181 -DnumShards=3‘

然后启动tomcat。

这样就会创建3个shard分别分布在三个节点上,如果你在增加一个节点,这节点会附加到一个shard上成为一个replica,而不会创建新的shard。

6. 建立core跟share的一些命令

curl ‘http://192.168.56.121:8080/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=1‘

上面链接中的几个参数的含义,说明如下:

  • name 待创建Collection的名称
  • numShards 分片的数量
  • replicationFactor 复制副本的数量

可以通过Web管理页面,访问http://192.168.56.121:8888/solr/#/~cloud,查看SolrCloud集群的分片信息。

7.手动创建Replication

下面对已经创建的初始分片进行复制。 shard1已经在192.168.56.123上,我们复制分片到192.168.56.121和192.168.56.122上,执行如下命令:

$ curl ‘http://192.168.56.121:8080/solr/admin/cores?action=CREATE&collection=primary&name=primary_shard1_replica_2&shard=shard1‘ 
$ curl ‘http://192.168.56.122:8080/solr/admin/cores?action=CREATE&collection=primary&name=primary_shard1_replica_3&shard=shard1‘

最后的结果是,192.168.56.123上的shard1,在192.168.56.121节点上有1个副本,名称为primary_shard1_replica_2,在192.168.56.122节点上有一个副本,名称为primary_shard1_replica_3。也可以通过查看192.168.56.121和192.168.56.122上的目录变化,如下所示:

$  ll /usr/local/solrhome/ 
total 16 
drwxr-xr-x 3 root root 4096 Mar 10 17:11 primary_shard1_replica2 
drwxr-xr-x 3 root root 4096 Mar 10 17:02 primary_shard2_replica1 
-rw-r--r-- 1 root root  444 Mar 10 17:16 solr.xml

你还可以对shard2和shard3添加副本。

其他:下面是手动上传zookeeper的方法

手动设置SolrCloud配置文件

安装ZooKeeper集群之前,请确保每台机器上配置/etc/hosts文件,使每个节点都能通过机器名访问。

1、 创建一个SolrCloud目录,并将solr的lib文件拷贝到这个目录:

$ mkdir -p /home/solrcloud/solr-lib/ 
$ cp apache-tomcat7/webapps/solr/WEB-INF/lib/* /home/solrcloud/solr-lib/

2、 通过bootstrap设置solrhome:

$ java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd bootstrap -solrhome /home/solrcloud/solrhome

SolrCloud集群的所有的配置存储在ZooKeeper.一旦SolrCloud节点启动时配置了-Dbootstrap_confdir参数, 该节点的配置信息将发送到ZooKeeper上存储。基它节点启动时会应用ZooKeeper上的配置信息,这样当我们改动配置时就不用一个个机子去更改了。

3、SolrCloud是通过ZooKeeper集群来保证配置文件的变更及时同步到各个节点上,所以,需要将配置文件上传到ZooKeeper集群中:

$ java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd upconfig -confdir /home/solrcloud/solr-config/mycollectioin/conf -confname myconf

说明:

  • zkhost指定ZooKeeper地址,逗号分割
  • /home/solrcloud/solr-config/mycollectin/conf目录下存在schema.xml和solrconfig.xml两个配置文件,你可以修改为你自己的目录。
  • myconf为在ZooKeeper上的配置文件名称。

4、把配置文件和目标collection联系起来:

$ java -classpath .:/home/solrcloud/solr-lib/* org.apache.solr.cloud.ZkCLI -zkhost 192.168.56.121:2181,192.168.56.122:2181,192.168.56.123:2181 -cmd linkconfig -collection mycollection-confname myconf

说明:

  • 创建的collection叫做mycollection,并指定和myconf连接

5、查看ZooKeeper上状态

在任意一个节点的/opt目录下执行如下命令:

$  zookeeper-3.4.5/bin/zkCli.sh  
[zk: localhost:2181(CONNECTED) 0] ls / 
[configs, zookeeper, clusterstate.json, aliases.json, live_nodes, overseer, collections, overseer_elect] 
[zk: localhost:2181(CONNECTED) 1] ls /configs 
[myconf] 
[zk: localhost:2181(CONNECTED) 1] ls /collections 
[mycollection]

查看/configs/collections目录均有值,说明配置文件已经上传到ZooKeeper上了,接下来启动solr。

几个常用的命令:

/admin/collections?action=CREATEcreate a collection
/admin/collections?action=RELOADreload a collection
/admin/collections?action=SPLITSHARDsplit a shard into two new shards
/admin/collections?action=CREATESHARDcreate a new shard
/admin/collections?action=DELETESHARDdelete an inactive shard
/admin/collections?action=CREATEALIAScreate or modify an alias for a collection
/admin/collections?action=DELETEALIASdelete an alias for a collection
/admin/collections?action=DELETEdelete a collection
/admin/collections?action=DELETEREPLICAdelete a replica of a shard
/admin/collections?action=ADDREPLICAadd a replica of a shard
/admin/collections?action=CLUSTERPROPAdd/edit/delete a cluster-wide property 
/admin/collections?action=MIGRATE: 
Migrate documents to another collection
/admin/collections?action=ADDROLE: 
Add a specific role to a node in the cluster 
/admin/collections?action=REMOVEROLE: 
Remove an assigned role 
/admin/collections?action=OVERSEERSTATUS: 
Get status and statistics of the overseer 
/admin/collections?action=CLUSTERSTATUS: 
 Get cluster status/admin/collections?action=REQUESTSTATUSGet the status of a previous asynchronous request
/admin/collections?action=LIST: List all collections

参考:http://blog.javachen.com/2014/03/10/how-to-install-solrcloud/

时间: 2024-10-10 08:48:37

SolrCloud4.9+zookeeper在CentOS上的搭建与安装的相关文章

centos上Jenkins搭建

Jenkins可以提供持续集成服务,它的运行环境(runtime)需要Tomcat和JDK 要把Jenkins让Tomcat启动服务,而Tomcat需要JDK的环境 详情配置参见: http://www.cnblogs.com/frankielf0921/p/5398334.html 在这之前,要记得关掉防火墙 免得在web页面上无法访问!!! ******我是分割线****** Jenkins配置 官网地址: https://jenkins.io/download/ 选择需要的版本进行下载 [

Centos上PostgreSQL9.3的安装

系统环境 CentOS release 6.2(Final) 64bit PostgreSQL版本:9.3.5 分别使用rpm.源码包.yum的安装方式进行安装 1.安装PostgreSQL a.rpm安装 1.检查PostgreSQL是否已经安装 [[email protected] ~]#rpm -qa|grep postgresql 如果有检查到已经安装的包,使用rpm –e将其卸载 2.rpm的下载安装 在http://yum.postgresql.org/9.3/redhat/rhel

centos上的mongodb的安装及php扩展mongodb

mongodb的官网https://www.mongodb.org,可在其上下载你想要的版本.下面是我的下载.安装及启动 curl -O -L https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.4.tgz tar -zxvf mongodb-linux-x86_64-3.0.4.tgz  cd mongodb-linux-x86_64-3.0.4 mkdir -p /usr/local/mongodb ln -s /usr/loc

centos上node.js的安装

CentOS 下安装 Node.js 1.下载源码,你需要在https://nodejs.org/en/download/下载最新的Nodejs版本,本文以v0.10.24为例: cd /usr/local/src/ wget http://nodejs.org/dist/v0.10.24/node-v0.10.24.tar.gz   2.解压源码 tar zxvf node-v0.10.24.tar.gz   3. 编译安装 cd node-v0.10.24 ./configure --pre

CentOS 7 SVN搭建 (YUM安装)

1.检查已安装版本 rpm -qa subversion卸载旧版本SVNyum remove subversion2.安装SVNyum install subversion 3.验证安装svnserve --version 4.代码库创建 mkdir -p /opt/java/svn/reposvnadmin create /opt/java/svn/repo 5.配置代码库 cd /opt/java/svn/repo/conf用户密码passwd配置vim passwd 权限控制authz配置

CentOS上 svn客户端的安装及应用

1. 安装svn客户端 yum install subversion -y 2. svn客户端常用命令 #2.1 将文件checkout到本地目录 svn checkout remote_path local_path //简写:svn co #2.2 往版本库中添加新的文件 svn add file.php #2.3 将改动的文件提交到版本库 svn commit -m "add test.php" test.php //简写:svn ci #2.4 加锁/解锁 svn lock -

CentOS 5 上使用yum同时安装32位和64位包的解决方法

在centos上使用yum在线安装软件包的时候,有时候会同时安装32位和64位的包.并且在update的时候也会更新双份. 其实让yum只安装64位的包,只要在 /etc/yum.conf 中加个 exclude 选项: [main] cachedir=/var/cache/yum keepcache=0 plugins=1 ...... exclude=*.i?86 exclude 选项支持正则表达式,*.i?86可以用来过滤掉i386,i686等32bit包. 如果要删除已经安装的32bit

烂泥:Centos上使用PPTP搭建VPN

本文首发于烂泥行天下. 目前公司在IDC机房有一台服务器A(linux系统).该服务器是对外的有两块网卡,一个是公网,一个是私网的. 而另外一台服务器B必须通过A服务器上的VPN拨连接进来,才能管理服务器B. 但是A服务器上通过iptables策略限制,只能是公司的IP地址才能通过VPN拨号连接进来. 这样就相应的提高了服务器的安全性,下面记录下有关A服务器VPN的安装与配置. 介绍下PPTP的相关知识: PPTP(点到点隧道协议)是一种用于让远程用户拨号连接到本地的ISP,通过因特网安全远程访

在CentOS上编译安装Nginx+实验环境搭建+测试

0.说明 Nginx作为一款优秀的Web Server软件同时也是一款优秀的负载均衡或前端反向代理.缓存服务软件,很有必要搭建实验环境来对其进行学习. 1.实验环境 本次实验的测试环境使用的宿主机操作系统为Windows 7,在Vmware虚拟机安装CentOS 6.5,说明如下: 宿主机操作系统Windows 7 虚拟机安装的操作系统CentOS 6.5 虚拟机操作系统上网方式NAT 而当使用NAT的方式进行上网时虚拟机.宿主机之间的网络连接关系可如下所示: 关于为什么网络拓扑结构是这样的,这