美文网首页程序员
Centos 7.2 搭建zookeeper3.4.14集群

Centos 7.2 搭建zookeeper3.4.14集群

作者: vicas | 来源:发表于2019-05-31 17:23 被阅读0次

    一、环境准备

    操作系统: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)条:机器安全组设置(云服务器)

    相关文章

      网友评论

        本文标题:Centos 7.2 搭建zookeeper3.4.14集群

        本文链接:https://www.haomeiwen.com/subject/xdugtctx.html