Zookeeper 集群搭建(完整版及注意事项)

1、准备三台机器或虚拟机,系统是CentOS7 64位,jdk是1.8。

修改vi /etc/hostname ,分别改为node1,node2,node3。方便主机名区分

2、修改hosts文件,vi /etc/hosts,添加ip及主机名映射关系,便于用主机名访问ip,

改为如下内容(根据自己三台机器的主机ip来修改对应的ip):

::1         localhost node1 localhost6 localhost6.localdomain6
192.168.72.128 node1
192.168.72.129 node2
192.168.72.130 node3

PS:hosts文件中需要注意一点,就是如果有127.0.0.1的映射关系,需要删除或者改为0.0.0.0,否则会出现一些端口无法被其他机器访问。

3、下载zookeeper(官网地址Apache ZooKeeper,  本文使用的是3.7.0版本)

在node1上,执行 wget https://dlcdn.apache.org/zookeeper/zookeeper-3.7.0/apache-zookeeper-3.7.0-bin.tar.gz --no-check-certificate

PS:需要添加--no-check-certificate才能下载,否则需要验证

4、 解压文件

执行解压命令,tar xf apache-zookeeper-3.7.0-bin.tar.gz

解压完之后将解压后的文件夹移动到/opt/zk目录下,命令如下:

mkdir -p /opt/zk

mv apache-zookeeper-3.7.0-bin /opt/zk

5、配置环境变量

vi /etc/profile

在文件最后添加

export ZOOKEEPER_HOME=/opt/zk/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin

保存之后,执行 source /etc/profile 使之生效。

6、修改zk配置文件

进到配置目录,将模板配置复制出一份zoo.cfg文件,并做修改。命令如下:

cd /opt/zk/apache-zookeeper-3.7.0-bin/conf

cp zoo_sample.cfg zoo.cfg

vi zoo.cfg

需要改两个内容:

1)修改dataDir(注意:后面myid文件也需要建到这个目录下)

dataDir=/var/kevin/zk
2)添加如下内容:

server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

改完之后保存文件。

7、添加myid文件

命令如下:

mkdir -p /var/kevin/zk

echo 1 > /var/kevin/zk/myid

node1执行以上命令, node2将echo 1改为echo 2, node3将echo 1改为echo 3。

8、启动zookeeper集群,从node1到node3依次启动即可,命令如下:

zkServer.sh start-foreground

启动完之后,新开窗口使用zkServer.sh status可以查看启动状态。如果出现Mode: follower或者Mode: leader就说明启动成功了。

PS:过程中可能遇到的问题

启动之后报如下错误:

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:607)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager.initiateConnection(QuorumCnxManager.java:384)
    at org.apache.zookeeper.server.quorum.QuorumCnxManager$QuorumConnectionReqThread.run(QuorumCnxManager.java:458)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
 

解决办法:

1、关闭防火墙

centos7默认防火墙是firewalld

使用命令:systemctl stop firewalld.service  关闭防火墙

使用命令:systemctl disable firewalld.service 开机禁用防火墙

2、检查端口权限

这个时候可以使用命令: netstat -nalp|grep java

查看下各个机器的3888端口有没有启动,以及实在哪个ip下启动,如果是127.0.0.1:3888,那么其他机器就无法访问本机的3888端口。需要修改hosts文件,将hosts文件中127.0.0.1改为0.0.0.0或者删除127.0.0.1的配置(文中第二步已经讲到,本人搭建的时候也是遇到了这个问题报的错)。改完之后,重新启动集群即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值