ZooKeeper集群安装(附安装报错集)

# ZooKeeper集群安装(附安装报错集)


前言

正处于学习中间件过程,当学习到Kafka时,涉及到ZooKeeper集群,故自行安装一遍,以下为安装过程,后续可能也会不定期更新。


一、搭建虚拟机

一般准备三台虚拟机供学习使用,这里以VMware为例。
(每台虚拟机都需安装JDK,这里以1.8为例)
在这里插入图片描述

二、下载安装包

https://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

三、安装ZK

  • 将安装包上传至/home目录
  • 解压
tar -zxvf zookeeper-3.4.10.tar.gz 
  • 在/home目录下创建/data/zookeeper
mkdir -p data/zookeeper/
  • 配置zoo.cfg
cd /home/zookeeper-3.4.10/conf
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/data/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

server.1=192.168.102.129:8880:7770
server.2=192.168.102.130:8880:7770
server.3=192.168.102.131:8880:7770

修改dataDir为/home/data/zookeeper,同时添加zk服务信息为server1、server2、server3。

  • 配置日志目录
mkdir -p /home/zk/zookeeper-3.4.10/log
cd /home/zookeeper-3.4.10/bin
vi zkEnv.sh
#!/usr/bin/env bash
ZOO_LOG_DIR=/home/zookeeper-3.4.10/log

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at

添加ZOO_LOG_DIR=/home/zookeeper-3.4.10/log

  • 分发文件
cd /home
scp -r zookeeper-3.4.10 192.168.102.130:'pwd'
scp -r zookeeper-3.4.10 192.168.102.131:'pwd'
  • 配置myid
cd /home/data/zookeeper/
echo "1" > myid

其余两台服务做同样操作,分别定为

echo "2" > myid
echo "3" > myid
  • 启动zookeeper
cd /home/zookeeper-3.4.10/bin
./zkServer.sh start 或 sh zkServer.sh start

每台机器重复执行以上命令。

  • 测试
cd /home/zookeeper-3.4.10/bin
./zkServer.sh status 或 sh zkServer.sh status

每台机器执行以上命令,若为一个leader,两个follower,则集群正常。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

四、安装过程中遇到的问题

  • Error contacting service. It is probably not running

     该报错说明启动报错,zookeeper.out启动日志查看具体报错
    
  • java.net.NoRouteToHostException: 没有到主机的路由

     关闭防火墙
    
    systemctl stop firewalld.service
    
    systemctl disable firewalld.service
    
    firewall-cmd --state
    
  • Cannot open channel to 2 at election address /192.168.102.130:7770

     集群中所有zookeeper服务器zoo.cfg配置文件中dataDir路径是否正确
    

随笔

  • xshell多窗口同步操作,View中勾选Compose Bar, 选择To All Sessions,即可在下面的窗口中输入命令,该命令所有窗口同时执行。
    在这里插入图片描述
    在这里插入图片描述

  • 接入ZooKeeper客户端

    cd /home/zookeeper-3.4.10/bin
    
    ./zkCli.sh -server 192.168.102.129:2181
    

    在这里插入图片描述
    出现以上对话框即为接入成功。

  • zoo.cfg配置参数含义

    • tickTime: zookeeper中使用的基本时间单位,毫秒值,比如可以设为1000,那么基本时间单位就是1000ms,也就是1s
    • initLimit: Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在 initLimit 时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。如果该参数设置为5,就说明时间限制为5倍tickTime,即5*1000=5000ms=5s
    • syncLimit: 在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。如果该参数设置为2,说明时间限制为2倍tickTime,即2000ms
    • dataDir: 数据目录. 可以是任意目录,一般是节点安装目录下data目录
    • clientPort: 监听client连接的端口号
    • dataLogDir: log目录, 同样可以是任意目录,一般是节点安装目录下的logs目录。如果没有设置该参数,将使用和dataDir相同的设置
    • server.X=hostname:B:C 其中X是一个数字, 表示这是第几号server,它的值和myid文件中的值对应。B是配置该server和集群中的leader交换消息所使用的端口。C配置选举leader时所使用的端口
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值