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

更新时间:2024-04-25 18:52:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本文环境如下:

操作系统:CentOS 6 32位 ZooKeeper版本:3.4.8

0. 环境需求

Zookeeper需要JDK1.6以上版本的Java环境 可以参考:

CentOS 6使用rpm方式安装JDK8

1. 下载软件包

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

wget \r-3.4.8.tar.gz\

tar -xzvf zookeeper-3.4.8.tar.gz mv zookeeper-3.4.8 /opt

? ? ? ? ? ? 1 2 3 1 2 3 2. 单机模式 2.1 修改配置文件 cd /opt/zookeeper-3.4.8/conf/ cp zoo_sample.cfg zoo.cfg vi zoo.cfg

? ? ? ? ? ? 1 2 3 1 2 3 Zookeeper提供了一份默认的配置文件,复制为zoo.cfg打开后,我们需要修改数据存放的路径: dataDir=/opt/zookeeper-3.4.8/data

? ? 1 1 2.2 运行Zookeeper

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

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

? ? 1 1 在末尾添加: ZOOKEEPER_HOME=/opt/zookeeper-3.4.8 PATH=$PATH:$ZOOKEEPER_HOME/bin

? ? ? ? 1 2 1 2 更新配置: source /etc/profile

? ?

1 1

3. 集群模式

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

3.1 修改配置文件

cd /opt/zookeeper-3.4.8/conf/ vi zoo.cfg

? ? ? ? 1 2 1 2 打开后,修改为:

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 拷贝文件夹

scp -r /opt/zookeeper-3.4.8 root@slave1:/opt/ scp -r /opt/zookeeper-3.4.8 root@slave2:/opt/

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

3.3 启动服务

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

4. 异常分析

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

4.1 无法连接

2016-04-1305: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.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)

at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)

at java.net.Socket.connect(Socket.java:589)

at org.apache.zookeeper.server.quorum.QuorumCnxManager.connectOne(QuorumCnxManager.java:381)

at org.apache.zookeeper.server.quorum.QuorumCnxManager.toSend(QuorumCnxManager.java:354)

at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.process(FastLeaderElection.java:452)

at org.apache.zookeeper.server.quorum.FastLeaderElection$Messenger$WorkerSender.run(FastLeaderElection.java:433)

at java.lang.Thread.run(Thread.java:745)

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

原文来自:申博官网http://www.l-ch.net 宅男福利:http://www.zhainan.hk

本文来源:https://www.bwwdw.com/article/r96p.html

Top