Red Hat Linux 6.5 安装Zookeeper集群

一,安装环境:

操作系统:Red Hat Linux 6.5

JDK版本:1.8.0_151 //需先安装JDK

Zookeeper版本:3.4.12

设置每个节点的hosts文件。

# vi /etc/hosts
//添加以下内容
10.11.111.42  mrzwk-5
10.11.111.43  mrzwk-6
10.11.111.45  mrzwk-8

重启生效。(reboot)

二、安装zookeeper集群

# cd /home/weihu
# mkdir kafka
//解压
# tar -zxvf zookeeper-3.4.12.tar.gz -C kafka     
#cd kafka
//创建链接
# ln -s zookeeper-3.4.12 zookeeper       
# cd zookeeper
//创建日志目录
# mkdir -pv logs
//创建数据目录
# mkdir -pv data

配置zookeeper环境变量

# vi /etc/profile
export PATH=/home/weihu/kafka/zookeeper/bin:$PATH

保存退出
//初始化
# source /etc/profile

配置zookeeper集群:

集群节点数量要为奇数,且至少有3个节点,因为ZooKeeper集群是以宕机个数过半才会让整个集群宕机的。搭建ZooKeeper集群时,一定要先停止所有已经启动的节点。

修改配置文件:

# cd /home/weihu/kafka/zookeeper/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/weihu/kafka/zookeeper/data
dataLogDir=/home/weihu/kafka/zookeeper/logs
# the port at which the clients will connect
clientPort=2181
server.1=10.11.111.42:2888:3888
server.2=10.11.111.43:2888:3888
server.3=10.11.111.45:2888:3888

# the maximum number of client connections.
# increase this if you need to handle more clients
maxClientCnxns=60

创建myid文件:

在mrzwk-5上执行:# echo 1 > /home/weihu/kafka/zookeeper/data/myid
在mrzwk-6上执行:# echo 2 > /home/weihu/kafka/zookeeper/data/myid
在mrzwk-8上执行:# echo 3 > /home/weihu/kafka/zookeeper/data/myid

备注:myid文件中只有一行内容,且内容为该节点对应的server.id中的id编号

启动zookeeper集群:

# cd /home/weihu/kafka/zookeeper/bin
# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/weihu/kafka/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

查看zookeeper进程:

# jps  //显示当前所有Java进程的PID
6470 Jps
6316 QuorumPeerMain
查看zookeeper集群状态:
# zkServer.sh status

上述步骤分别在三台服务器上执行,

在mrzwk-5上:
# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/weihu/kafka/zookeeper/bin/../conf/zoo.cfg
Mode: follower

在mrzwk-6上:


# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/weihu/kafka/zookeeper/bin/../conf/zoo.cfg
Mode: follower

在mrzwk-8上:

# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/weihu/kafka/zookeeper/bin/../conf/zoo.cfg
Mode: leader

备注:正常情况下应该是1个leader节点,2个follower节点

若zkServer.sh status命令执行显示-bash: zkServer.sh: command not found

命令改为./zkServer.sh status可正常执行

连接zookeeper集群:

# zkCli.sh -server mrzwk-5:2181,mrzwk-6:2181,mrzwk-8:2181

成功连接后,可以看到如下输出:

Welcome to ZooKeeper!
2018-05-04 10:39:27,990 [myid:] - INFO  [main-SendThread(mrzwk-5:2181):ClientCnxn$SendThread@1028] - Opening socket connection to server mrzwk-5/10.11.111.42:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2018-05-04 10:39:28,071 [myid:] - INFO  [main-SendThread(mrzwk-5:2181):ClientCnxn$SendThread@878] - Socket connection established to mrzwk-5/10.11.111.42:2181, initiating session
[zk: mrzwk-5:2181,mrzwk-6:2181,mrzwk-8:2181(CONNECTING) 0] 2018-05-04 10:39:28,116 [myid:] - INFO  [main-SendThread(mrzwk-5:2181):ClientCnxn$SendThread@1302] - Session establishment complete on server mrzwk-5/10.11.111.42:2181, sessionid = 0x30000a829550000, negotiated timeout = 30000
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
[zk: mrzwk-5:2181,mrzwk-6:2181,mrzwk-8:2181(CONNECTED) 0]

三,可能遇到的报错

1,报错:Zookeeper启动成功,zkServer.sh status 报错
# zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/weihu/kafka/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
# zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/weihu/kafka/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
原因:
  1. zoo.cfg文件配置出错:dataLogDir指定的目录未被创建
  2. myid文件中的整数格式不对,或者与zoo.cfg中的server整数不对应
  3. 防火墙相关端口是否开启(2181,2888,3888)
  4. ZooKeeper集群IP不能正确映射
    单机模式正常,且单机模式下能互相访问,切换至分布式Zookeeper启动成功,zkServer.sh status 报错。
    zookeeper.out日志输出如下:
    [myid:1] - ERROR [centos_1/220.250.64.225:3888:QuorumCnxManager$Listener@562] - As I 'm leaving the listener thread, I won' t be able to participate in leader election any longer: centos_1/220.250.64.225:38882016-11-03 19:33:43,795 [myid:1] - WARN  [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 2 at election address centos_2/220.250.64.225:3888java.net.SocketTimeoutException: connect timed out
         at java.net.PlainSocketImpl.socketConnect(Native Method)

    解决:更改配置文件zoo.cfg
    在mrzwk-5上:
  5. server.1=0.0.0.0:2888:3888
    server.2=10.11.111.43:2888:3888
    server.3=10.11.111.45:2888:3888
    在mrzwk-6上:
    server.1=10.11.111.42:2888:3888
    server.2=0.0.0.0:2888:3888
    server.3=10.11.111.45:2888:3888
    在mrzwk-8上:
    server.1=10.11.111.42:2888:3888
    server.2=10.11.111.43:2888:3888
    server.3=0.0.0.0:2888:3888

保存配置文件,并重启服务。

你可能感兴趣的:(Red Hat Linux 6.5 安装Zookeeper集群)