Linux如何安装Zookeeper(单机版和集群版模式)

Java技术 潘老师 3年前 (2021-03-24) 2074 ℃ (0) 扫码查看

第1步:环境准备

1)要在Linux上安装Zookeeper,首先我们要准备好系统环境,即先安装好Vmware和CentOS7虚拟机,如果不会,可参考:

VMware12Pro虚拟机官方中文版下载安装教程,带永久许可证激活密钥

从事Java开发或者Hadoop大数据开发,免不了要和Linux系统打交道,而VMware Workstati […]

Vmware安装Centos7图文教程详解,快速搭建Linux系统

Linux操作系统在实际Java学习和Hadoop大数据开发中,用的非常广泛,而入门最方便的方式就是在Vmwa […]

2)开启2181端口(可选)
如果需要远程访问zookeeper,我们需要开启2181端口(集群版还需要开启2888,3888端口),在防火墙开启状态下,执行:

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

在重新加载防火墙:

firewall-cmd --reload

然后再关闭防火墙。
2)永久关闭防火墙,禁止防火墙启动指令:

systemctl disable firewalld.service

查看防火墙状态:

firewall-cmd --state

3)电脑主机和虚拟机相互ping一下,保正能相互通信,在此略过。

4)安装jdk。由于Zookeeper是java编写的,所以要安装好jdk,参考:

Linux系统如何安装jdk

1、去ORACLE官网下载Linux系统的JDK,这里我们使用版本为jdk-8u111-linux-x64.t […]

第2步:下载安装包

我们先到官网或镜像网站下载Zookeeper的Linux版安装包,官网地址镜像站点
这里我选择的是官网站点的apache-zookeeper-3.5.9-bin.tar.gz版本

第2步:上传解压

1)上传
我这里是使用xshell连接操作虚拟机的,使用的rz命令进行上传操作的,我在linux的/usr新建了zk目录,将安装包上传至了zk目录。
Linux如何安装Zookeeper(单机版和集群版模式)
2)解压
我们就将其解压到当前所在的zookeeper目录当然你也可以通过-C指令指定解压目录,我这里解压指令如下:

tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz

Linux如何安装Zookeeper(单机版和集群版模式)
成功后会出现如上的解压目录,进入后期目录结构如下:
Linux如何安装Zookeeper(单机版和集群版模式)

第3步:传安装

1、单机版安装

1)复制conf目录下配置文件zoo_sample.cfg重命名为zoo.cfg,指令如下:

cd conf/
cp zoo_sample.cfg  zoo.cfg

2)修改配置文件zoo.cfg内容如下:

#数据目录
dataDir=/usr/zookeeper/apache-zookeeper-3.5.9-bin/data
#日志目录
dataLogDir=/usr/zookeeper/apache-zookeeper-3.5.9-bin/logs
#客户端连接端口
clientPort=2181
#心跳间隔时间,zookeeper中使用的基本时间单位,毫秒值。每隔2秒发送一个心跳
tickTime=2000
#leader与客户端连接超时时间。表示10个心跳间隔
initLimit=10
#Leader与Follower之间的超时时间,表示5个心跳间隔
syncLimit=5

提示:有部分配置在模板中已经存在,我们修改或新增即可
4)进入到bin目录,执行如下指令启动Zookeeper:

./zkServer.sh start

Linux如何安装Zookeeper(单机版和集群版模式)
再执行查看启动状态指令,看是否成功:

./zkServer.sh status

Linux如何安装Zookeeper(单机版和集群版模式)
我们发现启动成功,且是单机模式,并且datalogs目录也自动生成了。

注:使单机模式时户需要注意:这种配置式下没有ZooKeeper 副本,所以如果ZooKeeper 服务器出现故障,ZooKeeper服务将会停。

5)配置环境变量(方便启动)
每次写指令都要进入bin下很麻烦,我们可以配置环境变量,编辑/etc/profile,添加如下代码:

export ZOOKEEPER_HOME=/usr/zookeeper/apache-zookeeper-3.5.9-bin
export PATH=$PATH:$ZOOKEEPER_HOME/bin

可以和JAVA_HOEM整合如下:

export JAVA_HOME="/usr/java/jdk1.8.0_111"
export ZOOKEEPER_HOME=/usr/zookeeper/apache-zookeeper-3.5.9-bin
export PATH=$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin:$PATH

再执行如下指令,使之生效。
source /etc/profile

2、集群版安装

集群模式有两种形式:
1)使用多台机器,在每台机器上运行一个ZooKeeper Server进程;
2)使用一台机器,在该台机器上运行多个ZooKeeper Server进程(采用多虚拟机方式)。
在生产环境中,一般使用第一种形式,在练习环境中,一般使用第二种形式。

1)我这里3个虚拟机节点,ip和对于的主机名分别为:

192.168.217.101 master
192.168.217.102 slave1
192.168.217.103 slave2

我们使用如下指令修改3台主机名:

#在192.168.217.101中执行
hostnamectl set-hostname master
#在192.168.217.102中执行
hostnamectl set-hostname slave1
#在192.168.217.103中执行
hostnamectl set-hostname slave2

然后再修改3台主机的/etc/hosts都如下:

192.168.217.101 master
192.168.217.102 slave1
192.168.217.103 slave2

2)在环境准备阶段,在防火墙开启状态下开启涉及端口(3台主机的2181、2888和3888端口),然后再关闭防火墙
3)实现3台机器免密登录(如果之前搭建过hadoop完全分布式可忽略),可参考如下文章的第6步

Hadoop完全分布式环境搭建步骤

文章目录 一.说明: 二、具体步骤 一.说明: 1、伪分布式环境是一台虚拟机,自身既是主节点又是从节点,即既是 […]

4)配置操作和单机模式的安装类似,我们现在101节点上上传解压zookeeper,只是在配置zoo.cfg时配置如下:

#数据目录
dataDir=/usr/zookeeper/apache-zookeeper-3.5.9-bin/data
#日志目录
dataLogDir=/usr/zookeeper/apache-zookeeper-3.5.9-bin/logs
#客户端连接端口
clientPort=2181
#心跳间隔时间,zookeeper中使用的基本时间单位,毫秒值。每隔2秒发送一个心跳
tickTime=2000
#leader与客户端连接超时时间。表示10个心跳间隔
initLimit=10
#Leader与Follower之间的超时时间,表示5个心跳间隔
syncLimit=5
#配置标识
server.1=192.168.217.101:2888:3888
server.2=192.168.217.102:2888:3888
server.3=192.168.217.103:2888:3888
提示:
1)server.NUM=IP:port1:port2 NUM表示本机为第几号服务器;IP为本机ip地址;指出了不同的Zookeeper 的服务器的自身的标识。
2)port1为leader与follower通信端口;port2为参与竞选leader的通信端口

3)复制master节点zookeeper文件夹和/etc/profile到其他两个节点,指令如下。

#复制profile
scp -rq /etc/profile root@slave1:/etc/
scp -rq /etc/profile root@slave2:/etc/
#slave1和slave2分别执行source使之生效
source /etc/profile
#复制zookeeper
scp -rq /usr/zookeeper root@slave1:/usr/
scp -rq /usr/zookeeper root@slave2:/usr/

4)在每个节点的dataDir(即/usr/zookeeper/apache-zookeeper-3.5.9-bin/data)目录下,新建名为myid文件。其内容与上面的配置文件中server.NUM中的NUM保持一致。即:

  • master中的myid只写1
  • slave1中的myid只写2
  • slave2中的myid只写3
#master执行
echo 1 > myid
#slave1执行
echo 2 > myid
#slave2执行
echo 3 > myid
提示:dataDir指定的目录下添加myid文件,用于存储一个数值,用来作为该ZooKeeper Server进程的标识。即上面配置中的NUM

5)启动每个节点的zookerper:

zkServer.sh start

6)启动完成后,通过如下指令查看状态:

zkServer.sh status

当出现一个Leader和两个Follower时,则代表启动成功。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/2727.html
喜欢 (4)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】