# Zookeeper环境的搭建过程 ## 一、Zookeeper概述 ### 1.1 什么是Zookeeper Apache Zookeeper是一个开源的分布式协调服务,由雅虎创建并开源,现为Apache顶级项目。它主要用于解决分布式环境下的数据管理问题,如: - 统一命名服务 - 配置管理 - 集群管理 - 分布式锁 - 队列管理等 ### 1.2 核心特性 - **顺序一致性**:事务操作按顺序执行 - **原子性**:事务要么成功要么失败 - **单一视图**:客户端连接任意节点看到的数据一致 - **可靠性**:一旦事务完成,状态将持久化 - **实时性**:保证在一定时间范围内客户端能读到最新数据 ## 二、环境准备 ### 2.1 硬件要求 | 组件 | 最低要求 | 推荐配置 | |------------|----------------|----------------| | CPU | 双核 | 四核及以上 | | 内存 | 4GB | 8GB及以上 | | 磁盘 | 50GB HDD | SSD/NVMe | | 网络 | 千兆网卡 | 万兆网卡 | ### 2.2 软件要求 - **操作系统**:Linux/Unix(推荐CentOS 7+或Ubuntu 18.04+) - **Java环境**:JDK 1.8+(必须配置JAVA_HOME) - **SSH工具**:用于远程操作 - **防火墙配置**:开放2181(客户端端口)、2888(节点间通信)、3888(选举端口) ### 2.3 集群规划示例 | 节点 | IP地址 | 角色 | |--------|-------------|---------------| | node1 | 192.168.1.1 | Leader/Follower | | node2 | 192.168.1.2 | Follower | | node3 | 192.168.1.3 | Observer | ## 三、单机版安装 ### 3.1 下载与解压 ```bash # 下载稳定版本(以3.7.0为例) wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz # 解压到/opt目录 tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /opt/ cd /opt ln -s apache-zookeeper-3.7.0-bin zookeeper
# 编辑/etc/profile echo 'export ZOOKEEPER_HOME=/opt/zookeeper' >> /etc/profile echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile source /etc/profile
# 创建数据目录和日志目录 mkdir -p /data/zookeeper/{data,logs} # 复制样例配置文件 cp $ZOOKEEPER_HOME/conf/zoo_sample.cfg $ZOOKEEPER_HOME/conf/zoo.cfg # 修改核心配置 cat > $ZOOKEEPER_HOME/conf/zoo.cfg <<EOF tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/data dataLogDir=/data/zookeeper/logs clientPort=2181 maxClientCnxns=60 autopurge.snapRetainCount=3 autopurge.purgeInterval=1 EOF
# 启动服务 zkServer.sh start # 查看状态 zkServer.sh status # 客户端连接 zkCli.sh -server 127.0.0.1:2181
在所有节点执行以下操作:
# 创建myid文件(每个节点不同) echo "1" > /data/zookeeper/data/myid # node1 echo "2" > /data/zookeeper/data/myid # node2 echo "3" > /data/zookeeper/data/myid # node3
修改所有节点的zoo.cfg,添加集群配置:
server.1=192.168.1.1:2888:3888 server.2=192.168.1.2:2888:3888 server.3=192.168.1.3:2888:3888:observer
参数说明: - server.X
:X对应myid中的数字 - IP:2888
:节点间通信端口 - IP:3888
:选举通信端口 - observer
:标记为观察者节点(不参与选举)
按顺序启动所有节点:
# 在每个节点执行 zkServer.sh start
查看集群状态:
zkServer.sh status
正常输出示例:
Mode: leader # 或 follower/observer
验证数据同步: “`bash
zkCli.sh create /test “cluster test”
# 在其他节点查询 zkCli.sh get /test
## 五、安全配置 ### 5.1 认证配置 ```ini # 在zoo.cfg中添加 authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider requireClientAuthScheme=sasl jaasLoginRenew=3600000
# 创建$ZOOKEEPER_HOME/conf/zookeeper-server.jaas Server { org.apache.zookeeper.server.auth.DigestLoginModule required user_super="adminsecret" user_kafka="kafkasecret"; };
# 启动时加载认证 export JVMFLAGS="-Djava.security.auth.login.config=/path/to/jaas.conf" zkCli.sh -server localhost:2181
命令 | 作用 |
---|---|
zkServer.sh start | 启动服务 |
zkServer.sh stop | 停止服务 |
zkServer.sh restart | 重启服务 |
zkServer.sh status | 查看状态 |
zkCli.sh | 启动客户端 |
# 手动触发快照 zkSnapshot.sh -n backup # 自动备份脚本示例 #!/bin/bash BACKUP_DIR="/backup/zookeeper" [ -d $BACKUP_DIR ] || mkdir -p $BACKUP_DIR rsync -avz /data/zookeeper/data/ $BACKUP_DIR/$(date +%Y%m%d) find $BACKUP_DIR -mtime +7 -exec rm -rf {} \;
通过JMX暴露的监控指标: - zk_avg_latency:平均延迟 - zk_max_latency:最大延迟 - zk_packets_received:接收包数 - zk_num_alive_connections:活跃连接数
端口冲突:
netstat -tunlp | grep 2181
磁盘空间不足:
df -h /data
myid文件错误:
cat /data/zookeeper/data/myid
grep -E "LEADING|FOLLOWING" zookeeper.out
# zoo.cfg优化参数 tickTime=2000 initLimit=15 syncLimit=5 maxClientCnxns=1000 minSessionTimeout=4000 maxSessionTimeout=40000 preAllocSize=65536 snapCount=100000
# 修改zkEnv.sh export JVMFLAGS="-Xms4G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=20"
mount -o remount,noatime /data
注意事项: 1. 生产环境必须使用集群模式(至少3节点) 2. 定期清理事务日志(zookeeper.cleanup.sh) 3. 监控磁盘I/O性能 4. 建议使用专用用户运行(如:
useradd -M -s /sbin/nologin zookeeper
)
通过以上步骤,您已经完成了Zookeeper环境的完整搭建。实际部署时请根据业务需求调整配置参数,并做好监控告警设置。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。