安装规划

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=JAVA_HOME/bin
export CLASSPATH=.:JAVA_HOME/lib/dt.jar:PATH: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");

Zookeeper集群安装(开启kerberos)相关推荐

  1. 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例

    centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...

  2. zookeeper集群安装部署

    zookeeper集群安装部署 1:规划:     集群建议至少在三台服务器上部署     192.168.1.171     192.168.1.172     192.168.1.173 2:去各 ...

  3. Zookeeper集群安装Version3.5.1

    Zookeeper集群安装,基于版本3.5.1, 使用zookeeper-3.5.1-alpha.tar.gz安装包. 1.安装规划 zookeeper集群模式,安装到如下三台机器 10.43.159 ...

  4. zookeeper集群安装和配置解读 - 雨中散步撒哈拉

    一.集群安装 0.环境准备 1.下载好的zk进行解压 2.创建数据和日志目录 3.修改配置 4.分发到集群节点 5.分别添加id 6.添加环境变量 二.集群常用命令 2.2.1 启动客户端 2.2.2 ...

  5. ZooKeeper集群安装

    ZooKeeper是Apache提供的.分布式服务协调系统,应用比較广泛. 由于项目中使用Kafka MQ,而Kafka全然使用ZooKeeper实现Kafka各组件的服务协调,包含Broker.Co ...

  6. Linux 环境 zookeeper集群安装、配置、测试

    架构说明: Dubbo 建议使用 Zookeeper 作为服务的注册中心.Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的.正是基于这个特性, 要将 ZK 集群的节 ...

  7. 1、大数据集群搭建之----jdk安装和zookeeper集群安装

    这里废话不多说,上来就干.(如果配置不成功或遇到问题,可以留言,共同解决问题) 我的百度网盘里面有所有的用到的软件,永久有效无加密. https://pan.baidu.com/s/1pqW6bHxh ...

  8. zookeeper 集群安装

    一.ZooKeeper相关概念简介: ZooKeeper是一个开源的.分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供 ...

  9. linux zk集群,linux ZooKeeper集群安装

    dataDir=/hadoop/zookeeper clientPort=2181 server.1=hadoop-master:28888:38888 server.2=hadoop-slave01 ...

最新文章

  1. zabbix2.4域用户配置
  2. oracle查询当前用户名下所有表
  3. LINUX 查看系统信息的命令
  4. 魅族6支持html吗,魅族手机浏览器兼容性调优最佳实践_html/css_WEB-ITnose
  5. 联想 sl 400 无线网卡驱动
  6. 【渝粤教育】电大中专液压与气动技术_1作业 题库
  7. EPLAN史上最全部件库,官网下载,部件宏,EDZ格式
  8. ubuntu 上 ESP8266 HomeKit 实战(四)1路继电器 + 1个触摸开关
  9. OpenCV中踩过的坑系列 01- Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)
  10. 移动机器人传感器——GNSS
  11. SQLyog安装包下载(64位和32位的都有)
  12. BPM流程建模开发详解
  13. python编程图文_深入Python多进程编程基础——图文版
  14. python语言入门自学-Python入门
  15. 第二章:泥潭中的群体
  16. 2022-2028全球双斜齿轮行业调研及趋势分析报告
  17. Network Emulator Toolkit (NEWT) 网络限速工具 (手机和电脑方面)
  18. Navicat导入向导说明
  19. GIS开发进阶之路(十四) ArcEngine打开cad文件的五种方法、ArcGIS Engine错误码
  20. HTML5+CSS大作业——仿新浪微博个人主(4页)

热门文章

  1. Oracle 中启用 scott 用户 的方法
  2. kafka----zookepeer
  3. [C#.Net]判断文件是否被占用的两种方法
  4. r语言之生成随机序列,随机数生成函数及用法
  5. EntityFramework 4.1 如何加入项目
  6. 超级好用的坐标转换软件
  7. Node.js -- 目录
  8. [Node.js] mySQL数据库 -- 英雄管理系统(完善)
  9. [jQuery基础] jQuery对象 -- CSS相关
  10. 几种简单的社交网站的标志按钮