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

作者:櫰木

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/[email protected]格式表示zk服务端和客户端票据。

票据名 票据文件 文件分布
zookeeper/[email protected] /etc/security/keytab/zookeeper.keytab hd1.dtstack.com主机
zookeeper/[email protected] /etc/security/keytab/zookeeper.keytab hd2.dtstack.com主机
zookeeper/[email protected] /etc/security/keytab/zookeeper.keytab hd3.dtstack.com主机

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

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

bash 复制代码
bash /root/bigdata/getkeytabs.sh /etc/security/keytab/zookeeper.keytab  zookeeper

3、zookeeper 安装

修改配置文件

bash 复制代码
[email protected] ~]# cd /root/bigdata && tar -xzvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt
[[email protected] ~]# ln -s /opt/apache-zookeeper-3.7.1-bin/ /opt/zookeeper
[[email protected] ~]#cd /opt/zookeeper
[[email protected] 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/[email protected]
4lw.commands.whitelist=mntr,conf,ruok,cons
EOF

说明:

  • 改配置文件中ssl配置(标红色部分)目的是解决ranger 配置hive等组件在连接测试过程出现无权限问题
  • 创建SSL认证文件zookeeper-jaas.conf、java.env
bash 复制代码
[email protected] 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/[email protected]";
};
Client {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytab/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/[email protected]";
};
Learner {
  com.sun.security.auth.module.Krb5LoginModule required
  useKeyTab=true
  keyTab="/etc/security/keytab/zookeeper.keytab"
  storeKey=true
  useTicketCache=false
  principal="zookeeper/[email protected]";
};
EOF

说明:

  • principal用具体票据名,不能用hadoop/[email protected]或hadoop/[email protected],否则报错
  • zk服务端和客户端票据在kerberos中已经创建,此处省略,客户端和服务端票据是不一样的
bash 复制代码
[email protected] conf]# cat >java.env<<EOF
export JVMFLAGS="-Djava.security.auth.login.config=/opt/zookeeper/conf/zookeeper-jaas.conf"
export JAVA_HOME="/opt/java"
EOF
 
[[email protected] conf]# cat >/data/zookeeper/data/myid<<EOF
2
EOF

同步到其他机器

bash 复制代码
[email protected] conf]# cd /opt/
[[email protected] software]# scp -r apache-zookeeper-3.7.1-bin [email protected]:/opt/
[[email protected] software]# scp -r apache-zookeeper-3.7.1-bin [email protected]:/opt/

在其他机器修改对应配置

hd1.dtstack.com主机root权限:

bash 复制代码
[[email protected] conf]# cat >/data/zookeeper/data/myid<<EOF
1
EOF
bash 复制代码
[[email protected] ~]# cd /opt/apache-zookeeper-3.7.1-bin/conf
[[email protected] ~]# sed -i 's#hd2.dtstack.com#hd1.dtstack.com#g' zookeeper-jaas.conf
[[email protected] ~]# sed -i 's#hd2.dtstack.com#hd1.dtstack.com#g' zoo.cfg

hd3.dtstack.com主机root权限:

bash 复制代码
[[email protected] conf]# cat >/data/zookeeper/data/myid<<EOF
3
EOF
[[email protected] ~]# cd /opt/apache-zookeeper-3.7.1-bin/conf
[[email protected] ~]# sed -i 's#hd2.dtstack.com#hd3.dtstack.com#g' zookeeper-jaas.conf
[[email protected] ~]# sed -i 's#hd2.dtstack.com#hd3.dtstack.com#g' zoo.cfg

4 zookeeper集群启停

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

bash 复制代码
[[email protected] 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

修改整体目录文件权限

bash 复制代码
[[email protected] apache-zookeeper-3.6.3-bin]# chown -R zookeeper:zookeeper /opt/apache-zookeeper-3.7.1-bin

启动命令:

bash 复制代码
sh zk_cluster.sh start

停止命令:

bash 复制代码
sh zk_cluster.sh stop

查看状态命令:

bash 复制代码
sh zk_cluster.sh status

5 zookeeper集群验证

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

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

进程查看,命令jps

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

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

相关推荐
望获linux21 分钟前
智能清洁机器人中的实时操作系统应用研究
大数据·linux·服务器·人工智能·机器人·操作系统
三个蔡2 小时前
Java求职者面试:从Spring Boot到微服务的技术深度探索
java·大数据·spring boot·微服务·kubernetes
慧一居士3 小时前
Zookeeper HA集群搭建
分布式·zookeeper
说私域3 小时前
基于开源技术体系的品牌赛道力重构:AI智能名片与S2B2C商城小程序源码驱动的品类创新机制研究
人工智能·小程序·重构·开源·零售
正宗咸豆花4 小时前
开源提示词管理平台PromptMinder使用体验
人工智能·开源·prompt
Lilith的AI学习日记4 小时前
AI提示词(Prompt)终极指南:从入门到精通(附实战案例)
大数据·人工智能·prompt·aigc·deepseek
白鲸开源5 小时前
任务运维、循环任务死锁.....DolphinScheduler任务配置经验分享
大数据
小钊(求职中)6 小时前
ElasticSearch从入门到精通-覆盖DSL操作和Java实战
java·大数据·elasticsearch·搜索引擎·全文检索
FIT2CLOUD飞致云6 小时前
干货分享|MaxKB智能问数方案及步骤详解
人工智能·开源
西电研梦7 小时前
稳扎稳打,25西电生命科学技术学院(考研录取情况)
大数据·考研·生物医学工程·西安电子科技大学