Zookeeper-学习记录(一)

  • 2019-05-25 14:31:03
  • 329
  • 0

zookeeper 官网:

http://zookeeper.apache.org


Zookeeper 下载地址:

http://zookeeper.apache.org/releases.html


Zookeeper 是一个经典的分布式数据一致性解决方案,分布式应用程序可以基于它实现数据发布和订阅,负载均衡,命名服务,分布式协调和通知,集群管理,领导选举,分布式锁,分布式队列等等功能。


zookeeper 一般都以集群的方式对外提供服务,一个集群包含多个节点,每个节点都对应一台zookeeper服务器,所有节点对外提供服务,一般都是部署奇数。


zookeeper 的特性:顺序性,一致性,原子性,可靠性,实时性。


zookeeper 内部有一个树状的内存模型,类似于文件系统,有若干个目录,每个目录有若干个文件。zookeeper 内部把这些目录和文件统称为znode.


ZNode 有4种节点类型:

1 Persistent 持久节点,当会话结束,该节点不会被删除。

2 Persistent Sequential 持久顺序节点,当会话结束,该节点不会被删除,且节点名中带自增数后缀。

3 Ephemeral 临时节点,当会话结束后,该节点将会被删除。

4 Ephemeral Sequential 临时顺序节点,当会话结束后,该节点将会被删除,且节点名中自带自增数后缀。



下载安装Zookeeper:


http://mirror.bit.edu.cn/apache/zookeeper/

生产环境建议安装table版本


下载解压缩,修改配置文件。


Zookeeper 默认提供了一份名为zoo_sample.cfg 的示例配置文件,只需要复制conf目录下的zoo_sample.cfg 文件,并将其重命名为zoo.cfg即可。


liunx 系统执行以下命令即可:


cp /conf/zoo_sample.cfg   /conf/zoo.cfg


5个比较重要的配置项:


tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181


tickTime  滴答时间,默认值是2000,单位毫秒。Zookeeper 配置项的最小计算时间单元。


initLimit  用于配置leader节点等待follower节点启动并完成数据同步的时间。默认值是10,就是10 * tickTime 。


syncLimit  用于配置leader节点和follower节点之间进行心跳检测的最大延长时间。默认值5,即5 * tickTime


dataDir  用于配置zookeeper 服务器存储快照文件的目录,生产环境不建议放在tmp目录下,该目录下的文件有可能会自动删除。在zookeeper集群环境中,将生成一个名为myid的文件,该文件用于存放zookeeper集群节点的ID。


clientPort  用于配置当前zookeeper服务器对外暴露的端口,默认值是2181,可以配置任意端口



启动zookeeper 


liunx 系统直接执行 


bin/zkServer.sh start


验证服务是否有效:


bin/zkServer.sh status


windows 直接执行 ,即可启动zookeeper


bin/zkServer.cmd


验证是否有效 


/bin/zkCli.cmd 127.0.0.1:2181


如图:





搭建zookeeper 集群环境



修改配置文件:


tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890


server 配置格式:

server.<id>=<ip>:<port1>:<port2>


id 即是 集群中唯一的编号,取值范围是1~255之间的整数。特别注意的是,需要在dataDir 目录下面创建一个myid的文件,文件里面的内容就是该节点编号id的值,比如节点id是 1,则内容是1.


ip 节点ip地址


port1  表示 leader 节点和follower 节点进行心跳检测和数据同步使用的端口


port2  表示进行领导选举过程中,用于投票通信的端口






回复
举报
全部回复(0)

参与讨论