快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → solrcloud-高可用集群搭建

solrcloud-高可用集群搭建

时间:2023-02-01 16:49:06人气:作者:快盘下载我要评论


一、环境准备

    CentOS-6.4-x86_64-minimal.iso

    jdk-6u45-linux-i586-rpm.bin

    zookeeper-3.4.5.tar

    solr-4.6.0.zip

    服务器6台: 192.168.56.11- SolrCloud.Shard1.Leader

             192.168.56.12-SolrCloud.Shard2.Leader

      192.168.56.13-SolrCloud.Shard3.Leader

             192.168.56.14-SolrCloud.Shard1.Replica

             192.168.56.15-SolrCloud.Shard2.Replica

             192.168.56.16-SolrCloud.Shard3.Replica


二、环境安装


1、CentOs 6.4安装

1)配制用户

安装完后配制用户solrcloud  密码: solrcloud  

[root;localhost ~]#   useradd solrcloud

[root; localhost ~]#   passwd solrcloud

2)修改当前机器名称

      vi etc/sysconfig/network

         HOSTNAME=SolrCloud.Shard1.Leader

3)修改当前机器ip

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=08:00:27:5C:8C:BD

TYPE=Ethernet

UUID=4fc0a398-f82b-49e5-8657-27bf5b260444

ONBOOT=yes

NM_CONTROLLED=yes

IPADDR=192.168.56.11

NETMASK=255.255.255.0


重启服务 service network restart

4)上传安装包(工具上传winscp)

   创建文件夹 mkdir /solrcloud

   赋写权限 chmod 777 /solrcloud    

   上传所需安装软件包到/solrcloud

     solrcloud-高可用集群搭建

2、jdk安装

   默认jdk安装会报错,64位系统安装32位jdk报的错


 

需要安装glic , yum install glibc.i686


安装完后再安装jdk 进入/solrcloud目录

./jdk-6u45-linux-i586-rpm.bin


3、zookeeper集群安装

(集群安装测试时以ip为例说明;正式上线后可以配主机名称)

1)解压zookeeper 安装包

 tar -zxvf zookeeper-3.4.5.tar.gz

2)进入zookeeper-3.4.5文件夹,创建data 和log 

   创建目录并赋于写权限

   指定zookeeper的数据存放目录和日志目录

3)拷贝zookeeper配制文件zoo_sample.cfg

拷贝zookeeper配制文件zoo_sample.cfg并重命名zoo.cfg 

cp /solrcloud/zookeeper-3.4.5/conf/zoo_sample.cfg  /solrcloud/zookerper-3.4.5/conf/zoo.cfg

4)修改zoo.cfg

  加入 dataDir=/solrcloud/zookeeper-3.4.5/data

        dataLogDir=/solrcloud/zookeeper-3.4.5/log

 server.1=192.168.56.11:2888:3888

 server.2=192.168.56.12:2888:3888

    server.3=192.168.56.13:2888:3888

 server.4=192.168.56.14:2888:3888

 server.5=192.168.56.15:2888:3888

    server.6=192.168.56.16:2888:3888

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=/solrcloud/zookeeper-3.4.5/data

dataLogDir=/solrcloud/zookeeper-3.4.5/log

# the port at which the clients will connect

clientPort=2181

#

# 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.56.11:2888:3888

server.2=192.168.56.12:2888:3888

server.3=192.168.56.13:2888:3888

server.1=192.168.56.11:2888:3888

server.2=192.168.56.12:2888:3888

server.3=192.168.56.13:2888:3888

server.4=192.168.56.14:2888:3888

server.5=192.168.56.15:2888:3888

server.6=192.168.56.16:2888:3888

5)进入data文件夹 建立对应的myid文件

 例如server.1=192.168.56.11 data文件夹下的myid文件内容为1

6)制zookeeper-3.4.5文件夹到其他机器

7)开启zookeeper的端口

/sbin/iptables -I INPUT -p tcp --dport 2181 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 2888 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 3888 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT   --顺便启用tomcat 8080端口


/etc/rc.d/init.d/iptables save #将更改进行保存

/etc/init.d/iptables restart #重启防火墙以便改动生效


8)启动zookeeper 

进入bin

./zkServer.sh start

查看集群状态

./zkServer.sh status   刚启动可能会有错误;集群中其他节点一并起来后就正常了

4、solr集群安装

1)在solrcloud下新建solrhome;并赋于读写权限

2)将上传的solr.4.6.0压缩包解压缩,

       tar -zxvf solr-4.6.0.tgz

3)将solr.4.6.0/dist/solr-4.6.0.war 复制到/solrcloud/solrhome 并重命为solr.war

       cp /solrcloud/solr-4.6.0/dist/solr-4.6.0.war /solrcloud/solrhome/solr.war

4)将上传的tomcat解压缩

  tar -zxvf apache-tomcat-6.0.29.tar.gz

5)进入tomcat bin目录;启动tomcat

      cd /solrcloud/apache-tomcat-6.0.29/bin  进入bin目录

      ./startup.sh  启动tomcat  此时会在tomcat下的conf文件夹下多出一个目录Catalina

      cd /solrcloud/apache-tomcat-6.0.29/conf/Catalina/localhost

      新建solr.xml文件内容如下:

 

   <Environment name=;solr/home;

    type=;java.lang.String;

    value=;/solrcloud/solrhome;

    override=;true; />


    docBase=;/solrcloud/solrhome/solr.war; 指定为solrcloud/solrhome下复制出来solr的war包

6)停tomcat 再次启动tomcat, webapps 下边多了解压出来的solr文件夹

进入solr/WEB-INF/ 下修改web.xml

  


 改为 :

       solr/home

       /solrcloud/solrhome

       java.lang.String

    

7)将/solrcloud/solr-4.6.0/example/solr 文件夹下所有东西复制到 /solrcloud/solrhome

  cp  -r /solrcloud/solr-4.6.0/example/solr/*  /solrcloud/solrhome

8)复制solr-4.6.0/example/lib/ext下所有jar包到tomcat 的lib下

  cp /solrcloud/solr-4.6.0/example/lib/ext/*  /solrcloud/apache-tomcat-6.0.29/lib/

  复制 solr-4.6.0/example/resources/log4j.properties  到solr/WEB-INF/class

   如果没有class先创建class文件夹;并赋于写权限

  cp  /solrcloud/solr-4.6.0/example/resources/log4j.properties /solrcloud/apache-tomcat-6.0.29/webapps/solr/WEB-INF/class/

 

9)启动tomcat 访问 http://localhost:8080/solr 如图;至此单机版solr配制完成

高可用集群搭建

   

10)配制集群

将zookeeper和tomcat关联

192.168.56.11台机修改tomcat 的 bin目录下catalina.sh文件在第二行加入

JAVA_OPTS=;-Dbootstrap_confdir=/solrcloud/solrhome/collection1/conf -Dcollection.configName=myconf -DzkHost=192.168.56.11:2181,192.168.56.12:2181,192.168.56.13:2181,192.168.56.14:2181,192.168.56.15:2181,192.168.56.16:2181 -DnumShards=3;

192.168.56.12-16 , 5台机都修改tomcat 的 bin目录下catalina.sh文件在第二行加入

JAVA_OPTS=;-DzkHost=192.168.56.11:2181,192.168.56.12:2181,192.168.56.13:2181,192.168.56.14:2181,192.168.56.15:2181,192.168.56.16:2181;

至此集群配制完毕

创建集合

http://192.168.56.11:8080/solr/admin/collections?action=CREATE&name=guangzhou&numShards=3&replicationFactor=3

任何一个ip均可访问

http://192.168.56.11:8080/solr/#/~cloud 

solrcloud

 
















Solr5.5.4;Zookeeper3.4.6;Tomcat8搭建SolrCloud集群

SolrCloud(solr 云)是Solr提供的分布式搜索方案;当你需要大规模;容错;分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的;当索引量很大;搜索请求并发很高;这时需要使用SolrCloud来满足这些需求。SolrCloud 是基于Solr和Zookeeper的分布式搜索方案;具体拥有以下几个特色功能;

      1;集中式的配置信息
      2;自动容错
      3;近实时搜索
      4;查询时自动负载均衡

SolrCloud在搭建时;通过先搭建完一个Solr实例后;可以很容易地使用Zookeeper来做一个集群。我演示的安装步骤基于一台机器;所以采用伪集群的方式进行安装;如果是真正的生成环境;将伪集群的ip改下就可以了;步骤是一样的。

安装准备

  • JDK1.7以上

  • Solr5.5.4部署包;solr-5.5.4.tgz 大约130M;

  • Tomcat8部署包 ;apache-tomcat-8.5.16.tar.gz;

  • zookeeper-3.4.6部署包;zookeeper-3.4.6.tar.gz;

Solr5.5.4单机部署与Tomcat8

你可以在Solr5.5.4单机部署找到如何将Solr5.5.4部署在Tomcat8环境下.

Solr5.5.4;Zookeeper3.4.6;Tomcat8集群部署

如果已经成功部署了一个Solr;那么接下来的工作也不会太难。下面的集群部署基于已经成功部署过单个Solr。如果你还没有部署过Solr或者还没有部署过单机版的;讲义看一下Solr5.5.4单机部署里面第二部分;通过tomcat部署Solr;然后再来部署集群。

具体zookeeper集群部署我在这里就不讲啦;如果不会部署zookeeper集群的可以看一下看一下zookeeper集群部署。本次部署详情信息如下;

机器

192.168.219.11;node11;,192.168.219.12(node12),192.168.219.13(node13),192.168.219.14(node14)

系统

Red Hat Enterprise Linux Server release 6.5 (Santiago)  

系统内核

2.6.32-358.el6.x86_64

solr版本

Solr-5.5.4

zookeeper版本

3.4.6

zookeeper地址(ip:port)

node11:2282,node12:2282,node13:2282

tomcat版本

8.5.16

solr;tomcat地址

/home/anu/tomcat8

solr_home(core)地址

/home/anu/tomcat8/solr_home;   node11:8888(leader),node12:8888(follower),node13:8888(follower),node14:8888(follower)

1、我早之前已经在一台机器上那装过单机的Solr;鄙人是在node11机器上安装的;通过tomcat;Solr实现;放在tomcat8中;;所以直接来改动它里面的配置就可以啦。

2、为了保证端口不冲突;我们来改一下tomcat端口还有Solr端口

solrcloud


  修改./tomcat8/conf/server.xml;将下面几个地方的端口尽量改动一下不要和别的地方冲突




solrcloud 

高可用集群搭建

solrcloud 

 这些地方本人已经改过啦;注意上面那个8888端口是tomcat发布端口;这个后面要用到;需要设置成Solr端口

 

3、配置tomcat8的启动项;配置zookeeper和各个tomcat进行关联;首先确定leader节点;本人使用node11作为leader;其余的作为follower;现在先配置leader的tomcat目录下(我的是tomcat8)的bin/catalina.sh中的最上面添加一行 

solrcloud


JAVA_OPTS=;-Djetty.port=8888 -Dbootstrap_confdir=/home/anu/tomcat8/solr_home/ustcinfo/conf -Dcollection.configName=solr_home -DzkHost=node11:2282,node12:2282,node13:2282 -DnumShards=2;

8888;必须要和我们上面配置的tomcat端口一致;

/home/anu/tomcat8/solr_home/ustcinfo/conf;这个是我的Solr_home 的路径;这个下面我们单机安装的时候已经说了这个的由来;下面马上我再说一下

solr_home;是我的solr_home名字;可以随便取;但是尽量和你的solr_home文件名一样;便于查看

node11:2282,node12:2282,node13:2282;这是我的zookeeper集群;前面已经安装并且已经启动

2;表示有两个shard节点

下面大致解释一下这些参数含义;

  • -Djetty.port Solr的发布端口;需要和tomcat端口一致;使用jetty.port是响应Solr内部jetty关联

  • -Dbootstrap_confdir ZooKeeper需要准备一份集群配置的副本;这个参数是告诉SolrCloud这些配置是放在哪里;同时作为整个集群共用的配置文件。

  • -Dcollection.configName 指定你的配置文件上传到zookeeper后的名字;建议和你所上传的核心名字一致;这样容易识别。

  • -DzkRun 在Solr中启动一个内嵌的zooKeeper服务器;该服务会管理集群的相关配置。

  • -DzkHost 跟上面参数的含义一样;允许配置一个ip和端口来指定用哪个Zookeeper服务器进行协调。

  • -DnumShards=2 配置需要把你的数据分开到多少个shard中

  • -Dbootstrap_conf=true 将会上传solr/home里面的所有数据到zookeeper的home/data目录,也就是所有的core将被集群管理;本次我未使用这个参数。

这里面配好之后;我们再说说我配置的Solr_home路径由来。

  首先;我们在单机中已经将./solr-5.5.4/server/solr 下面所有的东西都拷贝到./tomcat8/solr_home目录下。我们进入到./tomcat/sole_home 目录下

高可用集群搭建


  其次;在这个路径下新建一个作为core使用的文件夹;名字可以随意起;我创建名字为ustcinfo的文件夹

  然后将./tomcat8/solr_home/configsets/basic_configs 目录下的所有文件都拷贝到我们刚刚新建的ustcinfo 下面

mkdir ustcinfo

cp -r configsets/basic_configs/* ustcinfo/
cd ustcinfo/
ls
cd conf
pwd

高可用集群搭建

solrcloud 

高可用集群搭建  




  在这就可以看到我们配置的Solr_home地址;用于后面同一创建Solr集合识别core使用。

 

特别需要注意;上面添加JAVA_OPTS时针对leader节点的;其余三台机器的JAVA_OPTS如下;

JAVA_OPTS=;-Djetty.port=8888 -Dcollection.configName=solr_home -DzkHost=node11:2282,node12:2282,node13:2282 -DnumShards=2;

这个配置后面会提到

 

4、修改solr.xml的jetty.port参数值为tomcat的端口

  打开./tomcat8/solr_home/solr.xml 文件;修改jetty.port参数值为tomcat的端口;即我们前面配置的8888;

  solrcloud

 

5、将配置好的tomcat;solr拷贝到其他三台机器node12、node13、node14;

scp -r tomcat8 anu;node12:/home/anu/

scp -r tomcat8 anu;node13:/home/anu/

scp -r tomcat8 anu;node14:/home/anu/

6、修改其他三台follower的tomcat8启动项;

  分别进入node12、node13、node14机器;通过vim tomcat8/bin/catalina.sh 打开catalina.sh文件;将tomcat启动项的 -Dbootstrap_confdir=/home/anu/tomcat8/solr_home/ustcinfo/conf 删掉;最终JAVA_OPTS参数如下

JAVA_OPTS=;-Djetty.port=8888 -Dcollection.configName=solr_home -DzkHost=node11:2282,node12:2282,node13:2282 -DnumShards=2;

高可用集群搭建 


  7、分别启动4台机器的tomcat8;Solr

  使用命令tomcat8/bin/catalina.sh start 或者tomcat8/bin/startup.sh 启动四台tomcat8

8、通过访问页面查看Sole配置

  在浏览器中打开http://192.168.219.11:8888/solr/index.html#/;进入后点击左边导航栏的cloud查看

 solrcloud

 

 

Java操作solrCloud

在java中操作solrCloud和操作solr一样;都是通过solrJ;只不过初始化solrServer对象时有点不同;

简单示例;

;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();

}

测试结果;




如果要在Spring中使用集群版本solr;配置如下;


该配置和单机版的配置同时只能存在一份;不然会报不唯一异常;



然后在代码中通过;


;Autowired


private SolrServer solrServer;


自动注入即可使用;注入后的使用方法和单机版的是一样的。

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。