文档章节

solr5.3.1 solrcloud集群环境搭建

 阿谦
发布于 2016/02/23 15:31
字数 1620
阅读 127
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

一.环境准备

    Windows 7 64

    java version "1.8.0_65"

solr-5.3.1.tgz

apache-tomcat-8.0.28.zip

zookeeper-3.4.6.tar

 

二.环境安装

1. Tomcat+solr单机版

1. 下载solr 5.3.1.tgz 压缩包,并解压到D盘

1. 下载地址:http://www.apache.org/dyn/closer.lua/lucene/solr/5.3.1

 

2. solr5.3.1解压后目录结构如下:

2.    下载apache-tomcat-8.0.28.zip并解压到D盘下的solr_cloud目录里

下载地址:http://tomcat.apache.org/download-80.cgi

 

D盘新建文件夹solr_cloud并解压apache-tomcat-8.0.28目录文件夹效果如下:

3.    在D:\solr_cloud\apache-tomcat-8.0.30\webapps下新建solr文件夹,并复制D:\solr-5.3.1\server\solr-webapp\webapp下所有文件,创建solr_home文件,如图:

4.    修改D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\WEB-INF\web.xml

  <!--

    <env-entry>

       <env-entry-name>solr/home</env-entry-name>

       <env-entry-value>/put/your/solr/home/here</env-entry-value>

       <env-entry-type>java.lang.String</env-entry-type>

    </env-entry>

   -->

 改为 :

    <env-entry>

       <env-entry-name>solr/home</env-entry-name>

     <env-entry-value>D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\solr_home</env-entry-value>

       <env-entry-type>java.lang.String</env-entry-type>

    </env-entry>

5.    把D:\solr-5.3.1\server\lib\ext 中的 jar 全部复制到 D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\WEB-INF\lib 文件夹下,如图:

6.    将 D:\solr-5.3.1\server\solr 目录下所有的文件都复制到D:\solr_cloud\apache-tomcat-8.0.28\webapps\solr\solr_home

7.    把D:\solr-5.3.1\server\resources\log4j.properties文件复制到D:\solr_cloud \apache-tomcat-8.0.30\webapps\solr\WEB-INF\classes目录下,如果classes文件夹不存在就手动新建一个文件夹,如图:

8.    保存关闭,而后启动tomcat,在浏览器输入http://localhost:8080/solr即可出现Solr的管理界面。

9.     如果本地有多个jdk需要在D:\solr_cloud\apache-tomcat-8.0.28\bin\startup.bat 文件中指定jdk1.8的home地址,如

三.Solr搭建集群应用

1. 配置多Tomcat+Solr同时运行

1. 把apache-tomcat-8.0.28 文件夹复制两份,分别命名为:tomcat-server_1、tomcat-server_2、tomcat-server_3,如下图:

2. 修改tomcat-server_* 中solr_home的在web.xml文件中指定的路径,如图:

solr_home

tomcat-server_1

D:\solr_cloud\tomcat-server_1\webapps\solr\solr_home

tomcat-server_2

D:\solr_cloud\tomcat-server_2\webapps\solr\solr_home

tomcat-server_3

D:\solr_cloud\tomcat-server_3\webapps\solr\solr_home

 

D:\solr_cloud\tomcat-server_1\webapps\solr\WEB-INF\web.xml

D:\solr_cloud\tomcat-server_2\webapps\solr\WEB-INF\web.xml

D:\solr_cloud\tomcat-server_3\webapps\solr\WEB-INF\web.xml

2. 修改tomcat端口

1. tomcat-server_* 中conf的在server.xml端口休息,修改方案如下:

Tomcat Admin Port

HTTP/1.1 Port

AJP/1.3 Port

Tomcat-server_1

8005

8080

8009

Tomcat-server_2

8015

8090

8019

Tomcat-server_3

8025

8100

8029

 

Tomcat Admin Port

HTTP/1.1 Port

AJP/1.3 Port

以上是tomcat-server_1的配置,tomcat-server_2 tomcat-server_3同上。

3. 验证修改是否成功,依次启动三个Tomcat。并在浏览器输入如下的URL:

http://127.0.0.1:8080/solr/

 

http://127.0.0.1:8090/solr/

 

http://127.0.0.1:8100/solr/

 

如果都能正常访问到solradmin页面,那么说明配置是成功。

3.配置 ZooKeeper集群

1. 在solr_cloud目录下创建zookeeper文件夹,并解压zookeeper-3.4.6.tar.gz到D:/solr_cloud/zookeeper目录下,如图:

2. 在zookeeper文件夹下创建一个data文件夹,并在data文件夹下创建zk1、zk2、zk3文件夹,如图:

3. 在zk1、zk2、zk3目录中创建文件myid(不需要后缀名),并在zk1目录myid文件中写入数字1,zk2目录myid文件中写入数字2,zk3目录myid文件中写入数字3,如图:

文件

Zk1

myid

1

Zk2

myid

2

Zk3

myid

3

 

4. 在zookeeper文件夹下创建一个logs文件夹,并在logs文件夹下创建zk1、zk2、zk3文件夹,如图:

5. 复制D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf文件夹下的 zoo_sample.cfg 文件复制两份并修改名称为:zoo1.cfg、zoo2.cfg、zoo3.cfg,如图:

6. 修改zoo1.cfg、zoo2.cfg、zoo3.cfg写入如下的配置参数,dataDir和dataLogDir和clientPort。修改方案如下:如图:

dataDir

dataLogDir

clientPort

zoo1.cfg

D:/solr_cloud/zookeeper/data/zk1

D:/solr_cloud/zookeeper/logs/zk1

2181

zoo2.cfg

D:/solr_cloud/zookeeper/data/zk2

D:/solr_cloud/zookeeper/logs/zk2

2182

zoo3.cfg

D:/solr_cloud/zookeeper/data/zk3

D:/solr_cloud/zookeeper/logs/zk3

2183

 

zoo1.cfg

zoo2.cfg

zoo3.cfg

7. 复制D:\solr_cloud\zookeeper\zookeeper-3.4.6\bin文件夹下的zkServerNaNd文件复制两份并修改名称为:zkServer_25pxd、zkServer_50pxd、zkServer_75pxd,如图:

8. 修改zkServer_*NaNd写入如下的配置参数,修改方案如下:如图:

zkServer_25pxd

set ZOOCFG=D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf\zoo1.cfg

zkServer_50pxd

set ZOOCFG=D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf\zoo2.cfg

zkServer_75pxd

set ZOOCFG=D:\solr_cloud\zookeeper\zookeeper-3.4.6\conf\zoo3.cfg

 

zkServer_25pxd

zkServer_50pxd

zkServer_75pxd

9.    启动服务,在eclipse中验证是否正常启动。

启动zkServer_*NaNd连接三台服务器的任意一台,创建结点,然后连接另外一台,取得结点的数据,如果能够取到,则说明配置是成功。

创建一个java Project 工程,导入zookeeper-3.4.6.jar,并创建ZkClient.java 以下是代码:

 

package zookeeper_learning;

 

import java.io.IOException;

import org.apache.zookeeper.CreateMode;

import org.apache.zookeeper.KeeperException;

import org.apache.zookeeper.WatchedEvent;

import org.apache.zookeeper.Watcher;

import org.apache.zookeeper.ZooDefs.Ids;

import org.apache.zookeeper.ZooKeeper;

 

public class ZkClient {

 

// 创建 一个结点

public static void create(ZooKeeper zk) throws KeeperException, InterruptedException {

        System.out.println("/n1. 创建 ZooKeeper 节点 (znode zoo2, 数据: myData2 ,权限: OPEN_ACL_UNSAFE ,节点类型: Persistent");

           zk.create("/zoo2", "myData2".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);

}

 

// 修改结点信息

public static void modify(ZooKeeper zk) throws KeeperException, InterruptedException {

           System.out.println("/n3. 修改节点数据 ");

           zk.setData("/zoo2", "shenlan211314".getBytes(), -1);

}

 

// 查看结点信息

public static void monitor(ZooKeeper zk) throws KeeperException, InterruptedException {

           System.out.println("/n4. 查看节点: ");

           System.out.println(new String(zk.getData("/zoo2", false, null)));

}

 

// 查看结点是否存在

public static void exist(ZooKeeper zk) throws KeeperException, InterruptedException {

           System.out.println("/n6. 查看节点是否被删除: ");

           System.out.println(" 节点状态: [" + zk.exists("/zoo2", false) + "]");

}

 

// 删除一个结点

public static void delete(ZooKeeper zk) throws InterruptedException, KeeperException {

           System.out.println("/n5. 删除节点 ");

           zk.delete("/zoo2", -1);

}

 

public static ZooKeeper connect(String host) throws IOException {

           return new ZooKeeper(host, 3000, new Watcher() {

                    public void process(WatchedEvent arg0) {

                             System.out.println("watch " + arg0);

                    }

           });

}

 

public static void main(String[] args) {

           try {

                    ZooKeeper zk1 = connect("0.0.0.0:2181");

                    create(zk1);

                    zk1.close();

 

                    ZooKeeper zk2 = connect("0.0.0.0:2182");

                    monitor(zk2);

                    zk2.close();

           } catch (Exception e) {

                    e.printStackTrace();

           }

}

 

}

 

执行结果如下,证明环境没问题。

 

4.Tomcat关联solr建立集群应用

1. 修改tomcat-server_*中的catalina.bat的参数信息,文件启动关联zookeeper集群功能,方案如下:

tomcat_server_1

set JAVA_OPTS=-Dsolr.solr.home=D:/solr_cloud/tomcat-server_1/webapps/solr/solr_home -Dbootstrap_confdir=D:/solr_cloud/tomcat-server_1/webapps/solr/solr_home/core1/conf -Dcollection.configName=myconf -DnumShards=2 -DzkHost=127.0.0.1:2181

tomcat_server_2

set JAVA_OPTS=-Dsolr.solr.home=D:/solr_cloud/tomcat_server_2/webapps/solr/solr_home -DzkHost=127.0.0.1:2182

tomcat_server_3

set JAVA_OPTS=-Dsolr.solr.home=D:/solr_cloud/tomcat_server_3/webapps/solr/solr_home -DzkHost=127.0.0.1:2182

 

D:\solr_cloud\tomcat-server_1\bin\catalina.bat

D:\solr_cloud\tomcat-server_2\bin\catalina.bat

D:\solr_cloud\tomcat-server_3\bin\catalina.bat

2. 修改:tomcat-server_*中solr_home 目录下的 solr.xml 文件,方案如果:

host

hostPort

tomcat_server_1

127.0.0.1

${hostPort:8080}

tomcat_server_2

127.0.0.1

${hostPort:8090}

tomcat_server_3

127.0.0.1

${hostPort:8100}

 

D:\solr_cloud\tomcat-server_1\webapps\solr\solr_home\solr.xml

D:\solr_cloud\tomcat-server_2\webapps\solr\solr_home\solr.xml

D:\solr_cloud\tomcat-server_3\webapps\solr\solr_home\solr.xml

3. Solr创建core实例,在tomcat-server_*中solr_home 目录下创建core1文件夹,把 D:\solr-5.3.1\server\solr\configsets\basic_configs 目录下的conf文件复制到solr_home目录中,如图:

Tomcat-server_1tomcat-server_2tomcat-server_3中同时复制。

4. 启动tomcat_server_* 服务,进入管理页面选择Core Admin,如图:

创建core1

tomcat-server_1tomcat-server_2tomcat-server_3同时创建core1实例。

5. 验证集群是否成功,如下图效果则证明集群搭建完成:

© 著作权归作者所有

粉丝 0
博文 5
码字总数 6986
作品 0
朝阳
私信 提问
加载中

评论(1)

Xionghh
Xionghh
图呢,唉。。。。
Java之品优购部署_day01(5)

SolrCloud 2.1 SolrCloud 简介 2.1.1 什么是 SolrCloud SolrCloud(solr 云)是 Solr 提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数...

我是小谷粒
2018/07/09
0
0
SolrCloud和MultiCore的区别

一、SolrCloud 与 MultiCore 的本质区别SolrCloud 用多台机搭建一个SolrCore(即整个系统只有一套schema,solrconfig)MultiCore 是多个独立的服务,不同的core可以用几套schema,solrconfi...

clebeg
2013/09/19
2.6K
1
【知识库-7】【平台类】【组件】SolrCloud搭建

1、Zookeeper集群的安装配置 1.1 zookeeper集群的主机数量是奇数 在成都云上的zookeeper集群主机:101.204.243.107/101.204.243.113/101.204.243.123 1.2 配置环境变量 1.3 加载环境变量 1....

大个鹿
2016/04/06
2
0
Solr初探(6)——SolrCloud

Solr集群,即是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 。 当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高...

yuanlaijike
2018/04/12
0
0
SolrCloud4.9+zookeeper在CentOS上的搭建与安装

Apache SolrCloud安装 SolrCloud通过ZooKeeper集群来进行协调,使一个索引进行分片,各个分片可以分布在不同的物理节点上,多个物理分片组成一个完成的索引Collection。SolrCloud自动支持Sol...

翊骷
2014/09/17
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

web前端入门到实战:图解原生dialog标签(非常详细)

在html5中,新增了很多语义化的标签。如footer、header之类的,今天的主角是dialog标签 顾名思义,就是用来定义对话框的。目前只有Chrome和Safari支持该标签,所以用的不多,不过确实挺好用的...

梦想编程
19分钟前
2
0
一些php常用函数积累

本文链接<?php// id: ecffe70d3af54df9bad97b61918ace7d global $ct_path, $ct_log_path;$log_path = "test_php.txt";// 是否先log到buffer,再通过CT_flush()一次性写入文件$......

一字见心
19分钟前
2
0
IntelliJ idea中 注释代码折叠

visual studio中有#region 可以折叠代码,IntelliJ idea 中也有类似功能 //region 描述代码//endregion

format
19分钟前
4
0
oracle表中更改主键

一、数据表有主键但无主键约束名 先删除之前的主键,后添加主键 ,执行SQL: a. alter table 表名 drop primary key; b. alter table 表名 add primary key(想要更改的字段名称); 二、数据表...

_Somuns
21分钟前
2
0
jQuery AJAX提交表单

我有一个名称为orderproductForm的表单,输入的数量不确定。 我想做某种jQuery.get或ajax或类似的事情,它将通过Ajax调用页面,并发送所有形式为orderproductForm的输入。 我想一种方法是做类...

技术盛宴
27分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部