CentOS下ZooKeeper单机模式、集群模式安装

本文环境如下:
操作系统:CentOS 6 32位
ZooKeeper版本:3.4.8

0. 环境需求

Zookeeper需要JDK1.6以上版本的Java环境
可以参考:
CentOS 6使用rpm方式安装JDK8

1. 下载软件包

到ZooKeeper官网上http://zookeeper.apache.org/下载软件包,例如:

 
 
  • 1
  • 2
  • 3
wget "http://apache.opencas.org/zookeeper/stable/zookeeper-3.4.8.tar.gz" tar -xzvf zookeeper-3.4.8.tar.gz mv zookeeper-.8 /opt

2. 单机模式

2.1 修改配置文件

3
 
 cd /opt/zookeeper-.8/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

Zookeeper提供了一份认的配置文件,复制为zoo.cfg打开后,我们需要修改数据存放的路径:

1
 
 dataDir=/opt/zookeeper-.8/data

2.2 运行Zookeeper

2
 
 cd /opt/zookeeper-3.4.8/bin/
./zkServer.sh start

如果运行无报错,说明Zookeeper启动成功了。
为了以后操作方便,我们可以将Zookeeper/bin添加到path

1
 
 vi /etc/profile

在末尾添加

2
 
 ZOOKEEPER_HOME=/opt/zookeeper-8
PATH=$PATH:$ZOOKEEPER_HOME/bin

更新配置:

1
 
 source /etc/profile

3. 集群模式

单机模式非常方便,适合开发、测试场景,但是在生产环境中,应该运行一个集群模式。集群模式至少应该有3个节点,并且强烈建议是奇数个节点,每个节点应该有相同的配置文件

3.1 修改配置文件

8/conf/
vi zoo.cfg

打开后,修改为:

3
  
  
  • 4
  • 5
  • 6
  • 7
  • 8
  • tickTime=2000 dataDir=/opt/zookeeper-3.4.8/data clientPort=2181 initLimit=5 synclimit=2 server.1=master:2888:3888 server.2=slave1:2888:3888 server.3=slave2:2888:3888

    server后面跟的数字就是该节点的标号,我们需要将这个编号写入名为myid文件。该文件应该存放在前面配置的dataDir指向的目录下。
    例如上面的slave1节点,对应的data/myid文件中应该写入2

    3.2 拷贝文件

    2
     
     scp -r /opt/zookeeper-8 root@slave1:/opt/
    scp -r /opt/zookeeper-@slave2:/opt/

    拷贝完成后,记得修改对应服务器的myid文件

    3.3 启动服务

    需要到每个节点上启动Zookeeper服务,每个节点启动后可以用zkServer.sh status查看当前节点的启动状态以及是leader节点还是follower节点。

    4. 异常分析

    运行日志文件认在程序目录下的zookeeper.out

    4.1 无法连接

    8
      
      
  • 9
  • 10
  • 11
  • 12
  • 13
  • 2016-04-13 05:18:21,531 [myid:1] - WARN [WorkerSender[myid=1]:QuorumCnxManager@400] - Cannot open channel to 2 at election address slave1/5.2.8.5:3888 java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(Native Method) at java.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at java.connectToAddress(AbstractPlainSocketImpl206) at java.connect(AbstractPlainSocketImpl188) at java.socksSocketImpl.connect(SocksSocketImpl392) at java.socket.connect(Socket589) at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager381) at org.toSend(QuorumCnxManager354) at org.FastleaderElection$Messenger$WorkerSender.process(FastleaderElection452) at org.run(FastleaderElection433) at java.lang.Thread.run(Thread745)

    出现这个异常,可能是zookeeper节点的防火墙是开启状态并且没有打开相应端口(2888,3888);也可能是有节点未启动或者挂掉了。

    相关文章

    Centos下搭建性能监控Spotlight
    CentOS 6.3下Strongswan搭建IPSec VPN
    在CentOS6.5上安装Skype与QQ
    阿里云基于centos6.5主机VPN配置
    CentOS 6.3下配置multipah
    CentOS安装、配置APR和tomcat-native