开源大数据集群部署(十五)Zookeeper集群部署

櫰木2年前技术文章622

1、集群规划

主机

版本

角色

系统用户

hd1.dtstack.com

3.7.1

follower

zookeeper

hd2.dtstack.com

3.7.1

leader

zookeeper

hd3.dtstack.com

3.7.1

follower

zookeeper

2、zookeeper kerberos主体创建


在生产中zk服务端和客户端票据可以设置成不通名称或相同名称,本次设置成同一个票据名称zookeeper/HOST@DTSTACK.COM格式表示zk服务端和客户端票据。

票据名

票据文件

文件分布

zookeeper/hd1.dtstack.com@DTSTACK.COM

/etc/security/keytab/zookeeper.keytab

hd1.dtstack.com主机

zookeeper/hd2.dtstack.com@DTSTACK.COM

/etc/security/keytab/zookeeper.keytab

hd2.dtstack.com主机

zookeeper/hd3.dtstack.com@DTSTACK.COM

/etc/security/keytab/zookeeper.keytab

hd3.dtstack.com主机

hd1.dtstack.com主机上root权限下创建kerberos主体,使用zookeeper系统用

在每台机器上执行生成脚本,执行此脚本可自动生成principal在每个节点执行

bash /root/bigdata/getkeytabs.sh /etc/security/keytab/zookeeper.keytab  zookeeper

3、zookeeper 安装

修改配置文件

[

root@hd2.dtstack.com ~]# cd /root/bigdata && tar -xzvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt
[root@hd2.dtstack.com ~]# ln -s /opt/apache-zookeeper-3.7.1-bin/ /opt/zookeeper
[root@hd2.dtstack.com ~]#cd /opt/zookeeper
[root@hd2.dtstack.com conf]#cat >zoo.cfg<<EOF
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data/
dataLogDir=/data/zookeeper/log/
clientPort=2181
maxCnxns=20000
maxClientCnxns=2000
minSessionTimeout=4000
maxSessionTimeout=60000
autopurge.purgeInterval=24
autopurge.snapRetainCount=5
quorum.cnxn.threads.size=20
#zk集群服务地址配置
server.1=hd1:2888:3888
server.2=hd2:2888:3888
server.3=hd3:2888:3888
#zk kerberos配置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
jaasLoginRenew=3600000
kerberos.removeHostFromPrincipal=true
kerberos.removeRealmFromPrincipal=true
requireClientAuthScheme=sasl
quorum.auth.enableSasl=true
quorum.auth.learner.saslLoginContext=Learner
quorum.auth.server.saslLoginContext=Server
quorum.auth.kerberos.servicePrincipal=zookeeper/hd1.dtstack.com@DTSTACK.COM
4lw.commands.whitelist=mntr,conf,ruok,cons
EOF


说明:

ü 改配置文件中ssl配置(标红色部分)目的是解决ranger 配置hive等组件在连接测试过程出现无权限问题

Ø 创建SSL认证文件zookeeper-jaas.confjava.env

[

root@hd2.dtstack.com conf]# cat >zookeeper-jaas.conf<<EOF
Server {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytab/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/hd2.dtstack.com@DTSTACK.COM";
};
Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytab/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/hd2.dtstack.com@DTSTACK.COM";
};
Learner {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytab/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/hd2.dtstack.com@DTSTACK.COM";
};
EOF


说明:

ü principal用具体票据名,不能用hadoop/host_name@DTSTACK.COM或hadoop/_HOST@DTSTACK.COM,否则报错

ü zk服务端和客户端票据在kerberos中已经创建,此处省略,客户端和服务端票据是不一样的

 

[

root@hd2.dtstack.com conf]# cat >java.env<<EOF
export JVMFLAGS="-Djava.security.auth.login.config=/opt/zookeeper/conf/zookeeper-jaas.conf"
export JAVA_HOME="/opt/java"
EOF
 
[root@hd2.dtstack.com conf]# cat >/data/zookeeper/data/myid<<EOF
2
EOF


 

Ø 同步到其他机器

root@hd2.dtstack.com conf]# cd /opt/
[root@hd2.dtstack.com software]# scp -r apache-zookeeper-3.7.1-bin root@hd1.dtstack.com:/opt/
[root@hd2.dtstack.com software]# scp -r apache-zookeeper-3.7.1-bin root@hd3.dtstack.com:/opt/


Ø 在其他机器修改对应配置

hd1.dtstack.com主机root权限:

[root@hd1.dtstack.com conf]# cat >/data/zookeeper/data/myid<<EOF
1
EOF


[root@hd1.dtstack.com ~]# cd /opt/apache-zookeeper-3.7.1-bin/conf
[root@hd1.dtstack.com ~]# sed -i 's#hd2.dtstack.com#hd1.dtstack.com#g' zookeeper-jaas.conf
[root@hd1.dtstack.com ~]# sed -i 's#hd2.dtstack.com#hd1.dtstack.com#g' zoo.cfg


hd3.dtstack.com主机root权限:

[root@hd3.dtstack.com conf]# cat >/data/zookeeper/data/myid<<EOF
3
EOF
[root@hd3.dtstack.com ~]# cd /opt/apache-zookeeper-3.7.1-bin/conf
[root@hd3.dtstack.com ~]# sed -i 's#hd2.dtstack.com#hd3.dtstack.com#g' zookeeper-jaas.conf
[root@hd3.dtstack.com ~]# sed -i 's#hd2.dtstack.com#hd3.dtstack.com#g' zoo.cfg

2.5.3 zookeeper集群启停

Ø zk集群启停脚本zk_cluster.sh内容如下:

[root@hd1.dtstack.com apache-zookeeper-3.7.1-bin]# cat >zk_cluster.sh<<EOF
#!/bin/bash
 case $1 in
"start"){
for i in hd1.dtstack.com hd2.dtstack.com hd3.dtstack.com
do
        echo ---------- zookeeper $i 启动 ------------
ssh $i "source /etc/profile;/opt/zookeeper/bin/zkServer.sh start"
done
};;
"stop"){
for i in hd1.dtstack.com hd2.dtstack.com hd3.dtstack.com
do
        echo ---------- zookeeper $i 停止 ------------    
ssh $i "source /etc/profile;/opt/zookeeper/bin/zkServer.sh stop"
done
};;
"status"){
for i in hd{1..3}
do
        echo ---------- zookeeper $i 状态 ------------    
ssh $i "source /etc/profile;/opt/zookeeper/bin/zkServer.sh status"
done
};;
esac
EOF


Ø 修改整体目录文件权限

[root@hd1.dtstack.com apache-zookeeper-3.6.3-bin]# chown -R zookeeper:zookeeper /opt/apache-zookeeper-3.7.1-bin

Ø 启动命令:

sh zk_cluster.sh start

Ø 停止命令:

sh zk_cluster.sh stop

Ø 查看状态命令:

sh zk_cluster.sh status

2.5.4 zookeeper集群验证

Ø 可通过执行sh zk_cluster.sh status查看

图片4.png 

Ø 端口查看,命令netstat -an|grep 2181

图片5.png 

Ø 进程查看,命令jps

图片6.png 

至此,zk三节点集群搭建完成



相关文章

大数据组件Apache NiFi

大数据组件Apache NiFi

概述NiFi是美国国家安全局开发并使用了8年的可视化数据集成产品,2014年NAS将其贡献给了Apache社区,2015年成为Apache顶级项目。是一个基于Web图形界面,通过拖拽、连接、配置完成基...

Java-API-MapReduce的操作WordCount篇

Java-API-MapReduce的操作WordCount篇

首先就是pom文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/...

Doris 介绍及使用场景

Doris 介绍及使用场景

Doris 介绍                    Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据...

企业级大数据安全架构(五)

企业级大数据安全架构(五)

本章节介绍安全架构里面一个重要组件Knox安装,我们是通过ambari安装,如果安装开源Knox可参考官网文档1 ambari页面add service2勾选Knox安装点击NEXT3选择安装knox...

nginx分发算法

nginx分发算法

一、分发算法介绍如何将用户请求按照一定的规律分发给业务服务器。主要分为Nginx集群默认算法和基于请求头分发算法。二、nginx集群默认算法nginx的upstream 目前支持4种方式的分配轮询(默...

CDP实操(7.1.4版本)--RangerAdmin使用负载均衡实现高可用

CDP实操(7.1.4版本)--RangerAdmin使用负载均衡实现高可用

本文主要是通过配置外部负载平衡器,实现 Ranger HA。1、在 Cloudera Manager 中,选择 Ranger,然后选择Actions > Add Role Instances。2...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。