环境准备,请安装好自己的jdk。
注意,我搭建的是伪集群,一个虚拟机,分配了1G内存,然后搭建的集群。
一、zookeeper集群安装。
第一步:解压zookeeper,将zookeeper-3.4.6拷贝到/usr/local/solr-cloud下,复制三份分别并将目录名改为zookeeper1、zookeeper2、zookeeper3。
1 # 首先将zookeeper进行解压缩操作。
tar -zxvf zookeeper-3.4.6.tar.gz -C /home/hadoop/soft/
2 # 然后创建一个solr-cloud目录。
cd /usr/local/
mkdir solr-cloud
3 复制三份分别并将目录名改为zookeeper1、zookeeper2、zookeeper3。
cp -r zookeeper-3.4.6/ /usr/local/solr-cloud/zookeeper1
cp -r zookeeper1/ zookeeper2
cp -r zookeeper1/ zookeeper3
第二步:进入zookeeper1文件夹,创建data目录。并在data目录中创建一个myid文件内容为"1"(echo 1 >> data/myid)。
1 [root@localhost solr-cloud]# ls
2 zookeeper1 zookeeper2 zookeeper3
3 [root@localhost solr-cloud]# cd zookeeper1
4 [root@localhost zookeeper1]# ls
5 bin CHANGES.txt contrib docs ivy.xml LICENSE.txt README_packaging.txt recipes zookeeper-3.4.6.jar zookeeper-3.4.6.jar.md5
6 build.xml conf dist-maven ivysettings.xml lib NOTICE.txt README.txt src zookeeper-3.4.6.jar.asc zookeeper-3.4.6.jar.sha1
7 [root@localhost zookeeper1]# mkdir data
8 [root@localhost zookeeper1]# cd data/
9 [root@localhost data]# ls
10 [root@localhost data]# echo 1 >> myid
11 [root@localhost data]# cat myid
第三步:进入conf文件夹,把zoo_sample.cfg改名为zoo.cfg。
1 [root@localhost zookeeper1]# ls
2 bin CHANGES.txt contrib dist-maven ivysettings.xml lib NOTICE.txt README.txt src zookeeper-3.4.6.jar.asc zookeeper-3.4.6.jar.sha1
3 build.xml conf data docs ivy.xml LICENSE.txt README_packaging.txt recipes zookeeper-3.4.6.jar zookeeper-3.4.6.jar.md5
4 [root@localhost zookeeper1]# cd conf/
5 [root@localhost conf]# ls
6 configuration.xsl log4j.properties zoo_sample.cfg
7 [root@localhost conf]# mv zoo_sample.cfg zoo.cfg
8 [root@localhost conf]# ls
9 configuration.xsl log4j.properties zoo.cfg
10 [root@localhost conf]#
第四步:修改zoo.cfg。
修改:dataDir=/usr/local/solr-cloud/zookeeper1/data
注意:clientPort=2181(zookeeper2中为2182、zookeeper3中为2183)
可以在末尾添加这三项配置(注意:2881和3881分别是zookeeper之间通信的端口号、zookeeper之间选举使用的端口号。2181是客户端连接的端口号,别搞错了哦):
server.1=192.168.110.142:2881:3881
server.2=192.168.110.142:2882:3882
server.3=192.168.110.142:2883:3883
第五步:对zookeeper2、zookeeper3中的设置做第二步至第四步修改。
zookeeper2修改如下所示:
a)、myid内容为2
b)、dataDir=/usr/local/solr-cloud/zookeeper2/data
c)、clientPort=2182
Zookeeper3修改如下所示:
a)、myid内容为3
b)、dataDir=/usr/local/solr-cloud/zookeeper3/data
c)、clientPort=2183
第六步:启动三个zookeeper。
/usr/local/solr-cloud/zookeeper1/bin/zkServer.sh start
/usr/local/solr-cloud/zookeeper2/bin/zkServer.sh start
/usr/local/solr-cloud/zookeeper3/bin/zkServer.sh start
查看集群状态:
/usr/local/solr-cloud/zookeeper1/bin/zkServer.sh status
/usr/local/solr-cloud/zookeeper2/bin/zkServer.sh status
/usr/local/solr-cloud/zookeeper3/bin/zkServer.sh status
第七步:开启zookeeper用到的端口,或者直接关闭防火墙。
service iptables stop
1 [root@localhost solr-cloud]# vim start-zookeeper.sh
2 [root@localhost solr-cloud]# chmod u+x start-zookeeper.sh
3 [root@localhost solr-cloud]# ll
4 total 16
5 -rwxr--r--. 1 root root 133 Sep 13 18:32 start-zookeeper.sh
6 drwxr-xr-x. 11 root root 4096 Sep 13 02:13 zookeeper1
7 drwxr-xr-x. 11 root root 4096 Sep 13 02:35 zookeeper2
8 drwxr-xr-x. 11 root root 4096 Sep 13 02:37 zookeeper3
9 [root@localhost solr-cloud]#
二、tomcat安装。 (注意:solrCloud部署依赖zookeeper,需要先启动每一台zookeeper服务器。)
注意:使用之前搭建好的solr单机版,这里为了节省时间,直接拷贝之前的solr单机版,然后修改配置文件即可。
第一步:将apache-tomcat-7.0.47.tar.gz解压,tar -zxvf apache-tomcat-7.0.47.tar.gz。
1 [root@localhost solr-cloud]# tar -zxvf apache-tomcat-7.0.47.tar.gz
第二步:把解压后的tomcat复制到/usr/local/solr-cloud/目录下复制四份。
/usr/local/solr-cloud/tomcat1
/usr/local/solr-cloud/tomcat2
/usr/local/solr-cloud/tomcat3
/usr/local/solr-cloud/tomcat4
1 [root@localhost package]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat01
2 [root@localhost package]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat02
3 [root@localhost package]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat03
4 [root@localhost package]# cp -r apache-tomcat-7.0.47 /usr/local/solr-cloud/tomcat04
5 [root@localhost package]# cd /usr/local/solr-cloud/
6 [root@localhost solr-cloud]# ls
7 start-zookeeper.sh status-zookeeper.sh stop-zookeeper.sh tomcat01 tomcat02 tomcat03 tomcat04 zookeeper1 zookeeper2 zookeeper3
8 [root@localhost solr-cloud]#
第三步:修改tomcat的server.xml,把其中的端口后都加一。保证两个tomcat可以正常运行不发生端口冲突。
[root@localhost solr-cloud]# vim tomcat01/conf/server.xml
[root@localhost solr-cloud]# vim tomcat02/conf/server.xml
[root@localhost solr-cloud]# vim tomcat03/conf/server.xml
[root@localhost solr-cloud]# vim tomcat04/conf/server.xml
tomcat01修改的端口分别是8005修改为8105,8080修改为8180,8009修改为8189。其他tomcat第二位依次累加1即可。
三、部署solr到tomcat并建立tomcat和ZK集群关系。
将之前的solr部署到四台tomcat下面。
1 [root@localhost solr-cloud]# cp -r ../solr/tomcat/webapps/solr-4.10.3 tomcat01/webapps/
2 [root@localhost solr-cloud]# cp -r ../solr/tomcat/webapps/solr-4.10.3 tomcat02/webapps/
3 [root@localhost solr-cloud]# cp -r ../solr/tomcat/webapps/solr-4.10.3 tomcat03/webapps/
4 [root@localhost solr-cloud]# cp -r ../solr/tomcat/webapps/solr-4.10.3 tomcat04/webapps/
然后将单机版的solrhome复制四份,分别是solrhome01,solrhome02,solrhome03,solrhome04。
1 [root@localhost solr-cloud]# cp -r ../solr/solrhome/ solrhome01
2 [root@localhost solr-cloud]# cp -r ../solr/solrhome/ solrhome02
3 [root@localhost solr-cloud]# cp -r ../solr/solrhome/ solrhome03
4 [root@localhost solr-cloud]# cp -r ../solr/solrhome/ solrhome04
5 [root@localhost solr-cloud]# ls
6 solrhome01 solrhome02 solrhome03 solrhome04 start-zookeeper.sh status-zookeeper.sh stop-zookeeper.sh tomcat01 tomcat02 tomcat03 tomcat04 zookeeper1 zookeeper2 zookeeper3
7 [root@localhost solr-cloud]#
然后开始编辑solrhome01,solrhome02,solrhome03,solrhome04。下面的solr.xml配置文件(修改每个solrhome的solr.xml文件)。让tomcat01和solrhome01对应上,其他依次类推,让tomcat02和solrhome02对应上,让tomcat03和solrhome03对应上,让tomcat04和solrhome04对应上。
然后将solr和solrhome之间建立关系。
1 [root@localhost solr-cloud]# vim tomcat01/webapps/solr-4.10.3/WEB-INF/web.xml
2 [root@localhost solr-cloud]# vim tomcat02/webapps/solr-4.10.3/WEB-INF/web.xml
3 [root@localhost solr-cloud]# vim tomcat03/webapps/solr-4.10.3/WEB-INF/web.xml
4 [root@localhost solr-cloud]# vim tomcat04/webapps/solr-4.10.3/WEB-INF/web.xml
然后将tomcat和zookeeper建立关系。每一台solr和zookeeper关联。
修改每一个tomcat的bin目录下catalina.sh文件中加入DzkHost指定zookeeper服务器地址:
JAVA_OPTS="-DzkHost=192.168.110.142:2181,192.168.110.142:2182,192.168.110.142:2183"
注意:可以使用vim的查找功能查找到JAVA_OPTS的定义的位置,然后添加。
1 [root@localhost solr-cloud]# vim tomcat01/bin/catalina.sh
2 [root@localhost solr-cloud]# vim tomcat02/bin/catalina.sh
3 [root@localhost solr-cloud]# vim tomcat03/bin/catalina.sh
4 [root@localhost solr-cloud]# vim tomcat04/bin/catalina.sh
现在,每个部署在tomcat下面的solr都有自己的独立的solrhome。在solr集群环境下, solrhome下面的配置文件应该只有一份,所以这里将配置文件上传到zookeeper,让zookeeper进行管理配置文件。将solrhome下面的conf目录上传到zookeeper。使用solr自带的工具执行,将cong目录上传到zookeeper。
注意:由于zookeeper统一管理solr的配置文件(主要是schema.xml、solrconfig.xml), solrCloud各各节点使用zookeeper管理的配置文件。./zkcli.sh此命令在solr-4.10.3/example/scripts/cloud-scripts/目录下。
1 [root@localhost solrhome01]# cd /home/hadoop/soft/
2 [root@localhost soft]# ls
3 apache-tomcat-7.0.47 jdk1.7.0_55 solr-4.10.3 zookeeper-3.4.6
4 [root@localhost soft]# cd solr-4.10.3/
5 [root@localhost solr-4.10.3]# ls
6 bin CHANGES.txt contrib dist docs example licenses LICENSE.txt LUCENE_CHANGES.txt NOTICE.txt README.txt SYSTEM_REQUIREMENTS.txt
7 [root@localhost solr-4.10.3]# cd example/
8 [root@localhost example]# ls
9 contexts etc example-DIH exampledocs example-schemaless lib logs multicore README.txt resources scripts solr solr-webapp start.jar webapps
10 [root@localhost example]# cd scripts/
11 [root@localhost scripts]# ls
12 cloud-scripts map-reduce
13 [root@localhost scripts]# cd cloud-scripts/
14 [root@localhost cloud-scripts]# ls
15 log4j.properties zkcli.bat zkcli.sh
16 [root@localhost cloud-scripts]# ./zkcli.sh -zkhost 192.168.110.142:2181,192.168.110.142:2182,192.168.110.142:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf
然后登陆zookeeper服务器查询配置文件,查看是否上传成功。上传成功以后所有节点共用这一份配置文件的。
1 [root@localhost cloud-scripts]# cd /usr/local/solr-cloud/
2 [root@localhost solr-cloud]# ls
3 solrhome01 solrhome02 solrhome03 solrhome04 start-zookeeper.sh status-zookeeper.sh stop-zookeeper.sh tomcat01 tomcat02 tomcat03 tomcat04 zookeeper1 zookeeper2 zookeeper3
4 [root@localhost solr-cloud]# cd zookeeper1/
5 [root@localhost zookeeper1]# ls
6 bin CHANGES.txt contrib dist-maven ivysettings.xml lib NOTICE.txt README.txt src zookeeper-3.4.6.jar.asc zookeeper-3.4.6.jar.sha1
7 build.xml conf data docs ivy.xml LICENSE.txt README_packaging.txt recipes zookeeper-3.4.6.jar zookeeper-3.4.6.jar.md5 zookeeper.out
8 [root@localhost zookeeper1]# cd bin/
9 [root@localhost bin]# ls
10 README.txt zkCleanup.sh zkCli.cmd zkCli.sh zkEnv.cmd zkEnv.sh zkServer.cmd zkServer.sh
11 [root@localhost bin]# ./zkCli.sh
然后将所有的tomcat启动即可。然后也写一个批处理启动tomcat的脚本。
1 [root@localhost solr-cloud]# vim start-tomcat.sh
2 [root@localhost solr-cloud]# ls
3 solrhome01 solrhome02 solrhome03 solrhome04 start-tomcat.sh start-zookeeper.sh status-zookeeper.sh stop-zookeeper.sh tomcat01 tomcat02 tomcat03 tomcat04 zookeeper1 zookeeper2 zookeeper3
4 [root@localhost solr-cloud]# chmod u+x start-tomcat.sh
5 [root@localhost solr-cloud]#
1 [root@localhost solr-cloud]# ./start-tomcat.sh
然后查看启动的状况,如下所示:
1 [root@localhost solr-cloud]# jps
10 [root@localhost solr-cloud]# ps -aux | grep tomcat
上图中的collection1集群只有一片,可以通过下边的方法配置新的集群。
如果集群中有四个solr节点创建新集群collection2,将集群分为两片,每片两个副本。
做到这里报了一堆莫名奇妙的错误,百度了很久,没有找到具体原因,就是起不来,可能是分配1G的内存太小了,我调到1.5G内存,然后将单机版solr,集群版solr,全部删除了,然后重新搭建,才成功了。如下图所示,这玩意,还是建议多研究,搭建的时候仔细点,不然一不小心就错了。
这内存显示都快使用完了,分配的1.5G内存,那之前的1G内存肯定是不够用了。
四、客户端如何通过zookeeper访问solr集群
@Test
public void testAddDocument() throws Exception {
// zkHost:zookeeper的地址列表
String zkHost = "192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183";
// 创建一个集群的连接,应该使用CloudSolrServer创建
CloudSolrServer solrServer = new CloudSolrServer(zkHost);
// 设置一个defaultCollection属性
solrServer.setDefaultCollection("collection2");
// 创建一个文档对象
SolrInputDocument document = new SolrInputDocument();
// 向文档中添加域
document.setField("id", "solrCloud01");
document.setField("item_title", "测试商品01");
document.setField("item_price", 123);
// 把文件内容写入索引库
solrServer.add(document);
// 提交
solrServer.commit();
}
五、常见问题
1、ZK集群中各个节点是如何建立关联的
zookeeper配置文件zoo.cfg配置文件配置集群中所有节点信息的
2、solr各个节点是如何关联的
solrhome中可以配置solrcloud节点信息
3、tomcat如何在ZK集群中注册的
tomcat catalina.sh 的启动参数中配置的
相关推荐
SolrCloud是Apache Solr的一种分布式部署模式,它利用Zookeeper进行集群管理和配置同步,提供高可用性和数据的水平扩展。在本篇中,我们将详细探讨如何安装配置SolrCloud 6。 首先,我们需要下载Solr 6.6.0的安装包...
在SolrCloud部署中,还需要注意以下要点: 1. 数据分割:索引数据被分成多个片段(Shards),每个片段可以分布在不同的物理节点上,以实现水平扩展。 2. Replication:每个片段都有一个或多个副本,提高了可用性和...
### SolrCloud 集群部署相关知识点 #### 一、SolrCloud基本概念与架构 **1.1 SolrCloud的关键概念** - **Core**:在传统的Solr单机环境中,Core通常指的是一个单独的索引。但在SolrCloud环境中,一个索引可能由多...
在部署 SolrCloud 之前,我们需要准备好运行 Solr 和 ZooKeeper 的 Linux 服务器。在这个案例中,我们选择两台机器作为 Solr 节点,三台机器作为 ZooKeeper 集群。每台机器应安装 CentOS 7.0 操作系统,并配置静态 ...
本文档是介绍在centos7系统上部署solrcloud的过程,涉及的技术包括:部署zookeeper、使用solr默认的jetty服务器初始化solrcloud、使用zookeeper管理solrcloud配置文件、在linux系统上安装python3、通过python3操作...
在本教程中,我们将深入探讨如何部署一个SolrCloud分布式集群,并安装Zookeeper集群,同时提供客户端的CRUD(创建、读取、更新、删除)操作实例。 一、Zookeeper集群安装 Zookeeper是Apache Hadoop项目的一个子项目...
#### 四、SolrCloud部署至Tomcat 1. **上传Solr.war包**:将预先下载好的Solr.war包上传至SolrCloud节点机器,例如`s1.solr.com`。 - 命令示例:`scp solr.war user@host:/home/myuser/solr-war` 2. **解压Solr...
在Windows环境下搭建SolrCloud环境涉及多个步骤,包括Zookeeper集群的配置、Solr的部署和配置等。通过上述详细介绍,读者应能够理解SolrCloud的工作原理及其实现过程,从而在实际项目中有效利用其强大的分布式搜索...
以下是对 SolrCloud 安装和使用进行的详细说明。 ### SolrCloud 安装步骤 1. **解压和部署**:首先,你需要解压缩 Solr 的发布包,例如 `solr-4.4.0`,然后将 `solr.war` 文件复制到 Tomcat 的 `webapps` 目录下。...
遵循单机部署的步骤安装Solr,但要注意配置文件中的`solrcloud`参数,将其设为`true`以启用SolrCloud模式。 ##### 2.2.2 修改 Solr 的启动脚本,添加 ZooKeeper 配置 在Solr的`bin/solr.in.sh`(Linux)或`bin\solr...
【Solr集群安装部署】 Apache Solr 是一个流行的开源全文搜索引擎,它提供了高效、可扩展的搜索和分析功能。在企业级应用中,通常需要部署Solr集群来实现高可用性和数据分布,以处理大量的索引和查询请求。以下是...
整个过程涵盖了操作系统的选择与配置、JDK 安装、Zookeeper 集群配置以及 Solr 集群的具体部署。这些步骤对于搭建一个稳定可靠的 SolrCloud 集群至关重要。此外,还需要注意的是,在生产环境中应考虑更多的容错机制...
SolrCloud是Apache Lucene项目下的一个分布式搜索和分析服务,它是Apache Solr的一个扩展,设计用于处理大数据和高可用性场景。...通过理解这些核心概念和机制,开发者可以更好地构建和维护大规模的SolrCloud部署。
SolrCloud是Apache Solr的一种分布式搜索和索引服务模式,它允许用户在多台服务器上部署和管理Solr实例,形成一个高可用、可扩展的搜索引擎集群。在这个集群中,数据分散存储并被索引,同时提供故障转移和负载均衡...
3. **部署Core**:每个Shard由多个Core组成,分布在不同的服务器上,实现负载均衡。 4. **监控与维护**:定期检查集群状态,及时调整Shard和Replica的数量以应对业务增长。 综上所述,SolrCloud不仅能够有效解决大...
一个简单的关于Solr集群部署的,SolrCloud集群架构图
【SolrCloud5.2.1 + Tomcat7 + Zookeeper3.4.6 集成详解】 在Windows 7环境下搭建SolrCloud5.2.1、Tomcat7和Zookeeper3.4.6的集成环境是进行分布式搜索和索引管理的重要步骤。下面将详细介绍整个配置过程。 1. **...
安装Zookeeper包括解压安装包、配置data和log目录、修改zoo.cfg配置文件、创建myid文件、将Zookeeper部署到所有节点并开启相应端口,最后启动Zookeeper服务。 5. **Solr集群安装**: - 创建SolrHome目录,并赋予...