zookeeper集群搭建

简介:

  简介

  Zookeeper 分布式服务框架是Apache Hadoop的一个子项目它主要是用来解决分布式应用中经常遇到的一些数据管理问题如统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等等。zookeeper本身可以单节点状态运行不过它的长处在于通过分布式zookeeper集群一个leader多个follower基于一定的策略来保证zookeeper集群的稳定性和可用性从而实现分布式应用的可靠性。

  Zookeeper集群中主要有两个角色leader和follower。

领导者leader,用于负责进行投票的发起和决议,更新系统状态。

学习者learner,包括跟随者follower和观察者observer。

其中follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票。

而observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observer的目的是为了扩展系统,提高读取速度。

  Zookeeper集群个数一般设置为2n+1奇数个。这里用三节点为例搭建一个zookeeper集群。

一、安装Java

  操作之前建议改下hostname

192.168.100.21 zookeeper-001

192.168.100.22 zookeeper-002

192.168.100.23 zookeeper-003

  zookeeper依赖java环境首先安装java三台机器分别操作如下

1
2
3
4
5
6
7
# add-apt-repository ppa:webupd8team/java 
# apt-get update
# apt-get install oracle-java8-installer 
# java -version //检验Java版本
java version  "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

二、安装zookeeper

 截止目前17年5月zookeeper最新稳定版本是3.4.10可以选择在官网的download连接上下载安装。因为这里Ubuntu自带系统源的版本是3.4.5我这里对版本号没有特殊要求方便起见我直接使用了系统源安装。

  查看当前系统源版本号

1
2
3
4
5
6
7
8
9
10
root@zookeeper-001:~ # aptitude show zookeeperd
Package: zookeeperd
New:  yes
State: installed
Automatically installed: no
Version: 3.4.5+dfsg-1
Priority: optional
Section: universe /java
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all

  3台机器上分别安装

1
root@zookeeper-001:~ # aptitude install zookeeperd

三、修改配置文件

安装完成后默认位于/etc/zookeeper目录下我的配置文件如下把所有zookeeper节点加到配置文件的server里即可。所有节点的配置相同。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
root@zookeeper-001:~ # cat /etc/zookeeper/conf/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= /data/zkdata
# 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=zookeeper-001:2888:3888
server.2=zookeeper-002:2888:3888
server.3=zookeeper-003:2888:3888
#
# 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

配置参数说明

tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。

initLimit这个配置项是用来配置zookeeper接受客户端这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过10个心跳的时间也就是tickTime长度后 zookeeper服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。

syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。

dataDir:顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里

clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求

server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口D是在leader挂掉时专门用来进行选举leader所用的端口。

四、集群初始化操作

  1、由于之前在zookeeper的配置文件里规定了data目录如果没有的话在启动服务之前需要手动创建

1
2
# mkdir -p /data/zkdata/
# chown -R zookeeper. /data/zkdata/

  2、创建serverID

  zookeeper集群模式下需要配置myid文件,这个文件需要放在dataDir目录下。这个文件里面有一个数据就是A的值该A就是zoo.cfg文件中server.A=B:C:D中的A,在zoo.cfg文件中配置的dataDir路径中创建myid文件。

在分别在zookeeper-001、002、003上执行

1
2
3
# echo 1 > /data/zkdata/myid
# echo 2 > /data/zkdata/myid
# echo 3 > /data/zkdata/myid

以上都配置完成之后分别在三个节点上启动zookeeper服务

1
# service zookeeper start

五、zookeeper集群状态检测

1、查看当前集群状态可以使用nc命令mode行显示当前是leader还是follower

1
# echo  state | nc 127.0.0.1 2181

wKiom1kiZ06RlnA7AAGZkAog-Iw987.png-wh_50

2、也可以用自带的zkCli.sh连接到zookeeper文件系统

1
# bin/zkCli.sh -server 127.0.0.1:2181

3、这里推荐一个python的zookeeper命令行工具"zk-shell",pip安装即可

1
# pip install zk-shell

使用帮助如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
usage: zk-shell [-h] [--connect-timeout CONNECT_TIMEOUT] [--run-once RUN_ONCE]
                 [--run-from-stdin] [-- sync -connect] [-- readonly ]
                 [--tunnel TUNNEL] [--version]
                 [hosts [hosts ...]]
 
positional arguments:
   hosts                 ZK hosts to connect
 
optional arguments:
   -h, --help            show this help message and  exit
   --connect-timeout CONNECT_TIMEOUT
                         ZK connect timeout
   --run-once RUN_ONCE   Run a  command  non-interactively and  exit
   --run-from-stdin      Read cmds from stdin, run them and  exit
   -- sync -connect        Connect syncronously.
   -- readonly             Enable  readonly .
   --tunnel TUNNEL       Create a  ssh  tunnel via this host
   --version             Display version and  exit .

示例,执行'ls /'命令:

1
2
3
4
5
6
7
8
9
10
root@zookeeper-001:~ # zk-shell host 127.0.0.1 --run-once 'ls /'
admin
brokers
cluster
config
consumers
controller
controller_epoch
isr_change_notification
zookeeper

zookeeper官方文档https://zookeeper.apache.org/doc/trunk/

zookeeper下载连接http://mirrors.hust.edu.cn/apache/zookeeper/








      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1928138,如需转载请自行联系原作者


相关文章
|
Java Shell Linux
Zookeeper单机&集群安装
Zookeeper单机&集群安装
190 1
|
存储 分布式计算 资源调度
Hadoop【环境搭建 04】【hadoop-2.6.0-cdh5.15.2.tar.gz 基于ZooKeeper搭建高可用集群】(部分图片来源于网络)
【4月更文挑战第1天】Hadoop【环境搭建 04】【hadoop-2.6.0-cdh5.15.2.tar.gz 基于ZooKeeper搭建高可用集群】(部分图片来源于网络)
621 3
|
9月前
|
消息中间件 运维 Java
搭建Zookeeper、Kafka集群
本文详细介绍了Zookeeper和Kafka集群的搭建过程,涵盖系统环境配置、IP设置、主机名设定、防火墙与Selinux关闭、JDK安装等基础步骤。随后深入讲解了Zookeeper集群的安装与配置,包括数据目录创建、节点信息设置、SASL认证配置及服务启动管理。接着描述了Kafka集群的安装,涉及配置文件修改、安全认证设置、生产消费认证以及服务启停操作。最后通过创建Topic、发送与查看消息等测试验证集群功能。全网可搜《小陈运维》获取更多信息。
842 1
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
287 1
|
分布式计算 Java Hadoop
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
Hadoop-30 ZooKeeper集群 JavaAPI 客户端 POM Java操作ZK 监听节点 监听数据变化 创建节点 删除节点
272 1
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
267 1
|
分布式计算 Hadoop Unix
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
Hadoop-28 ZooKeeper集群 ZNode简介概念和测试 数据结构与监听机制 持久性节点 持久顺序节点 事务ID Watcher机制
277 1
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
243 0
|
存储 数据库
zookeeper 集群环境搭建及集群选举及数据同步机制
zookeeper 集群环境搭建及集群选举及数据同步机制
427 2