Zookeeper与Solr 概述 部署 Solr Cloud

solr

环境

  • CentOS 6.9
  • JDK 1.8
  • solr 4.10.2
  • Zookepper 3.4.9
  • Tomcat 7.0.82
  • IKAnalyzer2012FF_u1

solr 概述

  • 是一个独立的企业级搜索应用服务器, 用户可以通过http请求访问这个服务器, 获取或者写入对应的内容, 其底层是Lucene
  • Lucene 是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)

单机部署

  • 1)在solrexample目录下的webapps目录下
  • 2)找到solr.war 将其复制到tomcat的webapps目录下
  • 3)启动tomcat, 将war包进行解压, 然后关闭tomcat并将war包删除或者更改后缀名即可
    • 将其原有war包更改的主要目的是防止再次解压, 导致原有的设置失效
  • 4)tomcat运行solr所需要的jar包复制到solr的web-inf下的lib目录中 ,classes目录复制到web-inf下
  • 5)将example中solr的目录建议赋值到和tomcat同级的目录下(方便管理)
  • 6)打开tomcat的bin目录找到Catalina.bat文件, 将其右键打开
  • 7) 将下列参数设置到此文件中即可
    • set "JAVA_OPTS=-Dsolr.solr.home=目录位置"
    • 注意: 目录位置就是刚刚复制过来的solr的目录
  • 8) 启动tomcat,访问localhost:8080/solr即可

分布式部署

Zookeeper

zookeeper概述

	ZooKeeper是一个分布式的,开放源码(apache)的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase、dubbox、kafka的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
  • zookeeper在solrCloud中的作用
    • 主要用来管理solr集群中的相关配置信息和集群的运行状态, 协助solr进行主节点的选举

Zookeeper部署

  • 修改三台hosts文件: vi /etc/hosts 添加如下内容(填入自己ip与名字): 192.168.72.141 node01 192.168.72.142 node02 192.168.72.143 node03 注意: 添加时, 前面ip地址一定是自己的三台linux的ip地址 切记不要搞错了 1. 修改host
  • 2.上传zookeeper的压缩包(上传其中一台即可)
cd /export/software/
rz          //此时选择zookeeper的压缩包进行上传
  • 3.解压zookeeper并修改配置文件
tar -zxf zookeeper-3.4.9.tar.gz -C /export/servers/
cd /export/servers/
cd /export/servers/zookeeper-3.4.9/conf
mv zoo_sample.cfg  zoo.cfg
vi zoo.cfg

修改dataDir //指定路径
修改后, 在配置文件的底部, 添加如下内容
server.1=node01:2887:3887
server.2=node02:2887:3887
server.3=node03:2887:3887
服务器相互通信的端口,投票选举的端口
更改后配置文件整体内容如下:(如果担心修改错误, 可以直接将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=/export/data/zk
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# 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

#zookeeper集群配置
server.1=node01:2887:3887
server.2=node02:2887:3887
server.3=node03:2887:3887
  • 4.将配置好的zookeeper发送到其他两台主机上
cd /export/servers/
scp -r zookeeper-3.4.9/ root@node02:$PWD   //将zookeeper复制到node02的同级目录下
scp -r zookeeper-3.4.9/ root@node03:$PWD   //将zookeeper复制到node03的同级目录下
分别查看文件位置验证是否成功
  • 5.分别在三台主机写入myidmkdir -p /export/data/zk echo "1" > /export/data/zk/myid //依次在三台服务器写入1,2,3 cat /export/data/zk/myid
  • 6.分别启动三台zookeeper(建议启动顺序 node1>>node2>>node3 依次启动)
cd /export/servers/zookeeper-3.4.9/bin/
./zkServer.sh start

zookeeper的选举机制

1. 当第一台(id=1),启动后, 由于目前自有自己,故会把票投给自己
2. 当第二台(id=2),启动后, 由于目前已经又二台启动, 这时候会将票投给id最大的机器, 此时三台中已经有二台启动, 数量过半, 第二台理所应当的成为了leader
3. 当第三台(id=3),启动后, 虽然id=3为最大, 但是由于leader已经产生, 故只能担任follower
  • 当下一次在重新启动时, 又会恢复选举,此时谁的数据多, 谁为leader, 如果数据都一样, 那么看id谁最大,同时一般选举过半,就会产生leader

solrCloud搭建

  • 1.将在window中部署的单机版solr上传到node01中
cd /export/software/
rz             
  • 2.将zip进行解压到指定目录中
yum -y install unzip //已安装忽略此步
unzip solr.zip 
mv solr /export/servers/
  • 3.修改tomcat的Catalina.sh的配置文件
cd /export/servers/solr/apache-tomcat-7.0.77/bin
vim catalina.sh             //注意此时修改的.sh的文件 为非.bat

添加如下内容:(此处后期还会进行修改, 目前只是为了测试单机版本能否在linux中运行)
export "JAVA_OPTS=-Dsolr.solr.home=/export/servers/solr/solr-home"
  • 4.启动tomcat测试单机版本能否在linux中运行
注意: 由于是解压的是zip文件, tomcat中的.sh文件都没有任何的执行缺陷, 需要进行赋权限:
chmod 777 /export/servers/solr/apache-tomcat-7.0.77/bin/*

启动tomcat:
cd /export/servers/solr/apache-tomcat-7.0.77/bin/
./startup.sh 
成功后:将tomcat务必关机操作
./shutdown.sh 
  • 5.将solr-home中的data目录全部清空, 只保留一个索引库即可
 cd /export/servers/solr/solr-home/
 rm -rf collection2/                    //删除多余的索引库, 只保留一个collection1即可
 rm -rf collection1/data/
  • 6.将solr的配置文件交给zookeeper进行管理
1. 需要先上传solr的安装包
 cd /export/software/
 rz
2. 解压solr的安装包
	unzip solr-4.10.2.zip 
3. 将solr安装包复制到/export/servers下
	mv solr-4.10.2 /export/servers/
4. 开始执行上传
	cd /export/servers/solr-4.10.2/example/scripts/cloud-scripts/
	//注意: 以下命令是一行
	./zkcli.sh -zkhost node01:2181,node02:2181,node03:2181 -cmd upconfig -confdir /export/servers/solr/solr-home/collection1/conf/ -confname solrconf
以下命令主要用于查看zookeeper中是否存在solr的配置文件: 可以不执行跳过
cd /export/servers/zookeeper-3.4.9/bin
./zkCli.sh
ls /configs/solrconf
  • 7.修改solr.xml配置文件
    • solr.xml是solr集群管理文件,指定当前实例运行的ip地址及端口号。
cd /export/servers/solr/solr-home/
vim solr.xml

修改jetty.port:8080
// 目前用不到但为了统一路径建议修改
  • 8.修改tomcat的Catalina.sh配置文件
cd /export/servers/solr/apache-tomcat-7.0.77/bin/
vi catalina.sh 
*** 修改如下内容
export "JAVA_OPTS=-Dsolr.solr.home=/export/servers/solr/solr-home   //原来的内容

//以下为替换后的内容  注意: 这是一行内容, 复制时一起复制即可
export "JAVA_OPTS=-Dsolr.solr.home=/export/servers/solr/solr-home -DzkHost=node01:2181,node02:2181,node03:2181"      
  • 9.将solr目录发送到其他两台linux上(node02,node03)
cd /export/servers/
scp -r solr root@node02:$PWD
scp -r solr root@node03:$PWD
// 发送完成查看是否存在
  • 10.依次启动三台solr即可cd /export/servers/solr/apache-tomcat-7.0.77/bin/ ./startup.sh

状态zookeeper查询

查询运行状态
/export/servers/zookeeper-3.4.9/bin/zkServer.sh  status

zk客户端的使用

进入zk命令行工具
/export/servers//zookeeper-3.4.9/bin/zkCli.sh -server ip
  • 1.创建节点create -s path data acl
# 创建临时节点
# zkcli 断开临时节点消失
create -e /temp  temp

# 创建临时顺序节点
create -s -e /temp temp

# 创建永久节点
create /chujian chujian 

# 创建永久顺序节点
create -s /chujian chujian
  • 2.读取节点

ls path watch 读取节点信息

get path watch 获取节点参数

ls2 path watch 获取节点详细信息

# 获取节点信息
ls / 
#  获取节点详细信息
ls2 /
# 获取节点参数
get /chujian
  • 3.更新节点参数data 就是要更新的新内容,version 表示数据版本。

set path data version

# 更新节点参数
set /chujian chujian01 
  • 4.删除节点

若删除节点存在子节点,那么无法删除该节点,必须先删除子节点,再删除父节点。 delete path version

可以递归删除节点。 Rmr path

setquota -n|-b val path 对节点增加限制。 n:表示子节点的最大个数 b:表示数据值的最大长度 val:子节点最大个数或数据值的最大长度 path:节点路径 listquota path 列出指定节点的 quota 子节点个数为 2,数据长度-1 表示没限制 delquota -n|-b path 删除 quota

  • 5.历史命令

查看历史命令 history

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张戈的专栏

Llinux文件目录权限及chmod命令简析

这些天,在互推联盟群(344134224 )遇到几例关于 WP 升级失败以及 FTP 账号登陆的问题。最终发现都是主机的目录权限设置存在问题。比如,博友【PPT...

4416
来自专栏idba

一款基于go语言的agent

一 介绍 在构建数据库自动化运维系统的时候,数据库服务器上必须要有一个agent来执行web服务器端发起的命令,我们研究了好几种技术Celery,Redis ...

1830
来自专栏進无尽的文章

基础篇-Mac终端指令大全

在日常开发中我们经常会用到一些Mac的指令在终端中进行操作,所以了解和熟练使用一些基本的Mac终端指令是非常有必要的,也有利于自己的职业发展,下面就简单总结下M...

951
来自专栏容器云生态

根据红帽RHEL7官方文档对centos7进行技术剖析(一)

序言:红帽7教学环境介绍 rht-vmctl命令介绍; $ rht-vmctl start desktop     启动desktop虚拟机 $ rht-vmc...

3116
来自专栏小樱的经验随笔

mount命令详解及常见问题汇总

一 、mount命令(用来挂载硬盘或镜像等) 用法:mount [-t vfstype] [-o options] device dir 1、-t vfstyp...

7745
来自专栏MoeLove

CentOS7上安装Python3.6

当前最新的 CentOS 7.3 默认安装的是 Python 2 ,并且默认的官方 yum 源中不提供 Python 3 的安装包。有些用户想要升级使用 Pyt...

3462
来自专栏mwangblog

Linux文件权限

1623
来自专栏测试开发架构之路

Tomcat入门

1、JavaWeb概念 Java web,是用java技术来解决相关web互联网领域的技术的总称。web包括:web服务器和web客户端两部分。 java在...

6567
来自专栏架构师小秘圈

数据库连接池极简教程

一,常规数据库连接 ? 常规数据库连接一般由以下六个步骤构成: 装载数据库驱动程序; 建立数据库连接; 创建数据库操作对象 访问数据库,执行sql语句; 处理返...

3954
来自专栏linux运维学习

linux学习第十一篇:linux和Windows互传文件,用户配置文件和密码配置文件,用户组管理以及用户管理

linux和Windows互传文件 先使用命令yum install -y lrzsz安装 PS:前提是使用xshell或者securecrt。putty不支持...

2426

扫码关注云+社区

领取腾讯云代金券