一、准备工作

首先保证已经安装JDK工具包:

[root@localhost opt]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

本文目的在演示solr集群环境的搭建过程,由于资源的限制这里是伪集群。

使用版本如下:

  • solr-8.2.0
  • zookeeper-3.4.14

这里有个坑,本来是使用zookeeper-3.5.5.tar.gz的,但是不知道为什么搭建集群的时候zookeeper节点就是无法正常启动,没办法就只好降低版本使用了3.4.14,再然后在StackOverflow网站上找到答案要使用3.5.5-bin.tar.gz,但是我并没有试过,有空再鼓捣下吧。

二、zookeeper集群

依照个人习惯,下载zookeeper到/opt目录下,为了阅读更直观,以下所有命令都在/opt目录下进行。

解压:

wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar -zxvf zookeeper-3.4.14.tar.gz -C .

在/opt/下创建目录solr-cluster,将zookeeper-3.4.14复制三份到solr-cluster目录下,作为3个节点:

cp -r zookeeper-3.4.14 solr-cluster/zookeeper1
cp -r zookeeper-3.4.14 solr-cluster/zookeeper2
cp -r zookeeper-3.4.14 solr-cluster/zookeeper3

在每个zookeeper目录下都创建一个data目录作为数据存储目录:

mkdir solr-cluster/zookeeper1/data
mkdir solr-cluster/zookeeper2/data
mkdir solr-cluster/zookeeper3/data

在data目录下创建一个myid文件,文件内容表示每个实例的id

echo 1 >> solr-cluster/zookeeper1/data/myid
echo 2 >> solr-cluster/zookeeper2/data/myid
echo 3 >> solr-cluster/zookeeper3/data/myid

复制zookeeper/conf下的zoo_sample.cfg,设置新文件名为zoo.cfg

cp solr-cluster/zookeeper1/conf/zoo_sample.cfg solr-cluster/zookeeper1/conf/zoo.cfg
cp solr-cluster/zookeeper2/conf/zoo_sample.cfg solr-cluster/zookeeper2/conf/zoo.cfg
cp solr-cluster/zookeeper3/conf/zoo_sample.cfg solr-cluster/zookeeper3/conf/zoo.cfg

修改zoo.cfg配置文件,以zookeeper1为例:

dataDir=/opt/solr-cluster/zookeeper1/data
clientPort=2181

dataDir表示zookeeper实例保存数据的目录,clientPort表示客户端连接zookeeper的端口号。

末尾添加如下配置,要注意的是ip后的两个端口号不能冲突:

server.1=192.168.56.99:3181:4881
server.2=192.168.56.99:3182:4882
server.3=192.168.56.99:3183:4883

1,2,3表示节点id,即myid中的内容;3xxx端口号表示zookeeper内部通讯的端口号;4xxx端口号表示zookeeper选举投票端口号。

zookeeper2、zookeeper3以同样的方式分别指定自己的data目录,分别设置clientPort为2182,2183以及添加集群节点列表配置。

启动zookeeper节点:

./solr-cluster/zookeeper1/bin/zkServer.sh start
./solr-cluster/zookeeper2/bin/zkServer.sh start
./solr-cluster/zookeeper3/bin/zkServer.sh start

查看zookeeper状态:

./solr-cluster/zookeeper1/bin/zkServer.sh status
./solr-cluster/zookeeper2/bin/zkServer.sh status
./solr-cluster/zookeeper3/bin/zkServer.sh status

正常情况下,应该出现一个leader,两个follwer。

三、solr集群

复制tomcat到上述solr-cluster目录中,这里创建3个节点:

cp -r apache-tomcat-8.5.47/ solr-cluster/tomcat1
cp -r apache-tomcat-8.5.47/ solr-cluster/tomcat2
cp -r apache-tomcat-8.5.47/ solr-cluster/tomcat3

修改每个节点server.xml文件,这里以tomcat1节点为例:

<!-- 默认为8005 -->
<Server port="8105" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
...
<!-- 默认为8080 -->
<Connector port="8180" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
...
<!-- 默认为8109 -->
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />

以同样方式修改为tomcat2,tomcat3,分别为82xx,83xx。

Solr单机环境搭建及配置IK分词器中搭建好的solr复制到tomcat里:

cp solr/tomcat8/webapps/solr/ solr-cluster/tomcat1/webapps/
cp solr/tomcat8/webapps/solr/ solr-cluster/tomcat2/webapps/
cp solr/tomcat8/webapps/solr/ solr-cluster/tomcat3/webapps/

为每一个solr接点创建solrhome,直接复制单机版的solrhome即可。

cp -r solr/solrhome/ solr-cluster/solrhome1
cp -r solr/solrhome/ solr-cluster/solrhome2
cp -r solr/solrhome/ solr-cluster/solrhome3

修改solrhome下的solr.xml配置文件,以下以solrhome1为例:

<solrcloud>
<str name="host">192.168.56.99</str>
<int name="hostPort">8180</int>
<str name="hostContext">${hostContext:solr}</str>
...

host表示tomcat服务节点ip,hostPort表示solr服务端口号。

修改solr服务web.xml配置,将web服务于solrhome目录联系起来,以tomcat1为例:

vim solr-cluster/tomcat1/webapps/solr/WEB-INF/web.xml
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/opt/solr-cluster/solrhome1</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>

tomcat2、tomcat3相似。

接下来,需要使用zookeeper集中管理solr的配置文件,将solr配置文件上传到zookeeper:

./solr-8.2.0/server/scripts/cloud-scripts/zkcli.sh -zkhost 192.168.56.99:2181,192.168.56.99:2182,192.168.56.99:2183 -cmd upconfig -confdir /opt/solr-cluster/solrhome1/configsets/sample_techproducts_configs/conf -confname solr-cluster-conf
  • 192.168.56.99:2181,192.168.56.99:2182,192.168.56.99:2183表示zookeeper节点列表
  • -cmd upconfig 执行操作
  • /opt/solr-cluster/solrhome1/configsets/sample_techproducts_configs/conf 要上传的配置文件目录,其实主要是managed-schema、solrconfig.xml两个文件
  • -confname solr-cluster-conf 给上传的配置文件起个名儿,这里是solr-cluster-conf

检查上传是否成功:

./solr-8.2.0/server/scripts/cloud-scripts/zkcli.sh
ls /configs

修改tomcat/bin下的catalina.sh,关联solr和zookeeper

#JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
JAVA_OPTS="-DzkHost=192.168.56.99:2181,192.168.56.99:2182,192.168.56.99:2183"

这样每个solr实例和zookeeper建立了联系,solr会将自己状态及时发送给zookeeper。

启动tomcat实例,访问管理界面,这个和单机没啥区别。

Solr集群环境搭建的更多相关文章

  1. Solr集群的搭建以及使用(内涵zookeeper集群的搭建指南)

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

  2. solr集群的搭建教程和使用入门

    1 什么是SolrCloud? SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud. 当一个系统的索引数据量少的时候 ...

  3. Linux环境下SolrCloud集群环境搭建关键步骤

    Linux环境下SolrCloud集群环境搭建关键步骤. 前提条件:已经完成ZooKeeper集群环境搭建. 一.下载介质 官网下载地址:http://www.apache.org/dyn/close ...

  4. ZooKeeper 介绍及集群环境搭建

    本篇由鄙人学习ZooKeeper亲自整理的一些资料 包括:ZooKeeper的介绍,我们要学习ZooKeeper的话,首先就要知道他是干嘛的对吧. 其次教大家如何去安装这个精巧的智慧品! 相信你能研究 ...

  5. solr集群的搭建

    solrCloud 昨天随手写了个solr单机版的搭建,今天准备写一个solr集群的搭建!1.solr集群只要环境配置正确还是比较简单的环境:CentOS-6.4-i386-bin-DVD1.isoj ...

  6. 【Hadoop离线基础总结】zookeeper的介绍以及集群环境搭建、网络编程和RPC的简单了解

    ZooKeeper的介绍以及集群环境搭建.网络编程和RPC的简单了解 ZooKeeper介绍 概述 ZooKeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题.例如 ...

  7. Hadoop+Spark:集群环境搭建

    环境准备: 在虚拟机下,大家三台Linux ubuntu 14.04 server x64 系统(下载地址:http://releases.ubuntu.com/14.04.2/ubuntu-14.0 ...

  8. 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

    上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点 ...

  9. Spark 1.6.1分布式集群环境搭建

    一.软件准备 scala-2.11.8.tgz spark-1.6.1-bin-hadoop2.6.tgz 二.Scala 安装 1.master 机器 (1)下载 scala-2.11.8.tgz, ...

随机推荐

  1. MySQL数据库的特点和优势

    MySQL数据库的特点和优势: 1.MySQL性能卓越.服务稳定,很少出现异常宕机. 2.MySQL开放源代码且无版权制约,自主性及使用成本低. 3.MySQL历史悠久,用户使用活跃,遇到问题可以寻求 ...

  2. C++ 中的new、malloc、namespace

    1,这些新引入的成员想要解决 C 语言中存在的一些问题, 2,动态内存分配: 1,C++ 中的动态内存分配: 1,C++ 中通过 new 关键字进行基于类型的动态内存申请: 1,C 语言中自身不包含动 ...

  3. linux 进程2

    一. exec族函数 1.1. 为什么需要exec函数 a. fork子进程是为了执行新程序(fork创建了子进程后,子进程和父进程同时被OS调度执行,因此子进程可以单独的执行一个程序,这个程序宏观上 ...

  4. 常用的 Python 标准库都有哪些?

    标准库:os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing进程,queue 队列. 第三方库:django 和 f ...

  5. PBOC第八部分和第十一部分关于TYPEA总结(一)——初始化和防冲突(ISO14443-3)

    PBOC第八部分和第十一部分关于TYPEA总结(一) ——初始化和防冲突(ISO14443-3) 第八部分 与应用无关的非接触式规范 ISO14443(1~4) 第十一部分 非接触式IC卡通讯规范 在 ...

  6. RESTful API 设计总结

    RESTful API 设计总结 @(技术-架构)[API, 规范, 设计] RESTful的接口设计风格应用的越来越广泛,包括Spring Cloud等微服务架构平台之间的调用都是以RESTful设 ...

  7. MATLAB图像的代数运算

    1.图像旋转与缩放 bm=imread("3.png"); %subplot(1,3,1); imshow(bm); %缩放图片 %bt=imresize(bm,0.5,'near ...

  8. Site error: the ionCube PHP Loader needs to be installed.解决办法

    问题描述: 有些模块的作者为了保护代码而采用ionCube加密的代码,所以这里必须给服务器装上这个php的扩展,就好像以前的zend一样 解决办法: http://bbs.52jscn.com/thr ...

  9. 22 道高频 JavaScript 手写面试题及答案

    实现防抖函数(debounce) 防抖函数原理:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. 那么与节流函数的区别直接看这个动画实现即可. 手写简化版: // 防抖函数 cons ...

  10. GUI学习之二十四——QDialog学习总结

    今天学习对话框输入控件的基类(QDialog). 一.描述 是对话类窗口(字体框.颜色选择.文件选择框等)的基类. 对话框窗口是顶级窗口(就是说不包含于哪个父类的显示界面里),主要用于短期任务和与用户 ...