Zookeeper集群的安装与部署

一、ZooKeeper的概述

        Zookeeper 是为分布式应用程序提供高性能协调服务的工具集合,也是Google的Chubby一个开源的实现,是Hadoop 的分布式协调服务。它包含一个简单的原语集,分布式应用程序可以基于它实现配置维护、命名服务、分布式同步、组服务等。Zookeeper可以用来保证数据在ZK集群之间的数据的事务性一致。其中ZooKeeper提供通用的分布式锁服务,用以协调分布式应用。

        zk是Apache Hadoop的一个子项目,主要是用来解决分布式应用中经常遇到的一些数据管理问题。

    列举了一些可能会遇到的场景:

  • 命名服务:订单编号,防止出现订单号相同。

  • Master选举:监听主节点是否挂了,从节点顶上来。

  • 集群管理:注册中心

  • 配置管理:

  • 分布式队列:

  • 分布式锁:


二、目录结构介绍

 

 


三、配置文件

 

序号

参数名

说明

1

clientPort

客户端连接server的端口,即对外服务端口,一般设置为2181吧。

2

dataDir

存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。

3

tickTime

ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。

4

dataLogDir

事务日志输出目录。尽量给事务日志的输出配置单独的磁盘或是挂载点,这将极大的提升ZK性能。(No Java system property)

5

globalOutstandingLimit

最大请求堆积数。默认是1000。ZK运行的时候, 尽管server已经没有空闲来处理更多的客户端请求了,但是还是允许客户端将请求提交到服务器上来,以提高吞吐性能。当然,为了防止Server内存溢出,这个请求堆积数还是需要限制下。(Java system property: zookeeper.globalOutstandingLimit.)

6

preAllocSize

预先开辟磁盘空间,用于后续写入事务日志。默认是64M,每个事务日志大小就是64M。如果ZK的快照频率较大的话,建议适当减小这个参数。(Java system property: zookeeper.preAllocSize)


四、ZK安装

我的在centos7系统上操作的

1、首先下载安装包

官网下载地址:http://mirrors.hust.edu.cn/apache/zookeeper/

2、解压安装包

 tar -xzvf apache-zookeeper-3.5.5-bin.tar.gz 

3、创建zookeeper目录

mkdir zookper

然后进入zookper目录下创建zk1  zk2  zk3 目录,用于存放三个zk

cd zookpermkdir zookpermkdir zk1mkdir zk2mkdir zk3

 

4、解压文件放置到 zk1  zk2 zk3 下

cp -rf /usr/local/apache-zookeeper-3.5.5-bin/*  /usr/local/zookeeper/zk1cp -rf /usr/local/apache-zookeeper-3.5.5-bin/*  /usr/local/zookeeper/zk2cp -rf /usr/local/apache-zookeeper-3.5.5-bin/*  /usr/local/zookeeper/zk3

 

5、创建 zoo.cnf

cd  /usr/local/zookeeper/zk1cp zoo_sample.cfg zoo.cfg

 

6、修改配置文件,如下

# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can pass between # sending a request and getting an acknowledgementsyncLimit=5# the directory where the snapshot is stored.# do not use /tmp for storage, /tmp here is just # example sakes.dataDir=/usr/local/zookeeper/zk1/data # the port at which the clients will connectclientPort=20181 # 客户端端口号# 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#quorumListenOnAllIpds=true# 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=1server.1=localhost:2287:3387server.2=localhost:2288:3388server.3=localhost:2289:3389

7、设置myid

dataDir=/usr/local/zookeeper/zk1/data 

在配置文件设置的dataDir目录下设置myid

echo 1 > myidecho 2 > myidecho 3 > myid


然后分别启动

 /usr/local/zookeeper/zk1/bin/zkServer.sh start /usr/local/zookeeper/zk2/bin/zkServer.sh start  /usr/local/zookeeper/zk3/bin/zkServer.sh start

8、启动出现问题

    ​a、检查配置文件,各个目录是否正确,是否在对应目录设置了myid

    ​b、检查防火墙是否开启

 


 

五、ZK基本命令

# 启动/usr/local/zookeeper/zk1/bin/zkServer.sh start# 查看状态 leader 主  follower 从/usr/local/zookeeper/zk1/bin/zkServer.sh status# 关闭/usr/local/zookeeper/zk1/bin/zkServer.sh stop# 进入客户端/usr/local/zookeeper/zk1/bin/zkCli.sh -server {host}:2181

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章