centos7下zookeeper集群安装部署

Zookeeper介绍

Zookeeper是一个分布式协调服务。本身就是一个分布式程序,只要半数以上节点存活,zookeeper就能正常服务。为分布式应用提供一致性服务(CAP理论的CP,区别于Eureka的AP)。

zookeeper底层其实只提供了两个功能:1)管理(存储、读取)用户程序提交的数据;2)为用户程序提交数据节点监听服务

 

原理zookeeper在配置文件中并没有指定masterslave,但是,zookeeper在工作时,只有一个节点为leader,其余节点为followerleader是通过内部的选举机制临时产生的。

半数机制:集群中半数以上机器存活,集群可用;zookeeper集群适合搭建在奇数台机器上。

====================================================================

安装环境

Zookeeper集群最好至少安装3个节点,这里端口采用默认zookeeper默认端口:2181

安装步骤

1. 下载zookeeper并解压

官网推荐下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

版本上选择的时候,需要注意的是:3.5.5的版本,要求的jdk1.8的版本必须是u211或更高。

tar -zxvf zookeeper-3.4.14.tar.gz -C /opt/

2. 编辑配置文件

进入conf目录,cp生成一个zk能识别的配置文件zoo.cfg,如下

cp zoo_sample.cfg 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=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181

配置参数说明:

initLimit和syncLimit是针对集群的参数

1.tickTime:CS通信心跳数

      Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。

      tickTime以毫秒为单位。

      tickTime:该参数用来定义心跳的间隔时间,zookeeper的客户端和服务端之间也有和web开发里类似的session的概念,而zookeeper里最小的session过期时间就是tickTime的两倍。

2.initLimit:LF初始通信时限
      集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。

      此配置表示,允许 follower (相对于 leader 而言的“客户端”)连接 并同步到  leader 的初始化连接时间,它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。

      如果在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,进行另一次的领导选举。如果zk集群环境数量确实很大,同步数据的时间会变长,因此这种情况下可以适当调大该参数。默认为10。

     在搭建kafka集群的时候,启动zookeeper集群的时候(kafka内置了zookeeper),好像这个参数没有默认值,而是需要配置的。

3.syncLimit:LF同步通信时限

      集群中的follower服务器(F)与leader服务器(L)之间 请求和应答 之间能容忍的最多心跳数(tickTime的数量)。

      此配置表示, leader 与 follower 之间发送消息,请求 和 应答 时间长度。如果 follower 在设置的时间内不能与leader 进行通信,那么此 follower 将被丢弃。所有关联到这个跟随者的客户端将连接到另外一个跟随着。

4.dataDir : 存储内存数据库快照的位置,除非另有说明,否则为数据库更新的事务日志。

5.clientPort :侦听客户端连接的端口

centos7下zookeeper集群安装部署_第1张图片

三台节点配置一样,其他两台略。

单台服务器上部署集群的话,dataDire、clientPort和2888:3888,都要调整。(i.e. 2888:3888, 2889:3889, 2890:3890)

服务器名称后面的两个端口号:“2888”和“3888”。2888:followers与leader的TCP链接端口(ZooKeeper server uses this port to connect followers to the leader. When a new leader arises, a follower opens a TCP connection to the leader using this port.)。3888:选举leader时的TCP链接端口(Because the default leader election also uses TCP, we currently require another port for leader election.)

3.添加myid文件

说明:除了修改 zoo.cfg 配置文件,集群模式下还要新增一个名叫myid的文件,这个文件放在上述dataDir指定的目录下,这个文件里面就只有一个数据,就是上图配置中server.x的这个x(1,2,3)值,zookeeper启动时会读取这个文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是那个server(节点)。

4. 启动节点

切换到bin目录中查看一下:

  centos7下zookeeper集群安装部署_第2张图片

启动方法查看:

  

./zkServer.sh start

5. 查看节点状态

  当三台节点都启动完毕后可以查看他们各自在集群中的状态:

    ./zkServer.sh status

至此,zookeeper集群部署成功。

6. zookeeper客户端使用

  使用bin目录下的客户端登录脚本:zkCli.sh

       ./zkCli.sh -server 192.168.1.21:2181      //连本地节点

  ./zkCli.sh -server 192.168.1.21        //不带端口就采用默认2181端口

  ./zkCli.sh                  //不带参数回车默认连接本地IP和2181端口

  ./zkCli.sh -server 192.168.1.22        //也可以连接节点2的zk

centos7下zookeeper集群安装部署_第3张图片

说明:客户端连接后,用get / 命令可以发现此时只有zookeeper一项;如果此Zookeeper用于对Kafka或JStorm等提供服务,则还会有相应的其他目录

你可能感兴趣的:(分布式服务)