做者:超级大丁丁
my.oschina.net/mHUMTSy9311/blog/2960544
怎么搭建单机无安全校验的就不说了,百度一搜一大堆。这里我就说说怎么搭建一个生产环境可用的Zookeeper集群java
Zookeeper 3.4.13下载地址node
http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
Docker方式不太建议,要考虑的东西比较多,若是要用Docker方式仍是比较建议自建镜像,假如是Docker专家能够忽略本句。面试
如下介绍的都是Linux服务器下搭建(Winserver服务器的也是雷同)先操做单机,再copy到其余机器。下载完Zookeeper(下称zk)后,进入zk解压目录下的conf文件夹,zoo_sample.cfg是zk的配置文件实例,Copy一个出来命名为zoo.cfg zk默认会读这个配置。redis
如需使用Hosts请在每一个实例所在的机器设置Hosts(/etc/hosts) 如:zk1 127.0.0.1数据库
下面贴一下个人简单配置:apache
# The number of milliseconds of each ticktickTime=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
zk的脚本都放在zk/bin 目录下api
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 /pathget /path # 查看节点状态/属性 stat /path # 删除节点 rmr /path # 删除节点下数据 delete /path [version]
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是用cdrwa来表示 如:
setAcl /path digest:test:password:cdw
每一个字母分别表明的是:
欢迎你们关注个人微信公众号【民工哥技术之路】,最新整理的 2TB 技术干货:包括架构师实战教程、大数据、Docker容器、系统运维、数据库、redis、MogoDB、电子书、Java基础课程、Java实战项目、ELK Stack、机器学习、BAT面试精讲视频等。只需在「 民工哥技术之路」微信公众号对话框回复关键字:1024便可获取所有资料。