Zookeeper集群安装

简介

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

ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

ZooKeeper包含一个简单的原语集,提供Java和C的接口。

ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在zookeeper-3.4.3\src\recipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。

准备

在三台服务器均做如下操作。

192.168.1.201    master
192.168.1.202    slave1
192.168.1.203    slave2

配置Zookeeper环境变量

/etc/profile添加如下信息

#Set ZOOKEEPER_HOME ENVIRONMENT
export ZOOKEEPER_HOME=/home/zookeeper-3.4.12
export PATH=$PATH:$ZOOKEEPER_HOME/bin

创建配置文件

复制 /zookeeper-3.4.12/conf/zoo_sample.cfg 到 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.
#创建一个data目录并设置dataDir
dataDir=/home/zookeeper-3.4.12/data
# 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
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

常见参数说明:

dataLogdDir=/path1  # 指定事务日志的存储路径,可以和dataDir在不同设备,这意味着可以使用一个日志的专用磁盘,避免日志IO和快照竞争。
 
dataDir=/path2      # 运行数据的存放路径
 
tickTime=2000       # 这个时间是作为Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,每隔tickTime时间就会发送一个心跳;最小 的session过期时间为2倍tickTime 
 
maxClientCnxns=0    # 最大的并发连接数限制,设置为0或者不设置该参数,表示不进行连接数的限制。
 
minSessionTimeout   # 最小的会话超时时间,默认值 minSession=2*tickTime
 
maxSessionTimeout   # 最大的会话超时时间,默认值 maxSession=20*tickTime
 
initLimit=10        # 此配置表示,允许follower(相对于Leaderer言的“客户端”)连接并同步到Leader的初始化连接时间,以tickTime为单位。当初始化连接时间超过该值,则表示连接失败。
 
syncLimit=5         # 此配置项表示Leader与Follower之间发送消息时,请求和应答时间长度。如果follower在设置时间内不能与leader通信,那么此follower将会被丢弃。
 
# 集群模式最关键的配置参数
 
server.11=192.168.1.21:2888:3888
 
# server.myid=ip:leader_port:inner_port
# myid 为服务器编号,用于标识服务器,这个值必须和dataDir目录下myid文件中的值保证一致
# ip 为当前服务器IP,
# leader_port  Leader的端口
# inner_port  zk服务器之间内部通信端口
 
# 同一个集群内的服务器,需要把该集群内的服务器列表信息都写在配置文件中。

创建创建myid

mkdir -p /home/zookeeper-3.4.12/data
cd /tmp/zookeeper/data
touch myid
echo "1" > myid

注:server.x
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
myid里面的值对应x的值。

启动

在每台服务器的Zookeeper目录下,运行 (这里的启动顺序为 master > slave1 > slave2 )
bin/zkServer.sh start
可以使用命令查看启动状态
bin/zkServer.sh status

问题

如果启动完成,查看状态,遇到该问题,可以关闭防火墙,再查看状态
/etc/init.d/iptables stop

Zookeeper的四字命令

客户端可以通过nc或telnet连接ZooKeeper Server提交指令

使用nc方式进行测试
# 检查服务器状态是否正常
echo ruok | nc localhost 2181
imok

# 输出服务器配置信息
echo conf | nc localhost 2181
clientPort=2181
dataDir=/home/zookeeper-3.4.12/data/version-2
dataLogDir=/home/zookeeper-3.4.12/data/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=1
initLimit=10
syncLimit=5
electionAlg=3
electionPort=3888
quorumPort=2888
peerType=0
 
# 输出服务器状态信息
echo stat | nc localhost 2181

Zookeeper version: 3.4.12-e5259e437540f349646870ea94dc2658c4e44b3b, built on 03/27/2018 03:55 GMT
Clients:
 /0:0:0:0:0:0:0:1:45688[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/0
Received: 6
Sent: 5
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: follower
Node count: 4

Zookeeper Client 简单操作

9个基本操作指令:

连接 ZooKeeper 服务器

bin/zkCli.sh -server localhost:2181

查看根下有哪些节点

ls /

创建节点

在根下创建一个 "test" 节点,并设置数据为 "hello zookeeper"

create /test "hell zookeeper"

查看节点

通过 get /test命令查看数据

修改节点

发现"hello zookeeper"打错成了"hell zookeeper",通过set /test "hello zookeeper"进行修改;

删除节点

delete /test

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

推荐阅读更多精彩内容