Linux实战下~zookeeper集群与solr集群

昨天写的solr单机版,今天就先把solr集群版也写一下吧,因为solr需要用到zookeeper,那么我们首先需要安装zookeeper集群,如果zookeeper只安装一个的话也会造成这个服务挂掉的话,其他服务也会挂。无法使用的情况。

ZooKeeper介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

首先Zookeeper给我们能提供什么呢?

  • Zookeeper文件系统,其实就是采用了层次性文件的目录结构并且命名也符合常规文件的规范。名字就是叫做Znode,这个Znode有四种类型。
  1. 包含持久化目录节点PERSISTENT-客户端与zookeeper断开连接后,该节点依然会存在。
  2. 持久化顺序编号目录节点PERSISTENT_SEQUENTIAL, 该节点也会依旧存在,只是Zookeeper会给该节点进行顺序编号
  3. EPHEMERAL-临时目录节点 ,客户端与zookeeper断开连接后,该节点被删除
  4. EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 ,客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号

Zookeeper的特点

  1. 最终的一致性:给客户端展示同一个视图。
  2. 可靠性:一个消息被其中一个接收到,其他的服务器也会接收到。
  3. 实时性:zookeeper通过在读取数据之前调用sync接口保证数据的一直性。
  4. 等待无关:慢的或者失效的client不干预快速的client请求
  5. 原子性:更新只有成功与失败两种状态
  6. 顺序性:所有的server,同一消息发布顺讯一致。

zookeeper机制

  1. 每个server都会存储一份数据
  2. 集群启动的时候会从启动的实例中选举一个leader(利用的是Paxos协议)
  3. Leader负责处理数据更新等操作(利用Zab协议)
  4. 数据更新成功后,会在大多数的Server内容中修改成功数据

具体的zookeeper请看官网吧这些就简单的介绍下。

zookeeper集群的搭建

上传的步骤我们就不说了

  1. 首先我们需要创建三个zookeeper,因为该集群也是才去投票的方式选择主从。然后在zookeeper01目录下创建一个data文件夹,在data目录下创建一个myid的文件,然后写入内容 1(01对应1,zookeeper02 对应2 ,zookeeper03对应3)
  2. 然后我们进入conf文件,复制zoo_sample.cfg文件改名为zoo.cfg
  3. 修改zoo.cfg文件中的dataDir=属性,指定为刚创建的文件夹data路径并且把clientPort指定为不冲突的端口号(01:2181、02:2182、03:2183)
  4. 在zoo.cfg中添加如下内容:

server.1=localhost:2881:3881

server.2=localhost:2882:3882

server.3=localhost:2883:3883

e. 启动我们的zookeeper ,在文件bin目录下使用如下命令启动:

./zkServer.sh start

关闭:./zkServer.sh stop

查看服务状态:./zkServer.sh status

solr集群的搭建

跟单机版的solr类似,但是也有不同的。我们需要把solr注册到zookeeper中。

  1. 首先我们需要准备多个tomcat。我这里准备了4个 端口改为80 81 82 83 四个。
  2. 复制我们单机版 的在各个tomcat中部署solr.复制到tomcat的webapps下即可,配置solrhome,修改web.xml 还有在集群中我们需要修改solr.xml中的端口和ip访问等。可以看我写的单机版solr配置
  3. 将配置文件上传到zookeeper中,这个是从solr 解压包里面拿出来的/root/solr-4.10.3/example/scripts/cloud-scripts/zkcli.sh命令上传配置文件。
  4. 把/usr/local/solr-cloud/solrhome01/collection1/conf目录上传到zookeeper。./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/collection1/conf -confname myconf 在这里如果 自己是在远程服务器里面搭建的可以改成自己的远程ip.
  5. 使用zookeeper中的zkCli.sh命令查看是否启动成功
  6. 告诉solr实例zookeeper的位置。需要修改tomcat的catalina.sh添加JAVA_OPTS="-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183"
  7. 最后启动查看下是否成功即可

原文发布于微信公众号 - LuckQI(YoungRUIQ)

原文发表时间:2018-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上备份和还原Redis数据

Redis是一个键值缓存的数据库,它可以持久保存(永久保存)到磁盘存储(即数据库)中。在本文中,您将了解如何在Ubuntu 14.04服务器上备份Redis数据...

42250
来自专栏云计算教程系列

如何在Ubuntu 13.10上从Binary Tarballs安装MariaDB

目前,MariaDB可以直接替代MySQL而不需要任何额外代码配置。本文将介绍如何在Ubuntu 13.10 VPS上安装MariaDB5.5.34 x86_6...

12930
来自专栏云计算教程系列

如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序

Redis是一个开源键值缓存和存储系统,由于其对多种数据类型(如散列,列表,集合和位图等)的高级支持,也称为数据结构服务器。它还支持群集,使其在高度可用和可扩展...

15530
来自专栏苦逼的码农

Linux达人养成计划2---虚拟机下的网络配置

当然也可以选择其他模式,不过这里,我们只讲桥接模式的,至于三种模式的区别,可以自行百度一下。

14530
来自专栏一名合格java开发的自我修养

redis主从,哨兵回忆手册

  Slave Server同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据(注意初次同步则会阻塞)。

12510
来自专栏黑泽君的专栏

【MyEclipse】我们导入的jar包后, 一般没有关联源码, 需要手动进行关联!推荐这种方式。

11850
来自专栏河湾欢儿的专栏

node初

www.nodejs.org 下载nodejs的安装文件, 然后就直接下一步,下一步,下一步傻瓜式安装 (打开命令符 widow+r 输入cmd) nod...

7710
来自专栏实战docker

Docker下kafka学习,三部曲之一:极速体验kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,从本章开始我们先极速体验,再实战docker下搭建kafka环境,最后开发一个java web应用来体验kaf...

31870
来自专栏散尽浮华

centos下部署redis服务环境的操作记录

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日...

188100
来自专栏Java后端技术栈

使用Redis存储Nginx+Tomcat负载均衡集群的Session

环境:Cent OS 7.0(虚拟机环境)、Nginx 1.9.8、Redis 3.2.1

11720

扫码关注云+社区

领取腾讯云代金券