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

IT 文章5年前 (2021)发布 小编
0 0 0

第1步:环境准备

1)要在Linux上安装Zookeeper,首先我们要准备好系统环境,即先安装好Vmware和CentOS7虚拟机,如果不会,可参考:
[neilian ids=233][neilian ids=254]
2)开启2181端口(可选)
如果需要远程访问zookeeper,我们需要开启2181端口(集群版还需要开启2888,3888端口),在防火墙开启状态下,执行:

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

在重新加载防火墙:

firewall-cmd --reload

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

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

systemctl disable firewalld.service

查看防火墙状态:

firewall-cmd --state

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

4)安装jdk。由于Zookeeper是java编写的,所以要安装好jdk,参考:[neilian ids=2728]

第2步:下载安装包

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

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

第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(单机版和集群版模式)
再执行查看启动状态指令,看是否成功:

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

./zkServer.sh status

Linux如何安装Zookeeper(单机版和集群版模式)
我们发现启动成功,且是单机模式,并且datalogs目录也自动生成了。
[v_blue]注:使单机模式时户需要注意:这种配置式下没有ZooKeeper 副本,所以如果ZooKeeper 服务器出现故障,ZooKeeper服务将会停。[/v_blue]
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步:[neilian ids=1961]
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

[v_blue]提示:
1)server.NUM=IP:port1:port2 NUM表示本机为第几号服务器;IP为本机ip地址;指出了不同的Zookeeper 的服务器的自身的标识。
2)port1为leader与follower通信端口;port2为参与竞选leader的通信端口[/v_blue]
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保持一致。即:
[list]master中的myid只写1
slave1中的myid只写2
slave2中的myid只写3[/list]

#master执行
echo 1 > myid
#slave1执行
echo 2 > myid
#slave2执行
echo 3 > myid

[v_blue]提示:dataDir指定的目录下添加myid文件,用于存储一个数值,用来作为该ZooKeeper Server进程的标识。即上面配置中的NUM[/v_blue]
5)启动每个节点的zookerper:

zkServer.sh start

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

zkServer.sh status

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

© 版权声明

相关文章

暂无评论

暂无评论...