ZooKeeper版本:3.4.6
解压缩zookeeper-3.4.6.tar.gz
创建配置文件
zookeeper-3.4.6/conf/zoo.cfg:
tickTime=2000
dataDir=/home/zookeeper/data/
clientPort=2181
initLimit=5
syncLimit=2
maxClientCnxns=1000
server.105=192.168.1.105:2888:3888
server.106=192.168.1.106:2888:3888
server.108=192.168.1.108:2888:3888
server.109=192.168.1.109:2888:3888
server.110=192.168.1.110:2888:3888
然后将目录拷贝到各台服务器.
启动ZooKeeper服务
./zkServer.sh start
ACL配置
作为配置中心,权限控制肯定是必要的.否则一旦出现问题...画面太美
zookeeper目前支持下面一些权限:
CREATE(c): 创建权限,可以在在当前node下创建child node
DELETE(d): 删除权限,可以删除当前的node
READ(r): 读权限,可以获取当前node的数据,可以list当前node所有的child nodes
WRITE(w): 写权限,可以向当前node写数据
ADMIN(a): 管理权限,可以设置当前node的permission
权限模式
IP,Digest帐号密码,World默认都开放,Super超级权限.
以如下节点为例
/service/vdfs/upload/default
我需要创建一个读写帐号,和一个只读帐号.
服务提供者用读写帐号(vdfs)
服务调用者用只读帐号(vdfsreadonly)
使用程序计算密码摘要

设置节点ACL
setAcl /service/vdfs/upload/default digest:vdfs:8bD/0+39dpuh0wUiFnwt1yY1Lu0=:cdrwa,digest:vdfsreadonly:1VzGwZ3x8y+8/yvHeRaqa4hNs+4=:r
digest:vdfs:8bD/0+39dpuh0wUiFnwt1yY1Lu0=:cdrwa
digest说明是帐号密码认证
vdfs是帐号名称
8bD/0+39dpuh0wUiFnwt1yY1Lu0= 是密码摘要
cdrwa 表示权限
两个帐号之间,用逗号分隔.
查看节点ACL
[zk: localhost:2181(CONNECTED) 2] getAcl /service/vdfs/upload/default
'digest,'vdfs:8bD/0+39dpuh0wUiFnwt1yY1Lu0=
: cdrwa
'digest,'vdfsreadonly:1VzGwZ3x8y+8/yvHeRaqa4hNs+4=
: r
登录vdfsreadonly帐号,可以查看数据,不能新建数据.

而登录vdfs帐号,则有读写权限

增加ACL之后,运维会比较麻烦,需要反复切换帐号。
ZooKeeper提供了一个Super帐号,用于运维人员.
同样需要根据密码先计算一个摘要.
假如设置super的密码为123456,其摘要为 1VzGwZ3x8y+8/yvHeRaqa4hNs+4=
修改zkServer.sh文件
大致109行的位置,
增加如下内容
nohup "$JAVA" -Xmx2G -Xms512m -Dzookeeper.DigestAuthenticationProvider.superDigest=super:1VzGwZ3x8y+8/yvHeRaqa4hNs+4= "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
重启ZooKeeper节点
然后登录zkCli.sh
使用Super认证,既获得管理员超级权限.
addauth digest super:123456
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29254281/viewspace-2096025/
,如需转载,请注明出处,否则将追究法律责任。