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
相关推荐
武子康18 小时前
大数据-31 ZooKeeper 内部原理 Leader选举 ZAB协议
大数据·后端·zookeeper
阿波罗.20121 天前
Zookeeper 客户端 .net访问框架 ZookeeperNetEx项目开发编译
分布式·zookeeper
武子康2 天前
大数据-30 ZooKeeper Java-API 监听节点 创建、删除节点
大数据·后端·zookeeper
小葛呀12 天前
互联网大数据求职面试:从Zookeeper到Flink的技术探讨
大数据·redis·zookeeper·面试·flink·互联网·yarn
小白上线*^_^*12 天前
Kafka与Zookeeper在linux上的下载记录
zookeeper·kafka·linux上的下载与安装
longxibo13 天前
ZooKeeper 3.9.2 集群安装指南
大数据·分布式·zookeeper·debian
dessler13 天前
ZooKeeper-备份(Backup)
linux·运维·zookeeper
dessler14 天前
ZooKeeper-监控(Monitor)
linux·运维·zookeeper
hwj运维之路14 天前
大数据系统架构实践(一):Zookeeper集群部署
大数据·zookeeper·系统架构
福如意如我心意15 天前
使用docker-compose安装kafka
docker·zookeeper·kafka