介绍
zookeeper 起源于 Hadoop,使用 ZAB 协议作为其一致性协议,后来进化为 Apache 的顶级项目,现在已经被广泛使用在 Apache 的项目中,例如 Hadoop,kafka,solr 等等,具有如下特点:
- 非阻塞全部快照(达成最终一致)
- 高效的内存管理
- 高可靠
- API 简单
- 连接管理可以自动重试
- 支持监听事件
- 发生网络分区时,各个区都会开始选举 leader,那么节点数少的那个分区将会停止运行。
安装部署
下载软件
--所有节点
[root@node1 software]# wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.6.3.tar.gz
[root@node1 software]# tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz -C /opt
[root@node1 software]# cd ..
[root@node1 opt]# ln -s apache-zookeeper-3.6.3-bin zk
配置环境变量
--所有节点
export ZKHOME=/opt/zk
export PATH=/root/.ptk/bin:$ZKHOME/bin:$PATH
source ~/.bash_profile
编辑配置文件
配置文件在$ZKHONE/conf中
--所有节点
[root@node1 conf]# mv zoo_sample.cfg zoo.cfg
[root@node1 conf]# cat zoo_sample.cfg |grep -v '#'
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zk
clientPort=2181
server.1=192.168.122.221:2888:3888
server.2=192.168.122.157:2888:3888
server.3=192.168.122.68:2888:3888
在dataDir目录下创建myid文件,不同服务器的myid文件中的数字要与cfg文件中对应好
echo "1" > /data/zk/myid
echo "2" > /data/zk/myid
echo "3" > /data/zk/myid
启动集群
--node1
[root@node1 ~]# zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node1 logs]# zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
--node2
[root@node2 ~]# zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node2 ~]# zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
--node3
[root@node3 ~]# zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node3 ~]# zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /opt/zk/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@node3 ~]#
node2是leader,node1 和 node3 是follower
验证
[root@node1 logs]# zkCli.sh -server 192.168.122.157:2181
/usr/bin/java
Connecting to 192.168.122.157:2181
[zk: 192.168.122.157:2181(CONNECTED) 0] ls /
[zookeeper]
[zk: 192.168.122.157:2181(CONNECTED) 1] quit
问题汇总
1、启动报错
Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain
原因:从3.5版本以后命名发生了改变,需要下载xxx-bin.tar.gz的编译包,未带bin的包是未编译的
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




