Zookeeper集群安装

简介

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

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

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

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

准备

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

  • 下载Zookeeper,http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
    wget http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz

  • 解压
    tar -zvxf zookeeper-3.4.12.tar.gz

  • 配置hosts
    /etc/hosts文件添加如下信息

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

你可能感兴趣的:(Zookeeper集群安装)