Linux系统如何部署zookeeper集群

发布时间:2022-01-25 10:13:46 作者:小新
来源:亿速云 阅读:170
# 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

三、JDK安装

# CentOS
sudo yum install -y java-1.8.0-openjdk-devel

# Ubuntu
sudo apt install -y openjdk-8-jdk

# 验证安装
java -version

四、Zookeeper集群部署

1. 下载安装包

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

2. 创建数据目录

sudo mkdir -p /data/zookeeper/{data,logs}
sudo chown -R $(whoami):$(whoami) /data/zookeeper

3. 配置文件修改

复制样例配置并修改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:集群通信端口

4. 创建myid文件

在每个节点的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

5. 配置环境变量

echo 'export ZOOKEEPER_HOME=/opt/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin' | sudo tee -a /etc/profile
source /etc/profile

五、启动与验证

1. 启动集群

# 所有节点执行
/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

2. 基础测试

# 连接客户端
zkCli.sh -server zk-node1:2181

# 执行测试命令
[zk: zk-node1:2181(CONNECTED) 0] create /test "hello"
[zk: zk-node1:2181(CONNECTED) 1] get /test

3. 集群健康检查

echo stat | nc 127.0.0.1 2181 | grep Mode
echo mntr | nc 127.0.0.1 2181 | grep zk_server_state

六、常见问题解决

1. 无法选举Leader

2. 数据目录权限问题

sudo chown -R zookeeper:zookeeper /data/zookeeper

3. 内存溢出调整

修改/opt/zookeeper/bin/zkEnv.sh

export JVMFLAGS="-Xms2048m -Xmx2048m"

七、生产环境优化建议

  1. 监控配置

    • 使用Prometheus + Grafana监控
    • 关键指标:znode数量、watch数量、延迟时间
  2. 日志管理

    # 修改log4j.properties
    zookeeper.log.dir=/data/zookeeper/logs
    log4j.appender.ROLLINGFILE.MaxFileSize=100MB
    
  3. JVM调优

    # 建议配置
    -Xms4G -Xmx4G -XX:+UseG1GC -XX:MaxGCPauseMillis=200
    
  4. 定期清理

    # 添加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地址、版本号等参数。

推荐阅读:
  1. Zookeeper 集群
  2. kubernetes部署有状态应用之zookeeper集群

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux zookeeper

上一篇:Linux的edquota命令怎么使用

下一篇:Linux系统如何部署ThinkPHP

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》