zookeeper介绍与安装(单机与伪分布式)

一、分布式文件系统概述

1、分布式文件系统:硬件、软件分布在不同计算机上,通过消息传递进行通信。
2、分布式文件系统存在的典型问题:通信异常、网络分区(分布式环境下,由于网络通讯故障,一些节点认为应用不可用,一些节点认为应用可用,整个系统提供服务时,造成不一致性)、三态(成功、失败、超时)、节点故障
3、任何分布式系统都必须遵循CAP特性,满足其中的两个,P:分区容错性,CP:一致性,AP:可用性。

二、zookeeper介绍

1、zookeeper的功能

zookeeper是一个分布式数据一致性的解决方案,可以基于它实现数据的发布及订阅、负载均衡、名称服务、分布式协调及通知、集群管理、master选举、分布式锁和分布式队列。

2、zookeeper的结构

zookeeper是一个集群,其中包括leader、follower、observer(观察者)
leader:选举产生,具备读写权限
follower:参与选举,可被选举,具备读权限
observer:参与选举,不可被选举,具备读权限

3、会话

zookeeper中,客户端与服务端是通过一个TCP长连接进行通信。

(面)4、数据节点

zookeeper数据存储于内存中,数据模型为树状结构,每个znode都会将数据存储在自己的内存中,znode包括持久节点(仅显示删除才消失)、临时节点(会话终止即消失)、持久化顺序节点(客户端与 zookeeper 断开连接后,该节点依旧存在,只是 Zookeeper 给该节点名称进行顺序编号)、临时顺序节点(客户端与 zookeeper 断开连接后,该节点被删除,只是 Zookeeper 给该节点名称进行顺序编号)

5、版本

zookeeper为每个znode维护一个stat的数据结构,记录当前znode的三个版本,分别为version(当前版本)、cversion(当前znode子节点版本)、aversion(当前znode的ACL版本)

6、ACL

zookeeper使用ACL进行权限控制

7、事件监听器

zookeeper上,由用户指定的触发机制,在某些事件产生时,zookeeper能将通知给相关客户端。

8、ZAB协议

ZAB协议为zookeeper的原子广播协议,为了选举新的leader,并保证数据的完整性和一致性。ZAB协议中存在三种状态,looking、following、leading,在leader故障或者集群刚启动时,所有的节点都处于looking状态,等到选出leader后,改为following状态。

9、安装

zookeeper的部署安装可以分为三种类型,单机模式、伪分布式(一个机器,启动多个zookeeper实例)、分布式模式(集群模式)

10、zookeeper命令的使用

(1)delete和rmr
持久节点只能使用delete和rmr删除,文件路径下没有子路径使用delete删除,存在子路径,使用rmr
(2)stat(查询节点信息)
cZxid:事务id,创建该事务的节点,
mZxid:最近更新该节点的事务id

11、watcher

client 端会对某个 znode 建立一个 watcher 事件,当该 znode 发生变化时,这些client 会收到 zk 的通知,然后 client 可以根据 znode 变化来做出业务上的改变等。

12、监控zookeeper的四字命令

ruok、stat、srvr、conf、cons、wchs、envi

[root@centos7 bin]# telnet 192.168.43.101 2181
Trying 192.168.43.101...
Connected to 192.168.43.101.
Escape character is '^]'.
ruok
imokConnection closed by foreign host.
[root@centos7 bin]# telnet 192.168.43.101 2181
Trying 192.168.43.101...
Connected to 192.168.43.101.
Escape character is '^]'.
stat
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
 /192.168.43.101:50102[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/1/10
Received: 14
Sent: 13
Connections: 1
Outstanding: 0
Zxid: 0x2
Mode: standalone
Node count: 4
Connection closed by foreign host.

13、zoo.cfg配置文件的参数

#基本配置参数
clientPort=2181
dataDir=/data/zookeeper
dataLogDir  #事务日志文件路径
tickTime=2000

#存储配置
preAllocsize  #为事务日志预先分配的磁盘空间,默认65536kb
snapCount  #每多少次事务执行一次快照,每次事务平均大小在100字节
autopurge.snapRetainCount  #要保留在 dataDir 中的快照数
autopurge.purgeInterval  #purge操作的时间间隔,0表示不启动
fsync.warningresholdms  #zookeeper进行事务日志fsync操作时消耗的时间报警阈值
weight.x=N  #判断quornum时的投票权限,默认1

#网络配置
maxClientCnxns  #每客户端IP的最大并发连接数
clientPortAddress  #zookeeper监听IP地址
minSessionTimeout  #默认为ticktime的两倍
maxSessionTimeout

#集群配置
initLimit  #follower连入leader并完成数据同步的时长,一般为ticktime的倍数
syncLimit  #心跳检测的最大延迟
leaderServer  #默认zk的leader接收读写请求
cnxTimeout  #leader选举期间,各服务器创建TCP链接的超时时长
ellectionAlg  #选举算法,仅支持FastLeaderElection一种
server.id=[hostname]:port:port[:observer]

三、zookeeper的部署安装

1、获取zookeeper的源码文件

https://archive.apache.org/dist/zookeeper/

2、配置jdk

如果系统存在jdk,可以直接使用,如果没有,安装好jdk,可选择较新版的jdk文件,openjdk也可以。

3、解压压缩文件到系统中

cd /usr/local/src 
tar -xvf zookeeper-3.4.6.tar.gz

4、修改配置文件

cp /usr/local/src/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/local/src/zookeeper-3.4.6/conf/zoo.cfg
mkdir /data/zookeeper

vim 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=/tmp/zookeeper
dataDir=/data/zookeeper
# 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.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# 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=1

5、启动服务

cd /usr/local/src/zookeeper-3.4.6/bin
./zkServer.sh start

./zkCli.sh (链接客户端)

6、伪分布式部署

(1)配置文件的修改
在一台机器上部署了3个Server,需要注意的是在集群为分布式模式下我们使用的每个配置文档模拟一台机器,也就是说单台机器及上运行多个ZooKeeper实例。但是,必须保证每个配置文档的各个端口号不能冲突,除了clientPort不同之外,dataDir也不同。另外,还要在dataDir所对应的目录中创建myid文件来指定对应的ZooKeeper服务器实例。

clientPort端口:如果在1台机器上部署多个Server,那么每台机器都要不同的clientPort,比如Server1是2181,Server2是2182,Server3是2183
dataDir和dataLogDir:dataDir和dataLogDir也需要区分下,将数据文件和日志文件分开存放,同时每个Server的这两变量所对应的路径都是不同的
server.X和myid: server.X这个数字就是对应,data/myid中的数字。在3个Server的myid文件中分别写入了0,1,2,那么每个Server中的zoo.cfg都配server.0,server.2,server.3就行了。因为在同一台机器上,后面连着的2个端口,3个Server都不要一样,否则端口冲突。

# 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.
dataDir=/usr/local/zk/data_1

# the port at which the clients will connect
clientPort=2181

#the location of the log file
dataLogDir=/usr/local/zk/logs_1

server.0=localhost:2287:3387
server.1=localhost:2288:3388
server.2=localhost:2289:3389

(2)写入myid文件

echo "0">/usr/local/data_1/myid
echo "1">/usr/local/data_2/myid
echo "2">/usr/local/data_3/myid

(3)服务启动

zkServer.sh start zoo1.cfg
zkServer.sh start zoo2.cfg
zkServer.sh start zoo3.cfg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容