solr5.3.1 集群服务搭建

转http://978538.blog.51cto.com/968538/1710442

一. 安装部署

zookeeper集群部署:

节点:

10.1.12.51:2181      node1

10.1.12.52:2181      node2

10.1.12.53:2181      node3

最新稳定版下载地址(当前3.4.6):

http://mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.6.tar.gz

各节点上解压zookeeper到/usr/local


1

2

3

tar xf /usr/local/src/zookeeper-3.4.6.tar.gz -C /usr/local

cd /usr/local

ln -s zookeeper-3.4.6 zookeeper

创建如下数据目录结构:

/data/zookeeper/

├── data

└── log


1

mkdir -p /data/zookeeper/{data,log}

各节点配置zookeeper:


1

2

3

4

5

6

7

8

9

10

11

cd /usr/local/zookeeper/conf

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg修改如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/zookeeper/data

clientPort=2181

server.1=10.1.12.51:2888:3888

server.2=10.1.12.52:2888:3888

server.3=10.1.12.53:2888:3888

各节点的数据目录下添加唯一的node id标识


1

2

3

4

5

6

node1:  

echo 1>/data/zookeeper/data/myid

node2:

echo 2>/data/zookeeper/data/myid

node3:

echo 3>/data/zookeeper/data/myid

各节点修改ZOO_LOG_DIR环境变量:


1

echo -e "\nZOO_LOG_DIR=/data/zookeeper/log" >> /usr/local/zookeeper/bin/zkEnv.sh

各节点上启动zookeeper:


1

2

3

4

5

6

7

8

9

10

11

12

13

/usr/local/zookeeper/bin/zkServer.sh start

添加zookeeper的sysv服务脚本

vim /etc/init.d/zookeeper

#!/bin/bash

#

# chkconfig: 345 30 70

# description: Starts/Stops Apache Zookeeper

 

export ZOO_HOME=/usr/local/zookeeper

export ZOO_BIN=$ZOO_HOME/bin

export ZOO_SER_BIN=$ZOO_BIN/zkServer.sh

 

$ZOO_SER_BIN $1

#------finish-------


1

2

3

chmod +x /etc/init.d/zookeeper

chkconfig -add zookeeper

chkconfig zookeeper on

solrcloud部署(3分片2复制集):

节点:

10.1.12.51:8983    shard1-repl1  shard2-repl2

10.1.12.52:8983    shard2-repl1  shard3-repl2

10.1.12.53:8983    shard3-repl1  shard1-repl2

最新稳定版下载地址(当前5.3.1)

http://mirrors.cnnic.cn/apache/lucene/solr/5.3.1/solr-5.3.1.tgz

各节点解压安装操作:


1

2

3

cd /usr/local/src

tar xzf solr-5.3.1.tgz solr-5.3.1/bin/install_solr_service.sh --strip-components=2

./install_solr_service.sh solr-5.3.1.tgz -i /usr/local -d /data/solrcloud -u solr -s solr -p 8983

各节点solr服务配置修改:

1.调整jvm堆内存大小


1

echo ‘SOLR_JAVA_MEM="-Xms10g -Xmx10g"‘ >> /data/solrcloud/solr.in.sh

2.添加zookeeper


1

echo ‘ZK_HOST=10.1.12.51:2181,10.1.12.52:2181,10.1.12.53:2181‘ >> /data/solrcloud/solr.in.sh

3.添加solr依赖jar包

这里使用ik分词器,支持solr5.x版本下载地址为: https://github.com/EugenePig/ik-analyzer-solr5


1

2

3

cp ~/ik-analyzer-solr5-5.x.jar  /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib

cp -n /usr/local/solr/dist/*.jar /usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib

cp ~/mysql-connector-java-5.1.35.jar /usr/local/solr/server/lib

4.重启solr服务


1

/etc/init.d/solr restart

创建colletion(其中一个节点下操作即可)


1

2

su -c ‘/usr/local/solr/bin/solr create -c core_bingdu -d /opt/core_bingdu_conf -n core_bingdu -s 3 -rf 2 -port 8983‘ - solr

su -c ‘/usr/local/solr/bin/solr create -c core_bingdu_user -d /opt/core_bingdu_user_conf -n core_bingdu_user -s 3 -rf 2 -port 8983‘ - solr

二. 集群操作

修改solr的collection配置后上传到zookeeper:

当前solr的collection配置副本存放在opt目录下


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

[[email protected] opt]# tree .

.

├── core_bingdu_conf

│   ├── admin-extra.html

│   ├── admin-extra.menu-bottom.html

│   ├── admin-extra.menu-top.html

│   ├── data-config.xml

│   ├── dataimport.properties

│   ├── _rest_managed.json

│   ├── schema.xml

│   └── solrconfig.xml

└── core_bingdu_user_conf

    ├── admin-extra.html

    ├── admin-extra.menu-bottom.html

    ├── admin-extra.menu-top.html

    ├── data-config.xml

    ├── dataimport.properties

    ├── _rest_managed.json

    ├── schema.xml

    └── solrconfig.xml

对以上配置文件进行修改后需要手动上传到zookeeper:

1)整个配置目录上传


1

2

3

cd /usr/local/solr/server/scripts/cloud-scripts

./zkcli.sh -zkhost 10.1.12.51:2181 -cmd upconfig -confdir /opt/core_bingdu_conf -confname core_bingdu

./zkcli.sh -zkhost 10.1.12.51:2181 -cmd upconfig -confdir /opt/core_bingdu_user_conf -confname core_bingdu_user

2)单文件上传


1

2

./zkcli.sh -zkhost 10.1.12.51:2181 -cmd putfile /configs/core_bingdu/solrconfig.xml /opt/core_bingdu_conf/solrconfig.xml

./zkcli.sh -zkhost 10.1.12.51:2181 -cmd putfile /configs/core_bingdu_user/solrconfig.xml /opt/core_bingdu_user_conf/solrconfig.xml

三. solr 的一些常规操作:

基于命令:

<solr_install_dir>/bin/solr command [options...]

支持的command如下:

start, stop, restart, status, healthcheck, create, create_core, create_collection, delete

其中start,stop,restart,status操作已经封装到sysv风格的服务脚本中,例如重启solr服务:


1

/etc/init.d/solr restart

检查solr集群各节点状态:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

[[email protected] bin]# ./solr healthcheck -c core_bingdu -z 10.1.12.52:2181

{

  "collection":"core_bingdu",

  "status":"healthy",

  "numDocs":180900,

  "numShards":3,

  "shards":[

    {

      "shard":"shard1",

      "status":"healthy",

      "replicas":[

        {

          "name":"core_node2",

          "url":"http://10.1.12.51:8983/solr/core_bingdu_shard1_replica2/",

          "numDocs":60424,

          "status":"active",

          "uptime":"2 days, 17 hours, 13 minutes, 9 seconds",

          "memory":"3.4 GB (%36) of 9.6 GB",

          "leader":true},

        {

          "name":"core_node5",

          "url":"http://10.1.12.53:8983/solr/core_bingdu_shard1_replica1/",

          "numDocs":60424,

          "status":"active",

          "uptime":"2 days, 16 hours, 58 minutes, 39 seconds",

          "memory":"2.2 GB (%22.5) of 9.6 GB"}]},

    {

      "shard":"shard2",

      "status":"healthy",

      "replicas":[

        {

          "name":"core_node3",

          "url":"http://10.1.12.52:8983/solr/core_bingdu_shard2_replica1/",

          "numDocs":59916,

          "status":"active",

          "uptime":"2 days, 17 hours, 14 minutes, 3 seconds",

          "memory":"3 GB (%31.1) of 9.6 GB",

          "leader":true},

        {

          "name":"core_node6",

          "url":"http://10.1.12.53:8983/solr/core_bingdu_shard2_replica2/",

          "numDocs":59916,

          "status":"active",

          "uptime":"2 days, 16 hours, 58 minutes, 39 seconds",

          "memory":"2.2 GB (%22.5) of 9.6 GB"}]},

    {

      "shard":"shard3",

      "status":"healthy",

      "replicas":[

        {

          "name":"core_node1",

          "url":"http://10.1.12.51:8983/solr/core_bingdu_shard3_replica1/",

          "numDocs":60560,

          "status":"active",

          "uptime":"2 days, 17 hours, 13 minutes, 9 seconds",

          "memory":"3.5 GB (%36) of 9.6 GB"},

        {

          "name":"core_node4",

          "url":"http://10.1.12.52:8983/solr/core_bingdu_shard3_replica2/",

          "numDocs":60560,

          "status":"active",

          "uptime":"2 days, 17 hours, 14 minutes, 3 seconds",

          "memory":"3 GB (%31.2) of 9.6 GB",

          "leader":true}]}]}

创建集合:


1

bin/solr create -c core_bingdu -d /opt/core_bingdu_conf -n core_bingdu -s 3 -rf 2 -port 8983

这里说明一下选项:

-c: 指定集合或core名称(对于单实例模式的solr,colletion和core的意思基本相同,集群模式下,colletion等于每个shard下对应的core的集合)

-d:指定本地的solr配置目录(一个临时目录,用于存放solr配置文件,如solrconfig.xml,schema.xml),每次该目录的配置发生修改都需要手动上传到zookeeper的/configs目录节点下

-n: 指定zookeeper的/configs目录节点下创建的子目录节点名称,这里为/configs/core_bingdu

-s: 指定对应集合的分片数, 指定分片数后solr会根据各个节点上的负载在其上创建分片

-rf: 指定每个shard创建多少个复制节点

-port: 指定solr服务端口,不指定默认为8983

删除集合:


1

bin/solr delete -c core_bingdu

基于solr api方式的操作:

创建集合:


1

http://localhost:8983/solr/admin/collections?action=CREATE&name=mycollection&numShards=3&replicationFactor=4

删除集合:


1

http://localhost:8983/solr/admin/collections?action=DELETE&name=mycollection

重新载入集合:


1

http://localhost:8983/solr/admin/collections?action=RELOAD&name=mycollection

列出所有集合:


1

http://10.1.12.53:8983/solr/admin/collections?action=LIST

将一个分片拆分成两个分片(用于集群扩展):


1

http://localhost:8983/solr/admin/collections?action=SPLITSHARD&collection=anotherCollection&shard=shard1

为指定集合创建别名:


1

http://localhost:8983/solr/admin/collections?action=CREATEALIAS&name=testalias&collections=anotherCollection,testCollection

删除集合别名:


1

http://localhost:8983/solr/admin/collections?action=DELETEALIAS&name=testalias

删除复制节点:


1

http://localhost:8983/solr/admin/collections?action=DELETEREPLICA&collection=test2&shard=shard2&replica=core_node3

添加复制节点:


1

http://localhost:8983/solr/admin/collections?action=ADDREPLICA&collection=test2&shard=shard2&node=192.167.1.2:8983_solr

查看overseer状态:

solr集群中唯一负责action处理的节点,负责其他分片,节点的状态跟踪,为节点分配分片


1

http://localhost:8983/solr/admin/collections?action=OVERSEERSTATUS&wt=json

集群状态检查:


1

http://localhost:8983/solr/admin/collections?action=clusterstatus&wt=json

还有其他集合api,详细说明请参考:

https://cwiki.apache.org/confluence/display/solr/Collections+API

创建全量索引


1

/usr/bin/curl -G "http://10.1.12.53:8983/solr/core_bingdu/dataimport?command=full-import&clean=true&commit=true" 2&> /dev/null

创建增量索引


1

/usr/bin/curl -G "http://10.1.12.53:8983/solr/core_bingdu_user/dataimport?command=delta-import&clean=false&commit=true" 2&> /dev/null

更多请参阅官方文档:

http://mirrors.cnnic.cn/apache/lucene/solr/ref-guide/apache-solr-ref-guide-5.3.pdf

时间: 2024-12-25 02:48:40

solr5.3.1 集群服务搭建的相关文章

LVS负载均衡集群服务搭建详解(二)

lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipvs功能,且安装ipvsadm控制书写lvs规则工具. RS端两台服务器为httpd服务器做请求的负载均衡. 注意: 1) 客户端可以使用Windows上的浏览器,会后缓存影响结果,所以采用CentOS上的curl命令请求http协议显示更加直观 2) DIP上不能配置iptables规则 2.VS网

LVS负载均衡集群服务搭建详解(一)

LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均衡 lvs(又称ipvs)是基于内核中的防火墙netfilter实现 2.lvs集群术语: vs:Virtual Server 虚拟服务,可称为Director.Dispatcher分发器.Balancer负载均衡器 rs:Real Server 真实服务器 CIP:Client IP 客户端IP

LVS负载均衡集群服务搭建详解

一.LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均衡 lvs(又称ipvs),基于内核中的netfilter实现: PREROUTING--> INPUT OUTPUT--> POSTROUTING PREROUTING--> FORWARD --> POSTROUTING 2.lvs集群术语: vs:Virtual  Serve

cas4.2.7 集群服务搭建

cas服务端集群,网上资料很多,无非就是session共享,ticket共享. 但是session共享是必须的吗?或者能实现集群吗? 实践: 1. ticket共享,直接上代码 package org.jasig.cas.ticket; import java.util.Collection; import java.util.HashSet; import java.util.Set; import java.util.concurrent.TimeUnit; import org.jasig

Linux下使用Apache的Httpd+Mod_jk+Tomcat搭建Web集群服务

Linux下使用Apache的Httpd+Mod_jk+Tomcat搭建Web集群服务 目的 ?? 使用多个tomcat服务器来对请求进行分流,防止单个服务器压力过重.这里为了简单,只使用两个tomcat. 软件 apache httpd-2.2.31(下载地址:https://httpd.apache.org/download.cgi) apache tomcat-7.0.69(下载地址:https://tomcat.apache.org/download-70.cgi) tomcat-con

使用Codis搭建redis集群服务

转(http://www.jianshu.com/p/f8e968e57863) 一. 应用场景 redis 作为数据结构存储引擎,有着很多优点 高性能单机引擎可以达到5-10W qps 数据结构全面,支持快速开发业务string,list,set,sorted set, hashes 问题: 存储容量受限单机最大容量即为单机内存最大容量 单机数据的持久化依赖aof和rdb机制,如果机器整个down掉,服务不可用 二. redis集群选型 正是由于单机redis引擎有着这样的问题,所以,基本每个

ZooKeeper一二事 - 搭建ZooKeeper伪分布式及正式集群 提供集群服务

集群真是好好玩,最近一段时间天天搞集群,redis缓存服务集群啦,solr搜索服务集群啦,,,巴拉巴拉 今天说说zookeeper,之前搭建了一个redis集群,用了6台机子,有些朋友电脑跑步起来,有点卡,那这里主要说说伪分布式的集群,正式版的集群需要3台机子,我就一带而过说一说,搭建起来也是非常简单的 先来说说Zookeeper 什么是Zookeeper呢,顾名思义,动物园管理员嘛,什么hadoop大象啦,hive蜜蜂啦,pig小猪啦,都是用这货来管的,就是大数据Hadoop里面的嘛~ (题外

《搭建更新DNS集群服务》RHEL6

DNS服务器的更新: 一听就知道不止一台的DNS服务器,要是一台也用不着更新对吧?一般都是DNS集群. 一台DNS更新了,添加一条数据,下面的都要跟着它变. 主DNS服务器的配置 首先先配置DNS服务器信息同步,后面再配置更新DNS服务器: 1.  前面很简单: 安装bind软件包.修改named服务配置文件; Vim /etc/named.conf 2修改zone语句: also-notify     定义一个用于全局的域名服务器IP地址列表.无论何时,当一个新的域文件被调入系统,域名服务器都

搭建 SolrCloud 集群服务

一.概述 Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库 Solr是以Lucene为基础实现的文本检索应用服务.Solr部署方式有单机方式.多机Master-Slaver方式.Cloud方式. SolrCloud是基于Solr和Zookeeper的分布式搜索方案.当索引越来越大,一个单一的系统无法满足磁盘需求,查询速度缓慢,此时就需要分布式索引.在分布式索引中,原来的大索引,将会分成多个小索引,solr可以将这些小索引返回的结果合并,然后返回给客户端. 二.特色功能 Solr