程序员

Centos 7.2 搭建zookeeper3.4.14集群

2019-05-31  本文已影响0人  vicas

一、环境准备

操作系统:CentOS Linux release 7.2.1511 (Core)

JDK版本:1.8.0_121(open jdk 也可)

三台服务器:106.12.204.214、39.106.87.20、152.136.159.168

二、下载zookeeper

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

选择适配系统环境的版本

三、安装

1、上传+解压

#此处我上传到opt目录下(可自行选择安装目录)

[root@localhost /]# cd /opt/

[root@localhost zookeeper3.4.14]# tar zxvf zookeeper-3.4.14.tar.gz

2、配置zookeeper

(1)创建数据目录

下面zoo.cfg配置文件的dataDir将会使用这个目录

[root@localhost zookeeper]# cd /opt/zookeeper3.4.14/

[root@localhost zookeeper]# mkdir data

(2)修改配置文件

[root@localhost zookeeper]# cd conf

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

[root@localhost conf]# vi zoo.cfg

先把dataDir=/tmp/zookeeper注释,然后将下面四行代码添加到文件末尾

dataDir=/usr/local/zookeeper/data

#以下配置的sever.n和后续的myid必须一致,本机ip配置0.0.0.0

server.3=0.0.0.0:2888:3888

server.2=39.106.87.20:2888:3888

server.1=152.136.159.168:2888:3888

如图:

(3)创建myid文件

[root@localhost conf]# cd ../data

#另外两台依次修改为2和3

[root@localhost data]# echo "1" > myid

3、开启zookeeper端口

开启2888、3888、2181端口(或者直接关闭防火墙也可)

firewall-cmd --zone=public --add-port=2888/tcp --permanent

firewall-cmd --zone=public --add-port=3888/tcp --permanent

firewall-cmd --zone=public --add-port=2181/tcp --permanent

重启防火墙

firewall-cmd --reload

4、配置环境变量

vi /etc/profile

添加以下信息

export ZOOKEEPER_INSTALL=/opt/zookeeper-3.4.14

export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

备注:三台机器依次操作2、3、4步骤(可以配置完其中一台,然后scp,再进行相应修改)

5、启动zookeeper

(1)启动(每台机器都要启动)

[root@localhost bin]# zkServer.sh start

如果输出以下内容,表示启动成功

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

(2)查看状态

[root@localhost data]# zkServer.sh status

192.168.1.91:

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Mode: follower

192.168.1.92:

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Mode: leader

192.168.1.93:

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper/bin/../conf/zoo.cfg

Mode: follower

由此我们看出192.168.1.92这台机器被自动选举为leader了

四、验证

在Zookeeper安装的任何一个节点执行客户端连接命令:

zkCli.sh -server 192.168.1.1:2181

能够连接表示成功

常见问题:

1、zookeeper启动后,查看状态显示

[root@iZ2ze06fzsvx84ds11gda1Z zookeeper-3.4.14]# zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

这种情况一般表示zookeeper集群启动失败,请根据日志进行排查(仔细分析日志),一般由以下原因造成:

(1)防火墙未正常配置或者没有关闭

(2)端口占用(netstat -apn | grep 2181、2888、3888)

(3)myid没有配置或者与server.id不一致

(4)网络问题,通过机器之间互ping ip排查

(5)本机的server.id的配置行的ip没有配置为0.0.0.0

说明:

网上还有其他说法,比如配置/etc/hosts 文件,配置集群机器ip,删除/etc/hosts中的127.0.0.1的配置,本人亲测,不影响zookeeper集群启动。

本人遇到“It is probably not running.”,通过上面(1)至(5)各自场景排查,均没有解决问题,然后仔细分析日志zookeeper.out的内容:

2019-05-31 15:20:51,075 [myid:1] - WARN  [QuorumPeer[myid=1]/0.0.0.0:2181:Learner@237] - Unexpected exception, tries=1, connecting to /39.106.87.20:2888

java.net.SocketTimeoutException: connect timed out

发现另外两台机器都报connecting to /39.106.87.20:2888超时的问题,因此怀疑机器39.106.87.20限制了外来访问(但我已经排查了防火墙和网络问题),由于该机器是阿里云的ECS,我联想到当初自建MySQL无法远程登陆的问题,才想起来阿里云ECS默认安全组是只开放了ssh 22等基本访问端口,因此新增了安全组,集群正常启动,因此加上第(6)条:机器安全组设置(云服务器)

上一篇下一篇

猜你喜欢

热点阅读