搭建SolrCloud的详细步骤

article/2025/11/4 16:09:35

###一、需求
SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。
当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求。SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心。

######它有几个特色功能:
集中式的配置信息
自动容错
近实时搜索
查询时自动负载均衡

######需要实现的solr集群架构
需要实现的solr集群架构

######Zookeeper作为集群的管理工具。
集群管理:容错、负载均衡。
配置文件的集中管理
集群的入口

为实现zookeeper 高可用,需要搭建集群。建议是奇数节点,最少需要三个zookeeper服务器。

######搭建solr集群需要7台服务器。
搭建伪分布式:
需要三个zookeeper节点
需要四个tomcat节点。

######环境准备:
CentOS-6.5-i386-bin-DVD1.iso
jdk-7u72-linux-i586.tar.gz(建议虚拟机的内存1G以上。)
apache-tomcat-7.0.47.tar.gz
zookeeper-3.4.6.tar.gz
solr-4.10.3.tgz

###二、Zookeeper集群搭建
#####第一步:在Linux下,需要安装jdk环境。
#####第二步:把zookeeper的压缩包上传到服务器。
#####第三步:解压缩。

#####第四步:把zookeeper复制三份。
[root@localhost ~]# mkdir /usr/local/solr-cloud
[root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper01
[root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper02
[root@localhost ~]# cp -r zookeeper-3.4.6 /usr/local/solr-cloud/zookeeper03
#####第五步:在每个zookeeper目录下创建一个data目录。
#####第六步:在data目录下创建一个myid文件,文件名就叫做“myid”。
内容就是每个实例的id。这里分别为1、2、3

[root@localhost data]# echo 1 >> myid
(创建一个名为myid的文件,并向文件中加入1,另外两个同理,也可用touch myid创建文件,vim myid 向文件中写入)[root@localhost data]# ll
total 4
-rw-r--r--. 1 root root 2 Apr  7 18:23 myid
[root@localhost data]# cat myid 
1

#####第七步:修改配置文件。把conf目录下的zoo_sample.cfg文件改名为zoo.cfg

[root@Solr zookeeper01]# cd conf
[root@Solr conf]# ll
总用量 12
-rw-r--r--. 1 root root  535 3月  22 08:43 configuration.xsl
-rw-r--r--. 1 root root 2161 3月  22 08:43 log4j.properties
-rw-r--r--. 1 root root  922 3月  22 08:43 zoo_sample.cfg
修改:
[root@Solr conf]# mv zoo_sample.cfg zoo.cfg
[root@Solr conf]# ll
总用量 12
-rw-r--r--. 1 root root  535 3月  22 08:43 configuration.xsl
-rw-r--r--. 1 root root 2161 3月  22 08:43 log4j.properties
-rw-r--r--. 1 root root  922 3月  22 08:43 zoo.cfg修改每个实例的配置文件:zoo.cfg[root@Solr conf]# vim zoo.cfg 
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/solr-cloud/zookeeper01/data/(当前实例的data目录)
# the port at which the clients will connect
clientPort=2181(端口号,不能重复2181,2182,2183)
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=192.168.25.130:2881:3881
server.2=192.168.25.130:2882:3882
server.3=192.168.25.130:2883:3883
(每个实例的都一样)
~
~

#####第八步:启动每个zookeeper实例(启动之后先不要关闭,后面搭建solr集群的时候要用到)
[root@Solr solr-cloud]# ll
总用量 12
drwxr-xr-x. 11 root root 4096 3月 22 08:46 zookeeper01
drwxr-xr-x. 11 root root 4096 3月 22 08:46 zookeeper02
drwxr-xr-x. 11 root root 4096 3月 22 08:46 zookeeper03

启动脚本:
[root@Solr solr-cloud]# vim start-zookeeper.sh
cd zookeeper01/bin
./zkServer.sh start
cd ../../
cd zookeeper02/bin
./zkServer.sh start
cd ../../
cd zookeeper03/bin
./zkServer.sh start
cd ../../"start-zookeeper.sh" [新] 9L, 147C 已写入                                                             
[root@Solr solr-cloud]# ll
总用量 16
-rw-r--r--.  1 root root  147 3月  22 09:24 start-zookeeper.sh
drwxr-xr-x. 11 root root 4096 3月  22 08:46 zookeeper01
drwxr-xr-x. 11 root root 4096 3月  22 08:46 zookeeper02
drwxr-xr-x. 11 root root 4096 3月  22 08:46 zookeeper03
[root@Solr solr-cloud]# chmod +x start-zookeeper.sh启动:
[root@Solr solr-cloud]# ./start-zookeeper.sh 
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper01/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper02/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper03/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@Solr solr-cloud]#状态脚本:
[root@Solr solr-cloud]# vim status-zookeeper.sh
cd zookeeper01/bin
./zkServer.sh status
cd ../../
cd zookeeper02/bin
./zkServer.sh status
cd ../../
cd zookeeper03/bin
./zkServer.sh status
cd ../../
"status-zookeeper.sh" [新] 9L, 150C 已写入                                                            
[root@Solr solr-cloud]# chmod +x status-zookeeper.sh 查看状态:
[root@Solr solr-cloud]# ./status-zookeeper.sh 
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper01/bin/../conf/zoo.cfg
Mode: follower
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper02/bin/../conf/zoo.cfg
Mode: follower
JMX enabled by default
Using config: /usr/local/solr-cloud/zookeeper03/bin/../conf/zoo.cfg
Mode: leader
[root@Solr solr-cloud]#

从上面的状态可以看出zookeeper03为内部选举出来的leadder。

zookeeper集群搭建成功!

###三、Solr集群的搭建

#####第一步:创建四个tomcat实例。每个tomcat运行在不同的端口。8180、8280、8380、8480

[root@Solr ~]# cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat01
[root@Solr ~]# cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat02
[root@Solr ~]# cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat03
[root@Solr ~]# cp -r apache-tomcat-7.0.52 /usr/local/solr-cloud/tomcat04[root@Solr solr-cloud]# vim tomcat01/conf/server.xml
进行如下修改:

这里写图片描述
这里写图片描述
这里写图片描述

其他tomcat操作一样,端口不能冲突。
vim tomcat02/conf/server.xml(8205、8280、8209)
vim tomcat03/conf/server.xml(8305、8380、8309)
vim tomcat04/conf/server.xml(8405、8480、8409)

#####第二步:部署solr的war包。把单机版的solr工程复制到集群中的tomcat中(首先要已经安装好单机版的solr)。
cp -r …/tomcat/apache-tomcat-7.0.52/webapps/solr/ tomcat01/webapps/
cp -r …/tomcat/apache-tomcat-7.0.52/webapps/solr/ tomcat02/webapps/
cp -r …/tomcat/apache-tomcat-7.0.52/webapps/solr/ tomcat03/webapps/
cp -r …/tomcat/apache-tomcat-7.0.52/webapps/solr/ tomcat04/webapps/

#####第三步:为每个solr实例创建一个对应的solrhome。使用单机版的solrhome复制四份(首先要已经安装好单机版的solrhome)。
[root@Solr solr-cloud]# cp -r …/solrhome/solr/ solrhome01/
[root@Solr solr-cloud]# cp -r …/solrhome/solr/ solrhome02/
[root@Solr solr-cloud]# cp -r …/solrhome/solr/ solrhome03/
[root@Solr solr-cloud]# cp -r …/solrhome/solr/ solrhome04/
[root@Solr solr-cloud]# ll
总用量 52
drwxr-xr-x. 4 root root 4096 3月 22 10:07 solrhome01
drwxr-xr-x. 4 root root 4096 3月 22 10:07 solrhome02
drwxr-xr-x. 4 root root 4096 3月 22 10:07 solrhome03
drwxr-xr-x. 4 root root 4096 3月 22 10:07 solrhome04
-rwxr-xr-x. 1 root root 147 3月 22 09:24 start-zookeeper.sh
-rwxr-xr-x. 1 root root 150 3月 22 09:31 status-zookeeper.sh
drwxr-xr-x. 9 root root 4096 3月 22 10:04 tomcat01
drwxr-xr-x. 9 root root 4096 3月 22 09:45 tomcat02
drwxr-xr-x. 9 root root 4096 3月 22 09:45 tomcat03
drwxr-xr-x. 9 root root 4096 3月 22 09:45 tomcat04
drwxr-xr-x. 11 root root 4096 3月 22 08:46 zookeeper01
drwxr-xr-x. 11 root root 4096 3月 22 08:46 zookeeper02
drwxr-xr-x. 11 root root 4096 3月 22 08:46 zookeeper03

#####第四步:需要修改solr的web.xml文件。把solrhome关联起来。
[root@Solr solr-cloud]# vim tomcat01/webapps/solr//WEB-INF/web.xml
这里写图片描述

其他三个同理

#####第五步:配置solrCloud相关的配置。每个solrhome下都有一个solr.xml,把其中的ip及端口号配置好。
这里写图片描述

	host:Linux的iphostPort:分别为tomcat的端口号8180、8280、8380、8480

#####第六步:修改tomcat/bin目录下的catalina.sh (237行)文件,关联solr和zookeeper。
把此配置添加到配置文件中(每个tomcat中都加):
JAVA_OPTS="-DzkHost=192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183"
这里写图片描述

#####第七步:让zookeeper统一管理配置文件。需要把solrhome/collection1/conf目录上传到zookeeper。上传任意solrhome中的配置文件即可。
使用工具上传配置文件:/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh

./zkcli.sh -zkhost 192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183-cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf查看zookeeper上的配置文件:
使用zookeeper目录下的bin/zkCli.sh命令查看zookeeper上的配置文件:[root@localhost bin]# ./zkCli.sh (默认连到2181,指定:./zkCli.sh -server 192.168.25.130:2182)
[zk: localhost:2181(CONNECTED) 0] ls /
[configs, zookeeper][zk: localhost:2181(CONNECTED) 1] ls /configs
[myconf]
[zk: localhost:2181(CONNECTED) 2] ls /configs/myconf[admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt,_schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, 
_schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt,admin-extra.html, xslt, synonyms.txt, scripts.conf, update-script.js,velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]退出:
[zk: localhost:2181(CONNECTED) 3] quit

#####第八步:启动每个tomcat。(zookeeper集群为启动状态)

创建脚本启动:
[root@Solr solr-cloud]# vim start-tomcat.sh/usr/local/solr-cloud/tomcat01/bin/startup.sh
/usr/local/solr-cloud/tomcat02/bin/startup.sh
/usr/local/solr-cloud/tomcat03/bin/startup.sh
/usr/local/solr-cloud/tomcat04/bin/startup.sh

#####第九步:开启Linux的端口号,供外部访问。
solr:
/sbin/iptables -I INPUT -p tcp --dport 8180 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8280 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8380 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8480 -j ACCEPT

zookeeper:
/sbin/iptables -I INPUT -p tcp --dport 2181 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2182 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 2183 -j ACCEPT/etc/rc.d/init.d/iptables save
查看状态:
/etc/init.d/iptables status

图片去旅游了

solr集群搭建成功!

#####第十步:访问集群。
地址:192.168.25.130:8180/solr

这里写图片描述

####第十一步:创建新的Collection进行分片处理。
http://192.168.25.130:8180/solr/admin/collections?
action=CREATE&name=collection2&numShards=2&replicationFactor=2
成功:
这里写图片描述

这里写图片描述

#####第十二步:删除不用的Collection。
http://192.168.25.130:8180/solr/admin/collections?action=DELETE&name=collection1
这里写图片描述

这里写图片描述

SolrCloud搭建成功…

####测试

@Testpublic void addDocument() throws Exception {// 创建一个SolrServer对象,需要使用CloudSolrServer子类。构造方法的参数是zookeeper的地址列表。CloudSolrServer solrServer = new CloudSolrServer("192.168.25.130:2181,192.168.25.130:2182,192.168.25.130:2183");// 设置DefaultCollection属性solrServer.setDefaultCollection("collection2");// 创建SolrInputDocument对象SolrInputDocument document = new SolrInputDocument();// 向文档对象中添加域document.addField("id", "test001");document.addField("item_title", "测试商品");// 把文档对象写入索引库solrServer.add(document);// 提交solrServer.commit();}
欢迎关注公众号:【皮卡战记】

在这里插入图片描述


http://chatgpt.dhexx.cn/article/wuw9tcMw.shtml

相关文章

SolrCloud Collection 创建

环境版本: CDH 5.12.0; Solr 4.10.3 CDH搭建SolrCloud集群十分方便,添加服务->solr->选择主机->next即可 在SolrCloud中,跨多个节点的索引分割称为集合(collection),见下图: [root@DXHY-YFEB-01 solr]# pwd /var/lib/solr [root@DXHY-YFEB-01 solr]# mv Invoi…

solrcloud集群搭建

什么是SolrCloud 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大&#xff0c…

Apache SolrCloud介绍及安装

SolrCloud介绍 在我们应用还很渺小的时候,一台Solr服务器能完全胜任这份工作,随着我们应用慢慢长大,访问也越来越多,一台Solr服务器的弊病也逐渐显现如查询变慢了,机器宕机就无法继续提供服务,于是乎我们引…

solr集群(solrcloud)部署搭建

简介 SolrCloud 旨在提供一个高度可用、容错的环境,用于跨多个服务器分发索引内容和查询请求。它是基于 Solr 和Zookeeper的分布式搜索方案,它的主要思想是使用 Zookeeper作为集群的配置信息中心。它是灵活的分布式搜索和索引,无需主节点来分…

SolrCloud之solr单机搭建使用

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 随着互联网技术的不断迭代更新,分布式技术也越…

SolrCloud 搭建之 zookeeper搭建

系列文章目录 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 随着互联网技术的不断迭代更新,分布式技术也越来越重要,很多人都开启了学习模式,本文就介绍了solr搭建及使用的基础…

solrCloud搭建及演化

系列文章目录 第一章 zookeeper的搭建 及启动脚本 第二章 solr单机搭建使用 第三章 solrCloud搭建及演化 文章目录 前言 solr是一个web项目,上一节我们部署了solr的单机版,实际上solrcloud是多个tomcat的组合,将多个tomcat部署之后&#…

SolrCloud原理

本文为调研分布式检索系统的笔记整理,之前调研sphinx和coreseek的时候,发现国内的博客,还是讲怎么配置怎么安装多,原理性的东西并不多。本文为:官网文档阅读笔记(有些会附带上文档英文原文, 如果…

SolrCloud简介

原文地址:http://www.chepoo.com/solrcloud-introduction.html 一.简介 SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布式搜索方案。SolrCloud是Solr的基于Zookeeper一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-S…

Solr云(SolrCloud)

SolrCloud只是作为Solr的一个突出特性,这个特殊的特性能够实现分布式功能。利用这个功能,你能建立高效、容错的Solr服务器群。这对于访问量规模巨大的企业级应用来说,使用SolrCloud能实现高有效性、容错性、分布式索引和搜索功能。 1 了…

solrcloud入门详细使用教程

一、solrcloud介绍 solrcloud是solr提供的分布式的搜索方案,当我们需要大规模,容错,分布式搜索和索引时使用solrcloud。当系统的索引量少,请求并发性低的时候不需要用到solrcloud。solrcloud是基于solr和zookeeper的分布式搜索方案…

Solr--SolrCloud简介与集群搭建

Solr 集群(SolrCloud) 1 什么是 SolrCloud SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用 SolrCloud 的,当索引量很大…

SolrCloud详解及搭建

1. 什么是SolrCloud 1.1. 什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大&am…

SolrCloud简介——solr 名词解释

转自——找不到出处了。。 一.简介 SolrCloud是Solr4.0版本以后基于Solr和Zookeeper的分布式搜索方案。SolrCloud是Solr的基于Zookeeper一种部署方式。Solr可以以多种方式部署,例如单机方式,多机Master-Slaver方式。 二.特色功能 SolrCloud有几个特色…

MySQL全文索引功能

说明自然语言全文索引布尔全文索引 相关性计算 扩展查询 官网地址:https://dev.mysql.com/doc/refman/5.7/en/fulltext-search.html 说明 简介 1).MySQL中的全文索引是FultLeXT类型的索引。 2).全文索引只能用于InnoDB或MyISAM表,只能为CHAR、VARCHAR或文本列创建…

Mysql——全文索引

概念: 一般查询都是根据数值范围或者精准的字符串进行数据过滤查询,而全文索引则通过关键字的匹配来进行查询过滤,那么就需要基于相似度的查询,而不是原来的精确数值或字符串比较。 版本支持: 在MySQL 5.7.6之前&am…

全文索引原理详解

一、总论 根据http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的…

mysql 全文索引使用以及限制

项目场景: 最近在做性能优化,有使用到全文索引,做下记录。 问题描述 我们在做列表查询的时候,大多数情况都会遇到 like %%的查询,而这种查询会让索引失效 在数据量较大的时候,会让查询变得很慢&#xff0…

Mysql全文索引解析

parser与N-gram Parser分词器选择 及 ft_min_word_len与innodb_ft_min_token_size的区分及界定 学习《高性能mysql(第三版)》这本书时,学到了全文索引这一张节,但作者当时使用的版本是MySQL 5.5,届时只有MyISAM引擎支…

全文索引原理介绍

一、总论 根据http://lucene.apache.org/java/docs/index.html 定义: Lucene 是一个高效的,基于Java 的全文检索库。 所以在了解Lucene之前要费一番工夫了解一下全文检索。 那么什么叫做全文检索呢?这要从我们生活中的数据说起。 我们生活中的…