Zookeeper集群安装(开启kerberos)

安装规划

zookeeper集群模式,安装到如下三台机器
10.43.159.237 zdh-237
10.43.159.238 zdh-238
10.43.159.239 zdh-239
Kerberos服务器
10.43.159.240 zdh-240
Kerberos客户端
zdh-237,zdh-238,zdh-239

安装用户

zookeeper/zdh1234
useradd -g hadoop -s /bin/bash -md /home/zookeeper zookeeper

安装zookeeper集群,并且开启kerberos认证

1.

获取并解压Zookeeper安装包
scp garrison@zdh-237:/home/garrison/backup/zookeeper-3.5.1-alpha.tar.gz .
解压zookeeper包
tar -zxvf zookeeper-3.5.1-alpha.tar.gz
在zookeeper-3.5.1-alpha/conf/目录执行
mv zoo_sample.cfg zoo.cfg
修改zoo.cfg文件:
dataDir=/home/zookeeper/zookeeper-3.5.1-alpha/dataDir
clientPort=12181
文件最后添加,配置zookeeper集群通信端口:
server.1=zdh-237:12888:13888
server.2=zdh-238:12888:13888
server.3=zdh-239:12888:13888

创建一个dataDir文件夹:
mkdir ~/zookeeper-3.5.1-alpha/dataDir
再创建一个空文件:
touch /dataDir/myid
最后向该文件写入ID:
echo 1 > /dataDir/myid

配置Java环境变量:

export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 

配置Zookeeper环境变量方便以后操作:

export ZOOKEEPER_HOME=:~/zookeeper-3.5.1-alpha
export PATH=$PATH:$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf

增加别名,快速进入对应文件夹:

alias conf='cd ~/zookeeper-3.5.1-alpha/conf'
alias logs='cd ~/zookeeper-3.5.1-alpha/logs'

2.在kerberos服务器zdh-240上,使用root用户,在/root/keytabs目录下,创建Zookeeper的principal

kadmin.local
addprinc -randkey zookeeper/zdh-237@ZDH.COM
addprinc -randkey zookeeper/zdh-238@ZDH.COM
addprinc -randkey zookeeper/zdh-239@ZDH.COM
xst -k zookeeper.keytab zookeeper/zdh-237@ZDH.COM
xst -k zookeeper.keytab zookeeper/zdh-238@ZDH.COM
xst -k zookeeper.keytab zookeeper/zdh-239@ZDH.COM
exit
scp zookeeper.keytab zookeeper@zdh-237:/home/zookeeper/zookeeper-3.5.1-alpha/conf

3.修改zoo.cfg,添加以下安全相关的配置

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true

4.在conf目录创建java.env文件,添加以下内容

export JVMFLAGS="-Djava.security.auth.login.config=/home/zookeeper/zookeeper-3.5.1-alpha/conf/jaas.conf"

5.在conf目录创建jaas.conf文件

Server {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/zookeeper/zookeeper-3.5.1-alpha/conf/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/zdh-237@ZDH.COM";
};
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/home/zookeeper/zookeeper-3.5.1-alpha/conf/zookeeper.keytab"
storeKey=true
useTicketCache=false
principal="zookeeper/zdh-237@ZDH.COM";
};

注意:如果修改jaas.conf配置,则一定要重启zkServer,否则会导致zkClient连不上,
可能是因为zkClinet和zkServer使用同一个jaas配置,实际zkClient应该配置自己的keytab用于访问,
而不是配置成和Server一样,可以在其他机器上面新建一个用户作为访问的客户端。

6.将zookeeper拷贝到其他节点

scp -r zookeeper-3.5.1-alpha zookeeper@zdh-238:/home/zookeeper
然后登陆到zdh-238的zookeeper,修改jaas.conf文件principal
修改zookeeper/zdh-237@ZDH.COM为zookeeper/zdh-238@ZDH.COM
修改myid文件的值为集群对应的值,每个节点的值都必须唯一不能相同:
echo 2 > dataDir/myid
zdh-239等其他节点做同样操作;
同样注意环境变量的设置。

7.启动zookeeper

进入到 bin目录
./zkServer.sh start
查看状态:
./zkServer.sh status
停止zookeeper:
./zkServer.sh stop

8.客户端登陆验证

客户端能够登陆开启Kerberos的zkServer
zkCli.sh -server zdh-237:12181
注意不能使用zkCli.sh -server 10.43.159.237:12181登陆,
会导致鉴权失败,zdh41和10.43.159.237在Kerberos服务器看来是不一样的principle
客户端登陆失败时,报时间过大导致鉴权失败,
需要把集群机器的时间进行统一,kerberos鉴权对时间差有一定要求。

9.登陆AdminServer管理页面查看zookeeper的状态

http://10.43.159.237:8080/commands/
管理端口默认为8080,可以在zoo.cfg修改配置项。
admin.serverPort=18080

其他参考:

1.常用命令

kinit -kt zookeeper.keytab zookeeper/zdh-237@ZDH.COM
deleteall /storm
create /znode1
getAcl /znode1
setAcl /znode1 sasl:zookeeper/zdh-7@ZDH.COM:cdwra
delete /test
ls /

2.zookeeper打印debug日志方法

查看zkClient.sh发现需要在zkEnv.sh中配置ZOO_LOG4J_PROP参数,
ZOO_LOG4J_PROP="DEBUG,CONSOLE"
打开远程debug端口,在zkEnv.sh增加如下配置:
CLIENT_JVMFLAGS=" ${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=1077,server=y,suspend=y "
服务端的类似

3.使用zkClient.sh访问开启kerberos的服务端

当zookeeper的服务端的用户名不为zookeeper,例如是zookeeperkrb,
则需要在zkEnv.sh增加如下配置,指明客户端需要访问的服务端的名称:
CLIENT_JVMFLAGS=" -Dzookeeper.sasl.client.username=zookeeperkrb $CLIENT_JVMFLAGS"

客户端访问的服务端名称是在如下代码中进行的初始化,默认值为zookeeper:
org.apache.zookeeper.ClientCnxn.SendThread.startConnect()
String principalUserName = System.getProperty("zookeeper.sasl.client.username", "zookeeper");

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • 安装规划 zookeeper安装到zdh41上面,单机模式10.43.159.41 zdh41 ZDH.COM 安...
    木木与呆呆阅读 1,567评论 0 4
  • 搭建Hadoop的HDFS HA及YARN HA集群,基于2.7.1版本安装。 安装规划 角色规划IP/机器名安装...
    木木与呆呆阅读 936评论 0 7
  • 一、zookeeper集群简介 Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的...
    会跳舞的机器人阅读 3,050评论 3 19
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 今年多大了,生活的怎么样?快乐吗?有期待吗?满意吗?十多年光阴老大不小了,也没活出个满意的自己来,在工作的时间写下...
    forwarder阅读 245评论 0 0