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=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、zookeeper集群安装
前提准备3台centos7.0虚拟机 c7003:192.168.70.103 c7004:192.168.70.104 c7005:192.168.70.105 并在三台虚拟机上配置hosts为 1 ...
- 原创:centos7.1下 ZooKeeper 集群安装配置+Python实战范例
centos7.1下 ZooKeeper 集群安装配置+Python实战范例 下载:http://apache.fayea.com/zookeeper/zookeeper-3.4.9/zookeepe ...
- hbase和ZooKeeper集群安装配置
一:ZooKeeper集群安装配置 1:解压zookeeper-3.3.2.tar.gz并重命名为zookeeper. 2:进入~/zookeeper/conf目录: 拷贝zoo_sample.cfg ...
- Zookeeper集群安装Version3.5.1
Zookeeper集群安装,基于版本3.5.1, 使用zookeeper-3.5.1-alpha.tar.gz安装包. 1.安装规划 zookeeper集群模式,安装到如下三台机器 10.43.159 ...
- zookeeper 集群安装与配置
Zookeeper安装和配置 准备工作 安装 JDK,此步略. 下载 zookeeper wget http://archive.apache.org/dist/zookeeper/zookeeper ...
- zookeeper:一.zookeeper集群安装
1.zookeeper简介2.安装zookeeper2.1 安装环境准备2.2 安装zookeeper2.2.1.解压zookeeper压缩包到/opt/zookeeper2.2.2.编辑zookee ...
- Zookeeper集群安装详解
Zookeeper的角色 Zookeeper集群搭建 要求:服务器集群规模不小于3个节点,各服务器之间系统时间要保持一致! 安装步骤 1.在h1节点解压,目录改名. tar –zxvf zooke ...
- ZooKeeper集群安装
ZooKeeper是Apache提供的.分布式服务协调系统,应用比較广泛. 由于项目中使用Kafka MQ,而Kafka全然使用ZooKeeper实现Kafka各组件的服务协调,包含Broker.Co ...
- Zookeeper 集群安装配置,超详细,速度收藏!
今天,栈长分享下 Zookeeper 的集群安装及配置. 下载 下载地址:http://zookeeper.apache.org/ 下载过程就不说了,我们下载了最新的zookeeper-3.4.11. ...
随机推荐
- DBMS_RANDOM包详解
DBMS_RAMDOM包中一共包含9个存储过程和函数,其中6个是现在用的,3个是已经过时的: 当前版本11gR2 每次生成一个随机数oracle都会初始化一个种子,也可以调用seed过程自己初始化一个 ...
- Equinox OSGi服务器应用程序的配置步骤 (支持JSP页面)
本文介绍在Eclipse里如何配置一个简单的基于Eclipse Equinox OSGi实现的Web应用程序,在它的基础上可以构造更加复杂的应用,本文使用的是Eclipse 3.3.1版本,如果你的E ...
- Servlet(1):Servlet介绍
一. Servlet介绍 Servlet 是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生 ...
- sql优化的8种方式
1.设置索引. MySQL索引操作:给表列创建索引: 建表时创建索引: create table t(id int,name varchar(20),index idx_name (name)); 给 ...
- Spring Boot中注解@ConfigurationProperties
在Spring Boot中注解@ConfigurationProperties有三种使用场景,而通常情况下我们使用的最多的只是其中的一种场景.本篇文章带大家了解一下三种场景的使用情况. 场景一 使用@ ...
- 注册页面的servlet
package cn.itcast.travel.web.servlet;import cn.itcast.travel.domain.ResultInfo;import cn.itcast.trav ...
- 【力扣】188. 买卖股票的最佳时机 IV
给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你最多可以完成 k 笔交易. 注意:你不能同时参 ...
- Go语言核心36讲(Go语言实战与应用二十四)--学习笔记
46 | 访问网络服务 前导内容:socket 与 IPC 人们常常会使用 Go 语言去编写网络程序(当然了,这方面也是 Go 语言最为擅长的事情).说到网络编程,我们就不得不提及 socket. s ...
- Web系统与自控系统数据通讯架构 之 OPC DA DataChangeEventHandler 非热点数据更新策略 ,
在使用OPC 采集 工控数据时,在DA模式下.采集数据通常用到 DataChangeEventHandler这个事件.但有时会遇到一些问题,就是当数据不变化时时不会触发 DataChange 这个事件 ...
- Mysql原有环境部署多个版本
目录 一.环境准备 二.下载安装包 三.Mysql-5.7单独部署 四.启动Mysql-5.7 五.muliti使用 一.环境准备 原先已经有一个5.6版本的数据库在运行了,当前操作是完全不影响原数据 ...