ZooKeeper安装

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用。同时,Kafka也依赖Zookeeper。

概念:

* ZooKeeper 本身就是一个分布式程序(只要半数以上节点存活,ZooKeeper 就能正常服务)。

* 为了保证高可用,最好是以集群形态来部署 ZooKeeper,这样只要集群中大部分机器是可用的(能够容忍一定的机器故障),那么 ZooKeeper 本身仍然是可用的。

* ZooKeeper 将数据保存在内存中,这也就保证了 高吞吐量和低延迟(但是内存限制了能够存储的容量不太大,此限制也是保持 Znode 中存储的数据量较小的进一步原因)。

* ZooKeeper 是高性能的。在“读”多于“写”的应用程序中尤其的高性能,因为“写”会导致所有的服务器间同步状态。(“读”多于“写”是协调服务的典型场景。)

* ZooKeeper 有临时节点的概念。当创建临时节点的客户端会话一直保持活动,瞬时节点就一直存在。而当会话终结时,瞬时节点被删除。持久节点是指一旦这个 ZNode 被创建了,
  除非主动进行 ZNode 的移除操作,否则这个 ZNode 将一直保存在 Zookeeper 上。

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

集群:

* ZooKeeper 集群中的所有机器通过一个 Leader 选举过程来选定一台称为 “Leader” 的机器。
  Leader负责进行投票的发起和决议,更新系统状态。

* Leader 既可以为客户端提供写服务又能提供读服务。除了 Leader 外,Follower 和  Observer 都只能提供读服务。

* Follower 和 Observer 唯一的区别在于 Observer 机器不参与 Leader 的选举过程,也不参与写操作的“过半写成功”策略。
  因此 Observer 机器可以在不影响写性能的情况下提升集群的读性能。
  • 安装java环境:
tar zxf jdk-8u191-linux-x64.tar.gz && mv jdk1.8.0_191/ /usr/local/jdk

vim /etc/profile

JAVA_HOME=/usr/local/jdk
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib
export JAVA_HOME PATH CLASSPATH

source !$

java -version

ln -s /usr/local/jdk/bin/java /usr/local/bin/java
  • 安装:
mkdir /software && cd /software

wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

tar zxf zookeeper-3.4.9.tar.gz

mv zookeeper-3.4.9 /home/zookeeper

cp /home/zookeeper/conf/zoo_sample.cfg /home/zookeeper/conf/zoo.cfg
  • 配置:
vim /home/zookeeper/conf/zoo.cfg

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/data
clientPort=2181
maxClientCnxns=1024

tickTime:Zookeeper中最小时间单元的长度

initLimit:默认值为10,表示是tickTime的10倍。Leader服务器等待Follower启动,并完成数据同步的时间

syncLimit:默认值为5,表示是tickTime的5倍。Leader服务器和Follower之间进行心跳检测的最大延时时间

dataDir:Zookeeper服务器存储快照文件的目录

clientPort:Zookeeper对外的服务端口,集群中无须保持一致

maxClientCnxns:默认是60,从Socket层面限制单个客户端与单台服务器之间的并发连接数

如果是集群,建议奇数台机器集群,每台机器这样配置:

tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/zookeeper/data
clientPort=2181
maxClientCnxns=1024
server.1=192.168.30.128:2888:3888
server.2=192.168.30.129:2888:3888
server.3=192.168.30.130:2888:3888
  • 指明id:
mkdir /home/zookeeper/data

echo 1 > /home/zookeeper/data/myid              #集群则分别指明,不同即可
  • 启动:
/home/zookeeper/bin/zkServer.sh start

netstat -lntp |grep java
  • 停止:
/home/zookeeper/bin/zkServer.sh stop
  • 重启:
/home/zookeeper/bin/zkServer.sh restart
  • 查看状态:
/home/zookeeper/bin/zkServer.sh status

为了方便管理zookeeper服务,可以做个软链接:

ln -s /home/zookeeper/bin/zkServer.sh /usr/local/bin/zookeeper
  • zookeeper命令行:
telnet 127.0.0.1 2181

dump

echo dump | nc 127.0.0.1 2181
  • dubbo使用:
dubbo.registry.address=zookeeper://192.168.30.128:2181?backup=192.168.30.129:2181,192.168.30.130:2181

<dubbo:registry protocol="zookeeper" address="192.168.30.128:2181,192.168.30.129:2181,192.168.30.130:2181" />
  • kafka使用:
zookeeper.connect=192.168.30.128:2181,192.168.30.129:2181,192.168.30.130:2181

更多资料参考:

ZooKeeper详解

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值