Zookeeper 3.4.9 全分布模式解析(附:安装以及配置教程)

本文详细介绍如何在Ubuntu 16.04上安装和配置ZooKeeper集群,包括环境搭建、配置文件编辑及常见问题解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在我的上一篇博客中讲了如何玩Hadoop,今天我们就来装zookeeper咯!

首先,如果要玩这个就必须先在机器上装好JDK,要求是java6以上的。

附:ZooKeeper下载地址


安装以及配置:

本机配置:

Ubuntu  16.04 64bit  一共有三台

java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

下载好gz安装包之后需要解压到电脑中

sudo tar -zxvf zookeeper-3.4.9.tar.gz  /usr/local/

其中/user/local就是我们的安装目录,解压完成之后需要对它进行改名字:

/usr/local$ mv zookeeper-3.4.9 zookeeper

改完名字之后需要进入配置文件修改环境变量:

/usr/local$ sudo vim /etc/profile

在打开的文件末尾添加:

export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH 

配置conf

conf中的zoo.cfg是最重要的一步,但是在安装文件中没有这个,我们需要自己创建它!
在Zookeeper下的conf文件夹中执行以下命令:

 sudo mv zoo_sample.cfg zoo.cfg

打开它:

 sudo vim zoo.cfg

打开文件时你会发现它以及有内容了,我们只需要修改我们需要的内容:
修改缓存文件的地址,我把它放在安装文件夹中,这个data需要我们自己创建:

dataDir=/usr/local/zookeeper/data

末尾添加节点的IP和端口信息:

 server.1=Master:2888:3888
 server.2=Slaver1:2888:3888
 server.3=Slaver2:2888:3888

server的意思是服务机, 这里一共有三台。后面对应的是机器名(写在/etc/hosts当中了)和端口的名字。

接着在刚刚的/usr/local/zookeeper/data文件夹下,创建对应的myid文件:


 vim myid 

这个文件会记录自己的机器ID,对应的就是刚刚的server后面的数字标示 (ID只需要键入数字)

我这边一共有三台,就分别填 1、2、3。


写完之后就基本完成了配置工作
开始运行:

zkServer.sh start

收到回复:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

记住,要在其他的机子上也运行。

接着Zookeeper为我们准备了很多命令来查看节点的运行状态:

zkServer.sh status

得到反馈:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

当然有的是Leader,没什么区别。


有时候会遇到坑:

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

节点没有启动成功,查看zookeeper.out发现:

...
2017-07-14 01:23:38,578 [myid:3] - WARN  [WorkerSender[myid=3]:QuorumCnxManager@400] - Cannot open channel to 2 at election address /192.168.244.128:3888
java.net.ConnectException: Connection refused (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)
...

拒绝访问,连接失败!

查看情况之后发现是conf当中的zoo.cfg 中节点Ip必须要用地址代替:

server.1=0.0.0.0:2888:3888
server.2=192.168.10.10:2888:3888
server.3=192.168.2.1:2888:3888


Step 1:

Node 1:
zoo.cfg
server.1= 0.0.0.0:<port>:<port2>
server.2= <IP>:<port>:<port2>
server.n= <IP>:<port>:<port2>

Node 2 :
server.1= <IP>:<port>:<port2>
server.2= 0.0.0.0:<port>:<port2>
server.n= <IP>:<port>:<port2>

这个情况困扰了我很久,最后实在Stack Overflow上面看到的,老外早就遇到过这个问题。

有什么问题问吧,看到会回复,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值