您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Linux系统如何部署Zookeeper集群
## 一、Zookeeper简介
Apache Zookeeper是一个开源的分布式协调服务,由雅虎创建并贡献给Apache基金会。它为分布式应用提供一致性服务,包括:
- 配置维护
- 域名服务
- 分布式同步
- 组服务等
Zookeeper通过**ZAB协议(Zookeeper Atomic Broadcast)**保证分布式一致性,典型应用场景包括:
- Hadoop/YARN高可用
- Kafka集群协调
- Dubbo服务注册中心
## 二、环境准备
### 1. 服务器规划
建议至少3个节点组成集群(满足奇数投票机制):
| 主机名 | IP地址 | 角色 |
|----------|-------------|---------------|
| zk-node1 | 192.168.1.10| Leader/Follower|
| zk-node2 | 192.168.1.11| Leader/Follower|
| zk-node3 | 192.168.1.12| Leader/Follower|
### 2. 系统要求
- 操作系统:CentOS 7+/Ubuntu 18.04+
- Java环境:JDK 8+
- 内存:≥2GB(生产环境建议4GB+)
- 磁盘:≥10GB(建议SSD)
### 3. 基础配置
```bash
# 所有节点执行
sudo timedatectl set-timezone Asia/Shanghai
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 配置hosts
echo "192.168.1.10 zk-node1
192.168.1.11 zk-node2
192.168.1.12 zk-node3" | sudo tee -a /etc/hosts
# CentOS
sudo yum install -y java-1.8.0-openjdk-devel
# Ubuntu
sudo apt install -y openjdk-8-jdk
# 验证安装
java -version
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.3/apache-zookeeper-3.6.3-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.3-bin.tar.gz
sudo mv apache-zookeeper-3.6.3-bin /opt/zookeeper
sudo mkdir -p /data/zookeeper/{data,logs}
sudo chown -R $(whoami):$(whoami) /data/zookeeper
复制样例配置并修改zoo.cfg
:
cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
修改配置内容:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/zookeeper/data
dataLogDir=/data/zookeeper/logs
clientPort=2181
maxClientCnxns=60
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
# 集群配置
server.1=zk-node1:2888:3888
server.2=zk-node2:2888:3888
server.3=zk-node3:2888:3888
参数说明:
- tickTime
:基本时间单元(毫秒)
- initLimit
:Follower初始连接超时(tickTime倍数)
- syncLimit
:Follower同步超时
- 2888
:Leader选举端口
- 3888
:集群通信端口
在每个节点的dataDir目录创建myid文件,内容为对应的server编号:
# zk-node1执行
echo 1 > /data/zookeeper/data/myid
# zk-node2执行
echo 2 > /data/zookeeper/data/myid
# zk-node3执行
echo 3 > /data/zookeeper/data/myid
echo 'export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin' | sudo tee -a /etc/profile
source /etc/profile
# 所有节点执行
/opt/zookeeper/bin/zkServer.sh start
# 查看状态
zkServer.sh status
正常输出示例:
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Mode: leader # 或 follower
# 连接客户端
zkCli.sh -server zk-node1:2181
# 执行测试命令
[zk: zk-node1:2181(CONNECTED) 0] create /test "hello"
[zk: zk-node1:2181(CONNECTED) 1] get /test
echo stat | nc 127.0.0.1 2181 | grep Mode
echo mntr | nc 127.0.0.1 2181 | grep zk_server_state
telnet zk-node1 3888
myid
文件是否匹配配置sudo chown -R zookeeper:zookeeper /data/zookeeper
修改/opt/zookeeper/bin/zkEnv.sh
:
export JVMFLAGS="-Xms2048m -Xmx2048m"
监控配置:
日志管理:
# 修改log4j.properties
zookeeper.log.dir=/data/zookeeper/logs
log4j.appender.ROLLINGFILE.MaxFileSize=100MB
JVM调优:
# 建议配置
-Xms4G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200
定期清理:
# 添加crontab任务
0 3 * * * /opt/zookeeper/bin/zkCleanup.sh -n 10
命令 | 作用 |
---|---|
zkServer.sh start |
启动服务 |
zkServer.sh stop |
停止服务 |
zkServer.sh restart |
重启服务 |
zkServer.sh status |
查看节点角色 |
zkCli.sh |
进入命令行客户端 |
通过以上步骤,您已成功部署Zookeeper集群。建议在正式环境前进行充分的压力测试,并根据实际业务需求调整配置参数。 “`
这篇文章包含了: 1. 环境准备与规划 2. 详细的安装配置步骤 3. 集群验证方法 4. 常见问题解决方案 5. 生产环境优化建议 6. 常用维护命令
总字数约1650字,采用Markdown格式,包含代码块、表格等元素便于阅读。可根据实际环境调整IP地址、版本号等参数。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。