您的位置:首页 > 运维架构

hadoop 上安装配置Kerberos支持的zookeeper

2014-11-18 11:57 483 查看
我的环境:

Red Hat Enterprise Linux Server release 5.5 (查看系统版本的命令:lsb_release -a)  64位
Java 环境:jdk1.7.0_51

Hadoop版本:编译过源码的2.2.0
Hbase版本:0.94-17
zookeeper版本:3.4.6 (我们没有使用hbase自带的zookeeper)

配置正常运行的zookeeper
1.从下载zookeeper:http://zookeeper.apache.org/
2.解压,生成zookeeper的目录
3.创建用于存放数据的目录,我设置的是/data/zookeeper,该目录的权限如下:
drwxr-xr-x 3 zookeeper hadoop 4096 Apr 1 11:31 zookeeper
4.在zookeeper安装目录下的conf文件夹下,将zoo-sample.cfg重命名为zoo.cfg,并添加以下信息(重要):
dataDir=/data/zookeeper
# the port at which the clients will connect
clientPort=2181
server.1=vbaby1.cloud.eb:2888:3888
server.2=vbaby2.cloud.eb:2888:3888
server.3=vbaby3.cloud.eb:2888:3888
 dataDir即设置为上一步中创建的data文件夹,后面的信息则是zookeeper的server机器,端口号设置为默认
5.在第三步创建的data目录下,新建myid文件,其中填写server.id编号。例如,在vbaby1.cloud.eb上的myid文件就只用填写一个1
6.将配置好的zookeeper文件夹分发到所有机器上,注意修改myid文件。
7.在每台机器上到zookeeper的安装目录,进入到bin目录下。执行以下命令:
$ ./zkServer.sh start
开启zookeeper
8.最后,输入jps命令见到名为QuorumPeerMain的进程,或者在bin目录下执行以下命令:
$ ./zkServer.sh status
看到
JMX enabled by default
Using config: /home/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower (或者为leader)
启动成功

配置Zookeeper服务器来支持Kerberos的安全性
注意:在配置安全性之前,一定要配置一个可以正常运行的zookeeper。
1.为zookeeper server创建一个principal:
kadmin:addprinc -randkey zookeeper/vbaby1.cloud.eb@CLOUD.EB
kadmin:addprinc -randkey zookeeper/vbaby2.cloud.eb@CLOUD.EB
kadmin:addprinc -randkey zookeeper/vbaby3.cloud.eb@CLOUD.EB
2.为zookeeper创建一个keytab文件(在不同的机器上创建不同的keytab):
kadmin:xst -k zookeeper.keytab zookeeper/vbaby1.cloud.eb@CLOUD.EB
kadmin:xst -k zookeeper.keytab zookeeper/vbaby2.cloud.eb@CLOUD.EB
kadmin:xst -k zookeeper.keytab zookeeper/vbaby3.cloud.eb@CLOUD.EB
3.将生成的keytab文件拷贝到zookeeper的配置文件夹(即zookeeper安装路径下的conf文件夹)下,并修改其权限如下,使之权限如下:
-r-------- 1 zookeeper zookeeper 148 Mar 17 11:42 zookeeper.keytab
4.在zookeeper的配置文件夹下的zoo.cfg文件中加入以下信息:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
5.启动Java验证和授权服务(JAAS):在zookeeper的配置文件夹下创建一个jass.conf文件,内容如下:
Server {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/zookeeper/conf/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/fully.qualified.domain.name@<YOUR-REALM>";
};
注意:一定要确保fully.qualified.domain.name是正确的,即与该文件所在的主机的主机名相同
6.在zookeeper的配置文件夹下的java.env文件中添加如下内容(如果没有这个文件,则创建该文件):
export JVMFLAGS="-Djava.security.auth.login.config=${ZOOKEEPER_HOME}/conf/jaas.conf"
7.如果在集群内有多个zookeeper的server,那么在每台机器上重复以上步骤即可
8.重启zookeeper的server,那么安全配置就会生效了。

配置zookeeper client支持Kerberos 安全(略)
因为我们配置zookeeper主要是为了使用hbase,基本不使用zookeeper的client,而且zookeeper的client与hbase的client有所冲突,所以先不配置了。

参考连接:
1.http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/4.2.2/CDH4-Security-Guide/cdh4sg_topic_11.html
2.http://blog.csdn.net/teddeyang/article/details/15504803
3.HBASE官方文档中文版
4.hbase官方文档英文版:http://hbase.apache.org/book/security.html#hbase.secure.configuration
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息