solr的master-slave和Multiple Cores
Solr继续学习中,感觉Solr的multicore主要用途有两个:
1、充分利用服务器资源。在一台服务器上部署不用的搜索应用。
2、提高一个应用服务能力,在服务器上同时部署同一个应用的多个core,这些core共用一份索引数据(对Solr的运行机制不了解,不知道Solr并发能力怎么样)。
在基于Solr的列车时刻表查询服务基础上,我又搭建了一个身份证区域查询服务。这两个服务分别放在两个core中。Solr中配置多core是非常简单的,只要将example/multicore拷贝到某个目录,然后设置”-Dsolr.solr.home=/path/to/multicore”。每个core有自己的schema.xml和solrconfig.xml文件。通过下面这个url可以看到所有的core列表。
?1http://localhost:8080/solr/
这个身份证区域查询服务可以通过身份证号码中的区位码查询其对应的地区,也可以根据地区名查询其区位码。这里就需要对中文进行分词,可以使用Solr内置的CJK分词器来简单地做分词(2-gram)。另外我要将用户搜索记录保存到日志中,对于互联网应用来说,搜索日志是宝贵的资源,感觉Solr对这块支持还比较薄弱。
1、CJK分词。
?01020304050607080910111213141516171819202122232425262728<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
?<
schema
name
=
"example"
version
=
"1.2"
>
???
<
types
>
????
<
fieldType
name
=
"sint"
class
=
"solr.SortableIntField"
sortMissingLast
=
"true"
omitNorms
=
"true"
/>
?????
<
fieldtype
name
=
"cjktext"
class
=
"solr.TextField"
>
????????????????
<
analyzer
>
????????????????????????
<
tokenizer
class
=
"solr.CJKTokenizerFactory"
/>
????????????????
</
analyzer
>
????
</
fieldtype
>
???
</
types
>
??
<
fields
>
????
<
field
name
=
"region_id"
type
=
"sint"
indexed
=
"true"
stored
=
"true"
/>
???
<
field
name
=
"region_name"
type
=
"cjktext"
indexed
=
"true"
stored
=
"true"
/>
?
</
fields
>
??
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
?
<
defaultSearchField
>region_id</
defaultSearchField
>
??
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
?
<
solrQueryParser
defaultOperator
=
"OR"
/>
?</
schema
>
2、保存日志。参考Solr 使用 Log4j。发现最后产生的日志信息太多了,要想想怎么将查询日志和操作日志分离开。
?
?
?
?
需求:
1. 实现SOLR主,辅服务器更新同步,每次客户端COMMIT请求都会及时应用在辅服务器上。
2. 实现MULTICORE,实际生产环境中往往会有多个搜索应用实例。
?
步骤:
一、准备条件
1. 服务器准备
准备两台服务器:
一台用作主服务器(192.168.0.36),负责分发索引
另一台负责辅服务器(192.168.0.46),负责承载搜索服务。
2.软件环境
Linux版本不限,32,64位不限
应用容器:TOMCAT 6.0
JAVA版本:JDK1.6以上版本
Solr应用环境目录: /solr/video/ (可使用ln –s 创建软连接) 和 /solr/album/ (本例设定为两个应用:实际情况可自由增减 )
Solr索引目录:/solr/data /album 和 /solr/data/video
3. 划分应用
本例中划分两个应用 专辑 album 和 视频 video
?
4. 基础目录创建(主,辅均需配置)
a)在 /solr/ 应用环境目录下创建两个目录:album 和 video
b)分别将SOLR安装目录下Solr/example/solr/conf文件夹至这两个目录
c)分别复制安装目录solr/src/scripts文件夹至 album 和 video目录,并将script改名为bin(后续要用到)
d)按照特定需求分别修改索引字段结构文件: schema.xml(有关此文件的配置不再撰述) e)复制 Solr/example/multicore 下的solr.xml文件至 应用环境根目录:/solr/ f)创建索引目录 /solr/data/album 和 /solr/data/video
?
二、 配置MULTICORE(主,辅均需配置)
划分业务类型,如做一个视频搜索引擎需要专辑和视频两大应用,则:
1)配置SOLR业务类型:在 /solr/下 编辑solr.xml文件
?
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
修改为
<core name="album" instanceDir="album" />
<core name="video" instanceDir="video" />
?
2)指定索引目录,进入/solr/album/conf目录,打开编辑器修改solrconfig.xml,找到
<dataDir> 节点,将真正的目录“/solr/data/album”替换掉原有数据。(视频应用步骤与此相同。)
?
三、 配置分布式应用(以下均在主服务器上配置)
?
1) 分别修改分布式分发脚本: scripts.conf
?
(/solr/album/bin 和 /solr/video/bin)
?
#触发外部命令所使用的用户
user=haiting
#本地机器名
solr_hostname=localhost
#本地SOLR开放的端口(及TOMCAT 服务端口)
solr_port=9001
#分发脚本使用的RSYNC服务端口,业务端口要区分开,在本例中,album为19001,video为19002,客户端与服务端端口设置需一致,否则会导致SNAPPULLER过程失败。 rsyncd_port=19001
#索引文件路径
data_dir=/solr/data/album
#TOMCAT容器中SOLR服务名(默认不变)
webapp_name=solr
#主服务器IP(主与辅同配置)
master_host=192.168.0.46
#主服务器索引文件路径
master_data_dir=/solr/data/album
#主服务器状态过程日志存放目录
master_status_dir=/solr/status/album
?
2)修改脚本所在默认路径
(通过修改scripts-util公用脚本实现)
找到该文件所在路径:/solr/album/bin和/solr/video/bin
第27行
confFile=${solr_root}/conf/scripts.conf
修改为:
confFile=/solr/bin/album/conf/scripts.conf
和
confFile=/solr/bin/video/conf/scripts.conf
注明:不进行此步骤会造成SOLR外部调用监听器执行会失败(/solr/)
?
3)修改主配置文件solrconfig.xml
?
找到以下目录:/solr/album/conf和 /solr/video/conf
分别修改两个应用的 COMMIT监听器,使得SOLR接收到COMMIT请求时,自动调用外
部命令snappuller
?
找到 postCommit 节点,配置后的节点如下所示:
<listener event="postCommit" style="color: #000000; font-family: Simsun; font-size: 16px; line-height: 28px;"><iframe id="cproIframe21383726403019" src="http://cpro.baidu.com/cpro/ui/uijs.php?rs=0&tu=u1138180&tn=baiduTlinkInlay&n=00009009_cpr&adn=24&rsi1=92&rsi0=708&rad=&rss0=%23FFFFFF&rss1=%23FFFFFF&conOP=1&rss2=%23ff0000&rss3=&rss4=&rss5=&rss6=%23e10900&rsi5=4&ts=1&at=103&ch=0&cad=1&aurl=&rss7=&cpa=1&fv=11&cn=0&if=16&word=http%3A%2F%2F3y.uu456.com%2Fbp-2debfb010740be1e6s0e9aeb-1.html&refer=https%3A%2F%2Fwww.google.com.hk%2F&ready=1&jk=d341638eaace2cbe&jn=3&lmt=1383697603&csp=1366,768&csn=1366,728&ccd=32&chi=1&cja=true&cpl=23&cmi=74&cce=true&csl=zh-CN&did=2&rt=4&dt=1383726403&pn=7:3%7CbaiduTlinkInlay:text_default_336_280%7C103:103&ev=402653184&c01=0&prt=1383726402616&i3=f&anatp=0&stid=0&lunum=6&scale=&skin=&titFS=14&titFF=%25E5%25AE%258B%25E4%25BD%2593&titTA=left&conBW=0&hn=4&wn=6" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" align="center,center" width="708" height="92"></iframe>