这可能是搭建Zookeeper集群介绍最全的文章 原 荐

栏目: 服务器 · 发布时间: 7年前

这可能是搭建Zookeeper集群介绍最全的文章 原 荐

这可能是搭建Zookeeper集群介绍最全的文章

  超级大丁丁 发布于 前天 16:13

字数 1479

阅读 255

收藏 4

ZK ZooKeeper

开发十年,就只剩下这套架构体系了! >>> 这可能是搭建Zookeeper集群介绍最全的文章 原 荐

1.搭建

怎么搭建单机无安全校验的就不说了,百度一搜一大堆。这里我就说说怎么搭建一个生产环境可用的Zookeeper集群

Zookeeper 3.4.13下载地址

Docker方式不太建议,要考虑的东西比较多,如果要用 Docker 方式还是比较建议自建镜像,假如是Docker专家可以忽略本句。

以下介绍的都是 Linux 服务器下搭建(Winserver服务器的也是雷同)先操作单机,再copy到其他机器。下载完Zookeeper(下称zk)后,进入zk解压目录下的conf文件夹,zoo_sample.cfg是zk的配置文件实例,Copy一个出来命名为zoo.cfg zk默认会读这个配置。

配置详解:

  • tickTime :心跳发送的间隔时间,用于判定Client是否断开(默认2000ms)
  • dataDir :zk数据文件保存目录,zk是基于文件来存储配置的
  • clientPort :这个端口就是客户端连接 zk 服务器的端口,zk 会监听这个端口,接受客户端的访问请求。
  • initLimit:初始化Client时的重试次数(默认5次),判断Client是否连接成功就是发initLimit次心跳,每tickTime发一次,如果都失败了代表这个Client连接失败了
  • syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4 秒
  • server.n = ip:port:electPort: n代表每个实例的序号,ip是实例的ip地址,port是实例间交互的端口,electPort是重新选举Leader时的端口 (集群方式才用到, 单机可以注释这个配置,之前问过大神,大神表示zk搭建至少3个实例比较稳当,这个与它自身的选举机制有关)
  • maxClientCnxns: 最大Client连接数,业务需求并发大,机器比较强劲的就设置大点咯(默认60)
  • autopurge.snapRetainCount:自动清理snapshot和事务日志时保留的文件数(默认3个)
  • autopurge.purgeInterval: 清理频率(单位小时, 默认是0代表不开启,大于0代表开启`)

如需使用Hosts请在每个实例所在的机器设置Hosts(/etc/hosts) 如:zk1 127.0.0.1

下面贴一下我的简单配置:

# 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/zookeeper/data
# the port at which the clients will connect
clientPort=2181

server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk2:2888:3888

2. 启动

zk的脚本都放在zk/bin 目录下

zkServer.sh 服务操作脚本(只介绍常用命令)

# 后台启动
./zkServer.sh start

# 前台启动
./zkServer.sh start-foreground

# 停止
./zkServer.sh stop

# 重启
./zkServer.sh restart

# 查看状态 (其中 Mode代表是Leader节点还是Follow节点)
./zkServer.sh status

zkCli.sh 是zk的客户端,默认连接本机实例,可以通过进入ZkCli后执行 ZooKeeper -server host:port cmd args 去操作其他远程实例

# 进入zk客户端命令行操作
./zkCli.sh

列举下一些常用命令(其他命令可以)

# 查看根目录下节点
ls /path
get /path
# 查看节点状态/属性
stat /path
# 删除节点
rmr /path
# 删除节点下数据
delete /path [version]

3. 权限验证

zk的权限验证有3种方式,这里只介绍比较常用的两种方式(先搭建好集群,权限设置会同步到整个集群):

第一步:新建节点 (如果给已有节点添加权限可忽略)

create /path "test" #创建节点和别名

1. 通过IP限制

#进入zkCli后的权限验证设置命令 后面会介绍permission参数
setAcl /path ip:192.168.1.1:[permissions]
#也可以是ip段
setAcl /path ip:192.168.0.0/16:[permissions]
#验证 本机校验是通过的。可以用另一个ip段的来验证
ls /path

2. 通过用户+密码控制

这种方式的密码是BASE64(SHA1(原文密码))出来的密文,怎样生成保证成功的密文呢

#通过这个类计算出密文(对应的版本可以从zk/lib目录下看到)
java -cp ./zookeeper-3.4.13.jar:./lib/log4j-1.2.17.jar:./lib/slf4j-log4j12-1.7.25.jar:./lib/slf4j-api-1.7.25.jar org.apache.zookeeper.server.auth.DigestAuthenticationProvider test:123456
#test是用户名 password是密码BASE64(SHA1(原文密码))
setAcl /path digest:test:password:[permission]
# 校验是否成功,现在肯定是成功的,但是重新进入zkCli就会失败了
ls /path

#进入zkCli执行addAuth命令,这是类似登录的功能 test是用户名,123456是刚刚的原文
addauth digest test:123456

#然后再执行 ls命令 这时候就成功
ls /path

permission介绍

permission是用cdrwa来表示 如:

setAcl /path digest:test:password:cdw

每个字母分别代表的是:

  • CREATE(c): 创建权限,可以在在当前node下创建child node
  • DELETE(d): 删除权限,可以删除当前的node
  • READ(r): 读权限,可以获取当前node的数据,可以list当前node所有的child nodes
  • WRITE(w): 写权限,可以向当前node写数据
  • ADMIN(a): 管理权限,可以设置当前node的permission

4.总结

网上很多类似的文章,不过我觉得太分散了,当要搭建一个zk集群时需要找几篇文章来看,现在就是 将搭建+集群+校验 放在一起介绍,一篇文章可以直接上生产了,如果喜欢的欢迎收藏点赞,有错的地方希望可以指出来我马上修改。

© 著作权归作者所有

共有人打赏支持

上一篇: 做个情商高的程序员

下一篇: 解决模板消息回调的困扰

这可能是搭建Zookeeper集群介绍最全的文章 原 荐

超级大丁丁

这可能是搭建Zookeeper集群介绍最全的文章 原 荐
这可能是搭建Zookeeper集群介绍最全的文章 原 荐

开源项目作者

作为一个开源项目作者,是时候站出来拯救世界了!

领取条件:开源项目被开源中国收录的开发者可领取

粉丝 11

博文 11

码字总数 8474

作品 4

广州

后端工程师

提问

相关文章 最新文章

大数据教程(3.5):zookeeper集群环境搭建

本篇文章,博主将分享zookeeper集群环境搭建的整个过程。在分享之前,博主还得说明些注意事项。首先,zookeeper是 java 编写的应用程序,所以在安装之前需要先安装java环境。 本次可能用到的操...

em_aaron

07/29

0

0

这可能是把ZooKeeper概念讲的最清楚的一篇文章

我本人曾经使用过 ZooKeeper 作为 Dubbo 的注册中心,另外在搭建 Solr 集群的时候,我使用到了 ZooKeeper 作为 Solr 集群的管理工具。 前几天,总结项目经验的时候,我突然问自己 ZooKeeper ...

51CTO技术栈

09/11

0

0

这可能是搭建Zookeeper集群介绍最全的文章 原 荐
2.1、Linux下Kafka环境搭建及基本使用

一、kafka单节点单broker环境搭建 系统环境:centos 64位 mini 虚拟机:Virtual Box 如果你不熟悉virtual box的使用,不知道如何安装centos系统,可以参考之前发布的文章: 快速掌握基于Vir...

极客慧

今天

0

0

docker zookeeper 集群搭建

前言 其实zookeeper在一般的公司的应用不太多,注册中心、分布式锁、选举等等。之前用dubbo,就会用到zookeeper作为服务注册中心,现在转向springcloud,就很少用zookeeper了。但是近期研究分...

田心双木

09/05

0

0

Solr初探(6)——SolrCloud

Solr集群,即是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 。 当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高...

yuanlaijike

04/12

0

0

没有更多内容

加载失败,请刷新页面

加载更多
阿里云推PostgreSQL 10 高可用版

摘要: 近日,阿里云重磅发布PostgreSQL 10 高可用本地SSD盘版,相比原 9.4 版本又新增了JSONB、BRIN索引、GROUPING SETS/CUBE/ROLLUP、UPSERT等多项功能。 2015年,阿里云宣布正式推出RDS f...

阿里云云栖社区

27分钟前

4

0

这可能是搭建Zookeeper集群介绍最全的文章 原 荐
交易对账算法

一、目前对账的算法: 1、从上游渠道(银行、银联等金融机构)获取对账文件,程序逐行解析入库 2、在存储过程中,以上游对账文件的表为基准,程序逐行读取并与我们系统的交易记录/账务记录(...

辉煌霸猪

29分钟前

2

0

Class文件格式总结(十)

到此, 所有关于class文件格式的重要内容都已经讲解完了, 不敢说面面俱到, 但是敢说大部分重要的内容都包含在内了。前前后后用了9篇博客来专门讲解class文件结构, 为什么花那么多的时间和...

xtof

30分钟前

1

0

不学无数——初识反射

反射:运行时的类信息 运行时类型信息使得你可以在程序运行时发现和使用类型信息 1. Class对象 通过Class对象可以在运行时发现一个对象完整的类继承结构 类是程序的一部分,每一个类都会有一...

不学无数的程序员

47分钟前

2

0

fabric first-network

cd /opt/gopath/src/github.com/hyperledger/ git clone https://github.com/hyperledger/fabric.git 下载fabric源码 cd /opt/gopath/src/github.com/hyperledger/ $ git clone https://git......

八戒八戒八戒

52分钟前

2

0

没有更多内容

加载失败,请刷新页面

加载更多

以上所述就是小编给大家介绍的《这可能是搭建Zookeeper集群介绍最全的文章 原 荐》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Is Parallel Programming Hard, And, If So, What Can You Do About

Is Parallel Programming Hard, And, If So, What Can You Do About

Paul E. McKenney

The purpose of this book is to help you understand how to program shared-memory parallel machines without risking your sanity.1 By describing the algorithms and designs that have worked well in the pa......一起来看看 《Is Parallel Programming Hard, And, If So, What Can You Do About 》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换