SolrCloud安装手册基于solr
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
solrCloud集群安装手册—基于solrS. 2. 1
、SolrCloud 集群架构概览
1.1 SolrCloud 索引架构
SolKloud 的索引存储中,三台服务器都要存索引。
1.2 ZooKeeper 架构
ZooKeeper 集群,同时在三台服务器中配置ZooKeepero Shardl SolrCloud
shards
Shard2
其中每一个分片有两份数据,一个是leader^ 同机器上,可以保证在某一台服务器down 掉后, 另一个是备份。
分别存储在不 仍可提供完整的数据服务。
c a har d2
5 hards —♦114.212-83.243
0114.212.86.102
O1I4.212.82.189 • 114,212.83.243 0114.212-82489
—•114.212.86402
/
3.1JDK配置
(1)
解压JDK的压缩包至/usr/local/ U录下tar -zxvf JDK 压缩包位置-C /usr/local/
(2)
修改配置文件
vi /etc/profile
在下面添加如下内容
export JAVA_HOME=/usr/local/jdkl.8.0_45
exp ort CLASSPATH二•:${JAVA_HOME}/lib:${JAVA_HOME}/lib/tools・jar
export PATH=S{JAVA_HOME}/bin:$PATH
然后在命令行中输入source /etc/profile
输入命令java -version査看是否安装正确
3.2Tomcat 配置
(1)
解压tomcat的压缩包至/home/dell/sofhvare tl录下
tar -zx\・f ap aclie-tonicat-8.0.14.tar.gz
(2)
运行tomcat 中的staitiip.sh 运行tomcat
(3)
由于防火墙的原因无法访问8080端口,以下步骤为开放8080端口:
/sbin/iptables -I INPUT -p tcp -dport 8080 寸ACCEPT
service iptables save
service iptables restart
或者直接禁用防火墙:
停止/启动防火墙
/sbin/service ip tables restart "重启/sbin/service ip tables stop —停止/sbi n/service ip tables start -启动
1)重启后生效
开启: chkconfig ip tables on 关
闭:chkconfig iptables off
2)即时生效,重启后失效开启:service ip tables start 关闭:service ip tables
stop
然后访问服务器的8080端口査看tomcat是否安装正确。
(4)
修改tomcat 中confZsen erxnil 文件。
找到以下部分
<Connector port=”8080” protocol="HTTP/l.r* connectionTimeout="20000'* redkectPort="8443" />
修改为
<Connector port=£080” protocol="HTTP/l.r* connectioiiTimeout="20000'' rediiectPort="8443'*
URIEncodmg="UTF-8"
useBodyEncodingForURI=''tnie'*y^
3.3Mysql 配置
(可参考网站/hooperzao/article/details/25111321) (1)
在线安装mysql yum install -y inysql-sen'er mysql mysql-devel
査看已安装版本命令
ipni -qi niysql-senxr
开启MySQL服务
/etc/init.d/mysqld start (2)
修改MySQL中root初始密码
安装MySQL成功后root初始密码为空
进入MySQL 界面命令:mysql -u root -p
输入quit;退出mysql
修改初始化密码命令:mysqladniin -u用户名-p旧密码password新密码如:
mysqladniin -u root password '密码'
(3)
实现MySQL远程连接
进入MySQL界面(niyuser替换为用户名,mypassword替换为密码) mysql> GRANT ALL
PRRILEGES ON *.* TO 'myuseF@'%,IDENTIFIED BY -mypassword' WITH GRANT OPTION;
(4)
开启MySQL服务自动开启命令
chkconfig niysqld on
査看MySQL服务是否自动开启命令clikcoiifig —list I grep niysqld
(5) 重启mysql /etc/init.d/mysqld restart
3.4Solr 配置
(1)
我们这里使用SO11-5.2.1版本。
解压缩solr・521・tgz,得到solr・521文件夹。
(2)
将solr・521/server/webapps/ solr.war 复制到tomcat 的webapps 文件夹下,启动tomcat ${toincat_home}/biii/startiip.sh » webapps 下自动生成solr U 录。
关闭tomcat r 删除solr.war 包。
(3)
将soli-5.2.1/dist/tJ 录下的soli-<iataimporthandler-5.2.1 jar 和soli-dataimporthandler-extras-5.2.1 jar 复制到tomcat 下的solr/WEB-INF/lib 中 o
将soli'-5.2.1/sen'er/lib/ext U 录下的jar 文件复制到tomcat 下的sohvWEB- INF/lib 中
o
另外,将niysql-coimector-java-5.1.31-binjar 和IK-Analyzer-ForSoli'5jar 复制到solr/WEE
・INF/lib中。
(注意:solr5后的版本与IK最新的分词器不兼容,因此特别订定制了IK,见附件)
IK-Analyzer-ForSolr5 jar 是中文分词器mysql・connectoi・・java・5・l・26・bin・jar是java连接mysql数据库的驱动
打开apache-touicat-8.0.14/webapps/solr/^TB-INF/web.xnil
修改如下部分
<!-
<ein'-entiy>
<env-entiy-nanie>soli'/liome</ein'-entry-nanie> <env-entiy-
value>/putZyour/soli'/liome4iere</ein'-eiiti'y-value> <env-entiy-
type>iig.Stiiiig</enA'-entry-type>
</ein'-entiy>
->
改为
<ein'-entiy>
<env-entiy-name>soliVliome</env-entry-nanie> <env-entiy-
value>4iome/delksoftw'are/soli*home/</env-entiy-value> <env-entiy-
type>ng.Stiiiig</ein'-entry-type>
</ein'-entiy>
注意:要将注释符号去掉
(4)
将solr・521/server/solr/solr・xml 复制到/home/dell/software/solrfiome U 录下。
将jetty.port改为8080。
注意:这个8080是我们创建CoUection以及分片用的服务端口。
而不是用来指向tomcat的8080端口。
Vstr name="host''>$ {host: }</sti'>
<iiit iiame="hostPorf'>${jetty.port:8080}<Ziiit>
<sti' name="hostContext">S {liostContext:sok}</str>
(5)
在apache・tomcat・8014/\wbapps/solr/WEB・INF 下新建classes 文件夹,将solr-
5.2.l/seiver/resoiu'ces 下的log4j.properties 文件COPY 到classes 文件夹下。
这个是solr 的日志文件,方便solr出错的时候查看日志进行解决。
打开log4j.properties,配置日志文件路径
log4j.appender.file.File=/liome/dell/'softw'ai'e/sokhome4ogs/soli;log
(6)
运行tomcatr 访问http://192.168.10.201:8080/soli' 查看是否安装正确。
3.5ZooKeeper 配置
(可参考http://www.blogjava.Mt/helloyuii/archive/2012/05/03/377250.html)
这里以三台il•算机为例,分别为
114212.82.189 master
114.212.83.243 slave 1
114212.8 &102 slave2
可修改配置文ft/etc/liosts,添加
114.212.82.189 master
114.212.83.243 slave 1
114212.8 &102 slave2
(每台机器hosts文件此处配置部分保持一致) 然后运行命令source /etc/liosts
即可用master代替114.212.82,189等等
(1)
将ZooKeeper-3.4.6 压缩包解压至/liome/dell/sofhvare/ LI 录下。
进入ZooKeeper-3.4.6文件夹,在ZooKeeper-3.4,6文件夹中创建data文件夹和logs文件夹。
(2)
在ZooKeepei-3.4.6/conf 文件夹中创建文件zoo.cfgo
vi con£^zoo.cfg
在ZOO.cfg中P输入
tickTime=2000
<iataDir=/honie/dell/sofhvare/zookeeper-3.4.6/data <iataLogDir=/lionie/dell/sofhvare/zookeeper-
3.4.6/logs clientPort=2181
iiiitLiniit=5
syiicLunit=2
server. l=master:2888:3888
senxr.2=slavel:2888:3888
ser\xr.3=slave2:2888:3888
ser\'er.X=A:B:C其中X是一个数字,表示这是第儿号server。
A是该seiver 所在的IP 地址,B配置该server和集群中的Tder交换消息所使用的端口。
C 配置选举leader时所使用的端口。
(3)
在之前创建的data文件夹中创建一个myid文件。
写入一个数字,该数字表示这是第儿号server。
该数字必须和zoo.cfg文件中的seivei-.X中的X ------------- 对应。
即,若本机是server.】,则写入1。
3.6SolrCloud集成配置
(可参考/natureig/article/details/9109351)
(1)
任选一台机器上(如114.212.82.189 )创建SoliCloud配置文件U录
/liome/delL^sofh\'ai'e/sokconfig_files 和Solr Zk CLI 库文件U 录/home/dell/sofhvare/solrlib files
(2)
将solr-5.2.1/seiver/solr/configsets/sainple_techproducts_coiifigs/coiif 下的solr 票配置文件Copy到SolrCloud配置文件U录solrconfig_files中
将tomcat/webapps 中的solr WEB-INF/lib 中的jar 文件Copy 到Solr Zk CLI 库文件U录solrlib files中
打开三台服务器的zookeeper zookeeper-3.4,6/biii/zkSener. sh start
将SolrCloud的配置文件上传到ZooKeeper中,在命令行中输入
java -classpath j4iome/delVsofhvare/solrlib_files/* org.apache.solr.cloud.ZkCLI -cind
upcoiifig -zkliost 114.212.82.189:2181,114.212.83.243:2181,114.212.86.102:2181 - confdir
/home/dell/sofh\^are/solrconfig_files/ -confiiaine iipconf
可使用次配置直接创建collection,在浏览器中输入
http:〃114・212・82・189:8080/solr/admin/collections?actioii=create &name=coHechonl
& numShards=3 &rep licationFactor=2 &inaxShardsPerNode=2&coHection・confi2Nam e=iipconf
这条指令的各参数意义如下:
可连上zookeeper,査看配置信息
cd zookeeper/bin
./zkCli.sh •server localhost:2181
执行查询命令;Is/configs/mycoiifr即可看到上传到ZooKeeper的所有配置信息
也可在命令行中输入指令改变某一collection的配置, java -
classpath .:/honie/dell/sofh\^are/solrlib_files/* org.apache.solr.cloud.ZkCLI -cmd liiikconfig -collection collection! -confiianie coiifl -zkhost
114212.82.189:2181,114.212.83.243:2181314.212.86.102:2181
(4)
进入tomcat U 录下r 修改bin/catalina.sh 在开头的注释之后
# OS sp ecific sup port $var _must_ be set to either true or false. 的上面添加一行:
export JA\^_OPTS="SJA\A_OPTS
DzkHost=master:2181,slavel:2181,slave2:218r'
(5)
启动各服务器的tomcat: apache-tomcat-&0・14/bin/startup・sh
访问solr管理页:httD://114・212・82・189:8080/solr査看状态
4.1简介
Solr官方提供了很强大的Data Import Request Handler»同时提供了一个简单的Scheduler^ Url:http:〃wiki・apacheQrg/$oli7DatalmportHandler・
(原定时器作者是:Marko Bonaci,在此表示感谢!)The original Scheduling source by Marko Bonacv Thaiik him!
4.2使用说明
将apache-soli'-dataimpoitscheduler-niodifiedjar (官方提供的dataiinportscheduler 有POST BUG 请使用该修正版jar包在附件当中)和solr自带的apache-solr- dataimpoilhaudler-jar, ap ache-solr-dataim porthandlGr*extras・・jar 放至U
tomcat/solivWEB-INF 的lib U 录下面修改solrwar 中WEB-INF/web.xml,在servlet 节点前面增加:
<1istener>
<1istener-class>
org.apache.solr.handler.data彳mport.scheduler.App巧cationListener
</listener-c1ass>
</listener>
将apache-soli-dataimportscheduler-.jar 中dataimport.properties 取出并根据实际情况修改,然后放到solrhome/conf (不是solrhome/collection1/conf)目录下面巫启tomcat或者jboss即可
dataimport. properties 配置说明
syncEnabled:是否定激活时索引,1激活,其他不激活syncCores :要索弓I 的core 或collection server: solr服务器ip地址
Port: tomcat 下solr 应用端口
webaPP: tomcat 下solr 应用名称
params :其中entity参数代表data-config.xml中要索引的数据源,不指定则索引所有数据源
interval:^引间隔时间(分)
dataimport.properties 文件示例
#dataim po rt.properties exam pie
#
#From this exam pie, copy everyth! ng bellow "datai mport scheduler properties" to your
#dataim portp roperties file and then cha nge pa rams to fit your n eeds
#
#IMPORTANT:
#Regardless of whether you have single or multiple-core Soli;
#use dataimportproperties located in your solr.home/conf (NOT
solrhome/core/conf)
#For more info and context see here:
#
http://wiki.a pacheerg/solr/Datalm po rtHandler#dataim portprop erties_exa mple
#Tue Jul 21 12:10:50 CEST 2010 stjndex_time=2010-09-20 11\:12\:47 last_index_time=2010-09-20 11\:12\:47
############################################## ###
#
#
# dataimport scheduler
properties # #
# ############################################## ###
# to sync or not to sync
# 1 • active; anything else - inactive syn cEnabled=l # which cores to schedule
# in a multi-core environment you can decide which cores you want syncronized #
leave empty or comment it out if using single-core deployment syn
cCores=collectio nl # solr server name or IP address
# [defaults to localhost if empty] servers localhost # solr server port
# [defaults to 80 if empty] port=8080 # application name/context
# [defaults to current ServletContextListener's context (app) name] weba pp=solr # URL params [mandatory] #
remainder of URL
p arams=/select?qt=/datai mport&co mma nd=delta-
import&clean=false&commit=true&entity= DT_CLEAR_DATA_SLAVE1
# # #
[defaults to 30 if empty] interval=10
例如,我们实验室soircloud 中的data-config.xml 中配置的entity 名称为
DT_CLEAR_3ATA_SLAVEi . DT_CLEAR_DATA_SLAVE2我们三台机器中的参数分别指宦『上述两个 entity. W 此soIrCloud 会定期对两个数据源分别做索引,做到完全无人值守。
dataimport scheduler properties
schedule interval number of minutes between two runs
<dataConfig>
<dataSource name="slave1"
type="JdbcDataSource" driver=''coin. mysql. jdbc • Driver'"
url="jdbc:my3ql://slave!:3306/II?DATA?useUnicode=trueScharacterEncoding=UT
U3er="rcot'* pa33word= "root." batchSi2e="-l'* />
<dataSource naEne="»lave2"
type="JdbcDataSource" driver=''coin. mysql. jdbc • Driver"
url="jdbc:my3ql://51ave2:3306/II?DATA?U5eUnicode=trueScharacCerEncoding=UT
P-8"
U3er="rcot'* pa33word="root" batchSi2e="-l'* />
<document>
<entity name="DT_CLEAR_DATA_SLAVE 1" pk="ID'' dataSource='*siavel" query="SELECT * FROM DT_CLEAR_DATA" deltaImportQuery="SELECT * FROM
■ S{data±mporter .delta. ID} ' deltaQuery="SELECT ID DT_CLEAR_DATA where ID =
PROM DT CLEAR DATA WHERE INPUTTIME >
'S{dataimporter.DT_CLEAR_DATA_5t_index_time}'"> <field
column="'ID" nafne="xd" />
<field columra=''CATEGORY" name="category" />
coiuran="SOURCE" name="3ource'* />
coiuTnn="SITENAMS" name="sitena:ne" />
coiuinn="CHANNEL" name="channel"/>
<fxeld <field
coiujmn="URLNAME" name="urlnatne"
coiujmn="URL" name='*url" />
coiumn="TITLE" naine='*title/>
column="HERPTEXT" narae='*herftext"
column="TSXT" nan^e="text" />
column="'HTKLTEXT" name='*htmitext"
/>
/>
/>
<fleld coiuran="TEXTCODS'' name="textcode'' /> <field column="INPUTTIME" name='*inputtime'* /> <field column="'PUB DATE'* name="pubdate" />
通过api 配置
/admin/collections?action=ADDREPLICA&collection=co
』2ection&shard=
shard &node=so 』〔RodLGanie
Add a replica to a shard in a collection. The node name can be specified if the
<fleld coluinn="BATCHNO" name="batchno*' />
</entity>
<entity
name='*DT_CLEAR_3ATA_SLAVE2" pk=''ID" dataScurce="slave2" query="SELECT * FROM DT_CLEAR_DATA" deltaImportQuery="SELECT * FROM
DT CLEAR DATA xvhere ID = ' S {dataimporter . delta. ID}' deltaQuery="SELECT ID FROM DT CLEAR
._3ATA WHERE INPUTTIME >
■5{dataimporter -DT^CLEAR^DATA^SLAVE :.la3t_index_time}'">
<field column="lD"
/>
<fleld column 二"CATEGORY" name="category" />
coiuTnn="SOURCE" name="source/> coiuran="SITENAME" name="si t 色/> coiuinn="CHANNEL" naEne="channel'' /> <fxeld coluinn="URLNAME" name="urlname'' coiumn="URL" name='*url" />
coiumn="TITLE" name='*title" />
column= "HSRFTEXT" naTne="herf text*' column="TSXT" name="teMt'* /> column="HTMLTEXT" name="htmitext''
/>
/> /> <field coiuTnn="TEXTCODS'' name="texCcode" /> <field column="'INPUTTIME" name="inputtiine'* /> <field column="PUSDATE'* naTae="pubdate" />
<field coiuTnn="BATCHNO" name="batchno'' />
</entity>
</document 〉 </dataConfig>
五、 可选
5.1 Add Replica
replica is to be created in a specific node
Input
Query Parameters
Type Required Descri pdon
Kev
■
collection string Yes The name of the collection.
shard siring No The name of the shard to which replica is to
be added. Either shard or _route_ must be
provided
_route_ stiing No If tlie shard name is not known Jusf pass
the _route_ value and the system would
identify the name of the shard node string No The name of the node where the replica
should be created
uistanceDu' stiing No Tlie instanceDir for the core that will be
created
dataDir string No Tlie directory in which the core should be
created
prop eYty,name=\vhie string No Set core property name to value. See
coreproperties file contents.
async string No Request ID to track this action which
will be processed asynchronouslY
Exam pies
Input
http: //localhost: 8983/solr/admin/col lect ions?act ion=ADDRE PLICA&collection=test2&shar( Output
Output Content
<response>
<lst name="responseHeader">
<int name="status">O〈/int>
<int name二"QTime">3764〈/int> </lst>
<lst name="success">
<lst>
<lst name="responseHeader">
<int name=^status^>0</int>
<int n€une="QTiine">3450〈/int 〉 </lst>
<str name="core">test2_shard2_replica4〈/str>
</lst>
</response>
(2)手动配置
在 U 标机 器的 /liome/delVsofhvare/ 下建立 collection U 录 collectionl_shaidl_replica2,»
该名称代表 collection!下分片 1 (shardl)的第二个 副本(replica2 ) U 录,在 collection 1 _shard 1 _replica2 下建立一个空文件 core.properties,填入以下内容。
by Core Prop ertiesLocator
牡MdNov 19 13:03:27 CST 2014
iuunShards=3
naine=collectionl_shardl_replica2 shard=shardl
collection=collectionl coreNodeName=core_node3
(注意:内容需酌悄修改)
内容描述:
numShards:分片数量 name :副本名称,同U 录名 shard:属于哪一个分片的副本 collection:属于哪一个集合
coreNodeName:jlf 点名称,不能与其他节点名称相同,如果相同,后进入集 群
的节点将取代之前进入的节点工作。
启动所有tomcat 节点
♦ 1L4・2
」2・83・243
0114.212,86-102 0114.212,82.189 ♦ 1L4.212.83.243
0114.212.82.189
<114.212.86,102
至此,3节点3分片2备份的sohCloud 搭建完成
shard I
3hard3。