Zookeeper的介绍与基本部署
简介
zookeeper是一个为分布式应用所设计的分布式的、开源的协调服务。它提供了一项基本服务:分布式锁服务,同时也提供了分布式应用数据的维护和管理机制,包括统一命名服务、状态同步服务、集群管理、分布式消息队列、分布式应用配置项的管理等。zookeeper支持独立安装以及集群部署。
zookeeper官方网站:http://zookeeper.apache.org/
zookeeper下载地址:https://www.apache.org/dyn/closer.cgi/zookeeper/
架构

Zookeeper集群主要角色有Server和Client,其中Server分为Leader、Follower和Observer三个角色:
- Leader:领导者角色,主要负责投票的发起和决议,以及更新系统状态
- Follower:跟随者角色,用于接收客户请求并向客户端返回结果,在选主过程中参与投票
- Observer:Observer可以接收客户端连接,将写请求转发给leader。但observer不参加投票,只同步leader状态。observer的目的是为了扩展系统,提高读取速度。
- Client:客户端,用于向zk发起请求。
zk集群中每个server在内存中存储一份数据。在zk启动时,将从实例中选举一个server作为leader,leader负责处理数据更新等操作,当且仅当大多数server在内存中成功修改数据,才认为数据修改成功。
zk写的流程:
- 客户端首先和一个server或者observer通信,发起写请求
- server将写请求转发给leader
- leader再将写请求转发给其他server,其他server在接收到写请求后写入数据并响应leader
- leader在接收到大多数写成功回应后,认为数据写成功
- server响应client,完成一次写操作
安装
StandAlone模式
1. 安装
tar xf zookeeper-3.4.14.tar.gz -C /usr/local/
cd /usr/local/
ln -s zookeeper-3.4.14 zookeeper
# 创建数据目录和日志目录
mkdir /usr/local/zookeeper/{data,logs}
注: zk的安装依赖java,所以需要先安装jdk
2. 修改配置
cd /usr/local/zookeeper/conf
cp zoo_sample.conf zoo.conf
#vim zoo.conf
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
配置项说明:
- tickTime: zk中使用的基本时间单元,单位为毫秒,用于控制心跳和超时。更低的tickTime值可以更快的发现超时问题
- initLimit:zk集群中follower初始化连接到leader时,最长能忍受多少个tickTime,默认值为10,即为20s
- syncLimit:用于配置leader和follower间进行心跳检测的最大超时时间。如果在设置的时间内followers无法与leader进行通信,那么follower将会被丢弃。默认值为5,即10s
- dataDir:zk用于存储内存数据库快照的目录。如果不指定dataLogDir参数,则数据库更新的事务日志也将会存储在该目录下
- dataLogDir:指定zk事务日志的存储目录
- clientPort:服务器监听客户端连接的端口,默认值为2181
- maxClientCnxns:限制单个客户端与单台服务之间的并发连接数,默认值为60,设置为0则不限制
- autopurge.snapRetainCount:配置zk在自动清理的时候需要保存的数据文件快照的数量和对应的事务日志文件,默认为3
- autopurge.purgeInterval:和autopurge.snapRetainCount配置使用,用于配置zk自动清理文件的频率,默认为1小时,即默认开启自动清理功能,设置为0,则表示禁用清理功能
3. 启动
/usr/local/zookeeper/zkServer.sh start
4. 验证
[root@app conf]# telnet 127.0.0.1 2181
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stat
Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
Clients:
/127.0.0.1:42638[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x0
Mode: standalone
Node count: 4
5. 基本用法
[root@app conf]# /usr/local/zookeeper/bin/zkCli.sh -server localhost:2181
Connecting to localhost:2181
...
[zk: localhost:2181(CONNECTED) 0] help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
[zk: localhost:2181(CONNECTED) 1]
Distributed模式
1. 配置hosts
#vim /etc/hosts
zk1 192.168.0.101
zk2 192.168.0.102
zk3 192.168.0.103
2. 配置zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
server.1=192.168.0.101:2888:3888
server.2=192.168.0.102:2888:3888
server.3=192.168.0.103:2888:3888
配置项说明:
- 集群模式中,集群中的每台机器都需要感知其它机器,在zoo.cfg配置文件中,可以按照如下格式进行配置:
server.id=host:port:port,其中id即server id,用于标识服务器在集群中的序号。每台zk服务器上,都需要在数据目录下创建一个myid文件,该文件中只有一行内容,即对应于每台服务器的server id。 - zk集群中,每台服务器上的zoo.cfg配置文件内容一致
3. 创建myid文件
# 每个服务器上的myid内容都不同,且需要保证和自己的zoo.cfg配置文件中"server.id=host:port:port"的id值一致
# id的范围是1~255
echo "1" > /usr/local/zookeeper/data/myid
4. 启动服务
/usr/local/zookeeper/zkServer.sh start
5. 验证
[root@app conf]# telnet 127.0.0.1 2181
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
stat
Zookeeper version: 3.4.14-4c25d480e66aadd371de8bd2fd8da255ac140bcf, built on 03/06/2019 16:18 GMT
Clients:
/127.0.0.1:41142[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x100000000
Mode: leader
Node count: 4
Proposal sizes last/min/max: -1/-1/-1
Connection closed by foreign host.
6. 查询状态
[root@app conf]# ../bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader
Zookeeper的介绍与基本部署的更多相关文章
- Storm介绍及安装部署
本节内容: Apache Storm是什么 Apache Storm核心概念 Storm原理架构 Storm集群安装部署 启动storm ui.Nimbus和Supervisor 一.Apache S ...
- Zookeeper+Kafka完全分布式实战部署
Zookeeper+Kafka完全分布式实战部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 其实我之前部署过kafak和zookeeper的完全分布式,集群是可以正常使用没错, ...
- [转]ZooKeeper学习第一期---Zookeeper简单介绍
ZooKeeper学习第一期---Zookeeper简单介绍 http://www.cnblogs.com/sunddenly/p/4033574.html 一.分布式协调技术 在给大家介绍ZooKe ...
- Kafka介绍及安装部署
本节内容: 消息中间件 消息中间件特点 消息中间件的传递模型 Kafka介绍 安装部署Kafka集群 安装Yahoo kafka manager kafka-manager添加kafka cluste ...
- hue框架介绍和安装部署
大家好,我是来自内蒙古的小哥,我现在在北京学习大数据,我想把学到的东西分享给大家,想和大家一起学习 hue框架介绍和安装部署 hue全称:HUE=Hadoop User Experience 他是cl ...
- Zookeeper的概述、安装部署及选举机制
一.Zookeeper概述 1.Zookeeper是Hadoop生态的管理者,它致力于开发和维护开源服务器,实现高度可靠的分布式协调. 2.Zookeeper的两大功能: (1)存储数据 (2)监听 ...
- Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- ZooKeeper 基本介绍
Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储, Zookeeper 作用主要是用来维护和监控存储的数 ...
- 【Hadoop离线基础总结】zookeeper的介绍以及集群环境搭建、网络编程和RPC的简单了解
ZooKeeper的介绍以及集群环境搭建.网络编程和RPC的简单了解 ZooKeeper介绍 概述 ZooKeeper是一个分布式协调服务的开源框架,主要用来解决分布式集群中应用系统的一致性问题.例如 ...
随机推荐
- MySQL查询——select
SELECT select的完整语法: select col1, col2,... # 业务查询的字段 from table_name # 选取的哪张表 [where single_condition ...
- vue+element创建动态的form表单.以及动态生成表格的行和列
动态创建form表单,网上有插件 (form-create) 不过我不知道它怎么用,没有使用成功,如果你使用成功了,欢迎下方留言. 最后我使用了笨方法,针对各个表单写好通用的组件,然后根据type用v ...
- qt 操作串口 QSerialPort
准备工作 *.pro中加入 QT += serialport 初始化 void MainWindow::initPort() { //读取串口信息 foreach (const QSerialPort ...
- Elasticsearch的快照备份
该文档适用于备份使用NAS的仓库类型.所有Elasticsearch集群中的服务通过挂载NAS目录来存放备份快照数据. 1.创建备份仓库 创建一个仓库名称:backup curl -H "C ...
- Centos7 安装腾达U12驱动无线网卡
解决过程: 办法一: CentOS7.3 默认的内核版本较低,为 3.10.0-514.el7.x86_64. 无论是使用腾达官方提供的驱动,还是github 上的驱动(链接 https://gith ...
- 0x02 Python logging模块利用配置加载logger
目录 logging模块利用配置加载logger 方式一模板:logging.config.dictConfig(config_dict) logging模块利用配置加载logger logging. ...
- Linux磁盘查询指令
磁盘情况查询: 查询系统整体磁盘使用情况: df -h 查询指定目录的磁盘占用情况 du -h /目录 查询指定目录的磁盘占用情况,默认为当前目录 -s 指定目录占用大小汇总 -h 带计量单位 -a ...
- Linux的DNS主从服务器部署
下面的部署是在Linux的DNS正向解析部署上进行修改的. 如果有什么问题或者错误,可以访问上篇帖子 下面开始有关DNS的服务部署.<DNS主从服务器> 环境描述: 192.168.196 ...
- Makefile 基础语法
1.. specify the directores , i not specified , search current directory put every folder into a list ...
- CentOS 7 安装配置分布式文件系统 FastDFS 5.0.5
前言 项目中用到文件服务器,有朋友推荐用FastDFS,所以就了解学习了一番,感觉确实颇为强大,在此再次感谢淘宝资深架构师余庆大神开源了如此优秀的轻量级分布式文件系统,本篇文章就记录一下FastDFS ...