zookeeper的安装与配置教程

ZooKeeper是Apache开源的分布式服务框架,可以为分布式应用程序提供协调服务,用来解决分布式应用中存在的问题,比如配置信息统一管理、域名服务、提供分布式同步、集群管理。ZooKeeper分为了文件系统和通知机制两个部分。

一、ZooKeeper文件系统与znode节点

ZooKeeper有着类似Linux一样的文件系统,这个文件系统由许多znode节点构成,每个节点对应了一个系统路径,通过该路径可以找到这个节点。由于znode主要用于存储一些配置信息,所以每个节点只能存储大约1M的数据。另外ZooKeeper还有以下几种节点类型:

1、持久化目录节点(persistent):集群宕机或者客户端断开连接后,该节点依然存在

2、持久化顺序编号目录节点(persistent_sequential):在持久化目录节点的基础上会将节点进行顺序编号,如0000000001、0000000002,在创建顺序编号节点时需要注意它是由父节点维护的,编号会从已有的子节点个数(包含已删除的节点)开始递增

3、临时目录节点(ephemeral):集群宕机或者客户端断开连接后,该节点会被删除

4、临时顺序编号目录节点(ephemeral):同持久化顺序编号目录节点

二、ZooKeeper通知机制与应用场景

ZooKeeper负责管理和维护项目上的公共数据,如集群环境中有多台应用服务器,它们拥有相同的配置文件,如果配置文件要变动的话每台服务器都需要变。为了解决这个问题,可以将这些配置文件放在ZK的某个节点中,然后ZK会将这些应用服务器看作是观察者并接受它们的订阅,如果数据发生变化,则通知这些观察者让它们做出相应处理。也就是说ZooKeeper是一个注册中心的角色。

除此之外ZooKeeper还可以对集群进行管理,在父目录GroupMembers下为所有集群节点创建临时顺序编号目录节点,然后选举编号最小的机器作为Master,并且监听父目录所有子节点的变化情况,一旦有机器挂掉,临时节点就会删除,此时集群其他机器都会收到通知。

三、ZooKeeper的安装和配置

安装基础环境

[root@localhost ~]# yum install vim net-tools wget -y

1、在官方下载二进制安装包并完成解压,由于是二进制安装包,无需编译。在运行zk之前请确认已经配置好JDK环境

[root@localhost ~]# wget https://pan.cnbugs.com/jdk/jdk-8u301-linux-x64.rpm
[root@localhost ~]# yum install jdk-8u301-linux-x64.rpm -y
[root@localhost ~]# wget https://mirrors.aliyun.com/apache/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
[root@localhost ~]# tar xf apache-zookeeper-3.6.3-bin.tar.gz 
[root@localhost ~]# mv apache-zookeeper-3.6.3-bin /usr/local/zookeepe
[root@localhost ~]# cd /usr/local/zookeeper/
[root@localhost zookeeper]# cp  conf/zoo_sample.cfg conf/zoo.cfg 

2、修改主配置文件相关内容

[root@localhost zookeeper]# vim conf/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=/data/zkdata
# 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.

3、创建数据目录和日志目录并启动服务

[root@localhost zookeeper]# mkdir /data/zkdata
[root@localhost zookeeper]# mkdir /data/zkdata/logs
[root@localhost zookeeper]# /usr/local/zookeeper/bin/zkServer.sh start
/usr/bin/java

查看状态

集群配置如下,节点增加如下信息

server.1=10.2.4.248:2888:3888 
server.2=10.2.4.249:2888:3888

在每个ZK节点的dataDir目录中去创建myid配置文件,文件内容是当前服务器的编号,也就是上面server.后面的数字,上面配了三个server.x,所以我们需要在三个机器都做配置:

echo 1 > /data/zkdata/myid
echo 2 > /data/zkdata/myid

查看监听状态

查看进程状态

发表评论

后才能评论