ZooKeeper集群指南-安装配置

节点之间配置ssh免密,第一台节点配置完成后将目录scp到其他节点,除了5. 节点ID配置不同以外,其他都一致

1. 安装Java环境

bash 复制代码
# 安装OpenJDK 8
apt-get update
apt-get install openjdk-8-jdk -y

2. 下载并安装ZooKeeper

bash 复制代码
# 下载指定版本
cd /data
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz

# 解压安装
tar -zxf apache-zookeeper-3.6.2-bin.tar.gz
mv apache-zookeeper-3.6.2-bin zookeeper

# 创建必要目录
mkdir -p /data/zookeeper/data
mkdir -p /data/zookeeper/logs

3. 配置环境变量

创建环境变量配置文件

bash 复制代码
vim /etc/profile.d/zookeeper.sh

添加以下配置

bash 复制代码
# ZooKeeper Environment
export ZOOKEEPER_HOME=/data/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

# Java Environment
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

# ZooKeeper Security Configuration
export ZK_CLIENT_OPTS="-Djava.security.auth.login.config=/data/zookeeper/conf/zookeeper_jaas.conf"
export JVMFLAGS="-Djava.security.auth.login.config=/data/zookeeper/conf/zookeeper_jaas.conf"

使环境变量生效

bash 复制代码
source /etc/profile.d/zookeeper.sh

4. ZooKeeper配置

创建配置文件

bash 复制代码
vim /data/zookeeper/conf/zoo.cfg

添加以下配置内容

properties 复制代码
# 基础配置
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
admin.serverPort=8081

# 监听配置
quorumListenOnAllIPs=true

# 集群配置
server.1=172.24.77.10:2888:3888
server.2=172.24.77.11:2888:3888
server.3=172.24.77.12:2888:3888

# 四字母命令配置
4lw.commands.whitelist=*

# 自动清理配置
autopurge.snapRetainCount=3
autopurge.purgeInterval=1

# 会话超时配置
maxSessionTimeout=60000
minSessionTimeout=4000

# 安全认证配置
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000

jaas配置

Server是zk之间加密通信用的,Client是kafka或者zkClient使用的。默认情况下,zk谁都可以连接查询数据

yaml 复制代码
$ cat zookeeper_jaas.conf 
# 1. Server部分 - ZooKeeper服务器认证配置
Server {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    user_super="super_password"    # super是用户名,super_password是密码
    user_kafka="kafka_password";   # kafka是用户名,kafka_password是密码
};
# 2. Client部分 - ZK客户端认证配置
Client {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    username="super"               # 使用Server中定义的super用户
    password="super_password";     # 必须匹配Server中user_super的密码
};

5. 节点ID配置

bash 复制代码
# 在每个节点的dataDir目录下创建myid文件
# 节点1
echo "1" > /data/zookeeper/data/myid

# 节点2
echo "2" > /data/zookeeper/data/myid

# 节点3
echo "3" > /data/zookeeper/data/myid

6. 配置说明

配置项 说明 默认值
tickTime 基本时间单位(毫秒) 2000
initLimit 初始同步时限 10
syncLimit 同步时限 5
clientPort 客户端连接端口 2181
admin.serverPort 管理端口 8081
server.X 集群服务器配置 -

7. 服务管理

bash 复制代码
# 启动服务
zkServer.sh start

# 检查状态
zkServer.sh status

# 停止服务
zkServer.sh stop

# 重启服务
zkServer.sh restart

8. 验证安装

bash 复制代码
# 检查进程
ps aux | grep zookeeper

# 检查端口
netstat -nlpt | grep -E '2181|2888|3888|8081'

# 检查日志
tail -f /data/zookeeper/logs/zookeeper.log

9. ACL配置

shell 复制代码
# 1. 首先确保已正确配置JAAS并连接(前面已经定义,这里检查一下)
export JVMFLAGS="-Djava.security.auth.login.config=/data/zookeeper/conf/zookeeper_jaas.conf"
export ZK_CLIENT_OPTS="-Djava.security.auth.login.config=/data/zookeeper/conf/zookeeper_jaas.conf"

# 2. 使用zkCli连接并认证
zkCli.sh -server localhost:2181

# 3. 查看当前ACL
[zk: localhost:2181(CONNECTED) 0] getAcl /
'world,'anyone
: cdrwa

# 4. 设置新的ACL (使用sasl方案)
[zk: localhost:2181(CONNECTED) 0] setAcl / sasl:super:cdrwa

# 5. 验证ACL已修改
[zk: localhost:2181(CONNECTED) 0] getAcl /
'sasl,'super
: cdrwa
相关推荐
Yz987612 小时前
Kafka面试题
大数据·分布式·zookeeper·kafka·big data
一叶飘零_sweeeet15 小时前
Eureka、Zookeeper 与 Nacos:服务注册与发现功能大比拼
spring·zookeeper·eureka·nacos
解怡椿3 天前
Zookeeper的安装与使用
大数据·hadoop·zookeeper
斯普信专业组3 天前
Zookeeper运维秘籍:四字命令基础、详解及业务应用全解析
分布式·zookeeper
徐浪老师4 天前
深入Zookeeper节点操作:高级功能与最佳实践
linux·服务器·zookeeper
Yz98765 天前
Hadoop集群的高可用(HA)- (1、搭建namenode的高可用)
java·大数据·hive·hadoop·hdfs·zookeeper·big data
2301_811212336 天前
【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
mysql·zookeeper·chatgpt·sqlite·aigc·hbase·storm
zmd-zk7 天前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
上辈子杀猪这辈子学IT7 天前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian