第1步:环境准备
1)要在Linux上安装Zookeeper,首先我们要准备好系统环境,即先安装好Vmware和CentOS7虚拟机,如果不会,可参考:
从事Java开发或者Hadoop大数据开发,免不了要和Linux系统打交道,而VMware Workstati […]
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,参考:
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目录。
2)解压
我们就将其解压到当前所在的zookeeper
目录当然你也可以通过-C
指令指定解压目录,我这里解压指令如下:
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz
第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
./zkServer.sh status
我们发现启动成功,且是单机模式,并且data
和logs
目录也自动生成了。
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步:
文章目录展开 一.说明: 二、具体步骤 一.说明: 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
5)启动每个节点的zookerper:
zkServer.sh start
6)启动完成后,通过如下指令查看状态:
zkServer.sh status
当出现一个Leader
和两个Follower
时,则代表启动成功。