1.前言
在具体讲述安装步骤前,先介绍一下基本版本、环境配置信息。
- Linux内核版本:3.10.0-327.el7.x86_64
- Linux发行版本:CentOS7
- Zookeeper版本:3.5.6
- Jdk版本:1.8
2.具体的安装步骤
(1)安装jdk
我们经常在一些大数据组件的安装中看到要有java环境,这是因为很多大数据组件如hadoop、zookeeper、hbase等的底层都是用java编写的,需要运行在jdk上。
这部分就不重复赘述了,具体可参照我的这篇博文:文章链接(点击)
(2)下载zookeeper合适的版本
尽量去zookeeper的官网上下载(安全起见),这里附上下载地址:下载链接
本文中所选用的zookeeper版本是3.5.6,大家可以按需下载。
进入下载界面后看到有两个下载选择,不仅仅是zookeeper,在很多开源软件的下载中都会出现这样的情况。这里我们选择带有“bin”的软件包。
补充:
软件包分为源码版本和二进制版本。
源码版本(有时后缀带source)就是代码原片段,是需要进行编译的,一般我们不要下载这种版本,一方面是因为编译的时间较长,另一方面是对于编译语言不太熟悉的人来说,很难应对编译过程中出现的问题。这种源码版本主要受众是那些需要改进源代码的人,有时候不同的业务需求需要我们对源代码进行一定的修改。
二进制版本(binary)是我们一般选择下载的版本,这种版本都是编译好了的软件包,可以即下即用,比较适合我们普通的需要。
(3)上传与解压
将下载好的zookeeper软件上传到Linux的指定文件目录下(这个目录可以自定义),我是上传到/home/software下进行安装的。
**关于安装目录,详情请参考这一篇文章:Linux的软件安装目录(小说明)
上传命令rz:
解压命令
tar -xvf apache-zookeeper-3.5.6-bin.tar
(由于我已经安装好了,这里就不展示解压图示了)
【可选】解压后可以给解压后的文件改个名字
mv [zookeeper-3.5.6-bin] zookeeper
- []里面的按照实际解压出来的文件修改
(4)修改配置文件
进入zookeeper安装文件下的配置目录
cd zookeeper/conf
复制一份zookeeper的配置模板文件,并改名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
进入编辑模式,修改配置 vim zoo.cfg
这里面主要是要修改两处配置:
第一处:数据存储目录,这里主要存储快件文件
dataDir=/home/software/zookeeper/tmp
可以任意选择,但是这个目录必须要提前创建好,zookeeper是不会帮你创建的(我提前创建好了)
第二种:添加如下配置
有几台服务器就加几个服务,我是三台服务器
server.1=45.64.75.61:2888:3888
server.2=103.56.114.152:2888:3888
server.3=103.96.72.5:2888:3888
特别注意:每一行末尾不要有空格,要不然启动会报错。也就是说3888后面直接换行输入,不要键入空格。
说明:server.x=ip@p1:p2
x代表服务器编号,我有三台服务器,依次编号1-3
IP:广播端口:选举端口
IP即为你自己的服务器IP地址,依次填上就可以。
广播端口:该台server与leader节点的通信端口
选举端口:是在zookeeper节点选举过程中的通信端口
clientPort2181是客户端端口,一般默认2181不需要配置。
至此zoo.cfg配置文件就已经配置结束了。
附:对zoo.cfg配置文件中的一些配置信息进行说明
tickTime是zookeeper中的时间单元(之后所有关于时间的规定计算都是以这个为基准),单位是毫秒,默认值为2000。同时这也是zookeeper中心跳机制的响应时间间隔,每隔一个tickTime时间,服务器之间或客户端与服务器之间会发送一次心跳;
在心跳机制中规定,一个会话session的最小心跳超时时间为2*tickTime(两倍心跳时间)。initLimit有两个含义:
- 一是用于Leader与Follower的初始通信时限,zookeeper中follower服务器初始连接到leader服务器时,所能容忍的最大连接时间。默认是10,也就是10*tickTime=20s;
- 二是用于节点崩溃恢复后,投票选举新leader的初始化时间;
- 三是用于follower重启后从leader中同步恢复最新数据,以确保自己的多外服务状态,这个就是限制最大恢复时间
(4)创建myid文件
进入数据dataDir数据存储目录,在里面创建一个文件myid。cd /home/software/zookeeper/tmp
touch myid
在myid中输入当前server的编号,下图就是在第一台服务器上,所以myid中输入1。
(5)拷贝与修改
–拷贝
将已经配置好的这台服务器上的zookeeper文件发送到其他服务器上去,这里我们用scp命令。格式为:scp -r [文件目录名] 目的服务器IP:目的目录
以第二台服务器示例:
首先我们进入到zookeeper所在父目录 cd /home/software
scp -r zookeeper 103.56.114.162:/home/software
第三台服务器一样,换一下IP就可以了。
–修改
修改拷贝过来的zookeeper中myid值,将数字换做当前服务器的编号。
(6)配置zookeeper的全局环境变量(可选)
这一步是可以省略的,之所以配置zookeeper的环境变量是为了能够在任一目录下都可以执行zookeeper集群的操作指令,而不需要到zookeeper的bin目录下去启动。
因为三台服务器都要启动,所以我们采取批量操作:
点击xshell中的“查看”菜单,选择“撰写”,再选择“撰写栏”
之后再左下角会出现一个小蓝白框,单击,选择“全部会话”即可,在白框里面输入指令即可。
输入vim /etc/profile
,进入配置文件中,之后在每台机器上
进行zookeeper的信息配置:
export ZK_HOME=/home/software/zookeeper
export PATH=$PATH:$ZK_HOME/bin
保存退出即可完成环境变量的配置工作。
(7)启动
在zookeeper集群中,单独启动一台机器是不会对外提供服务的,必须满足服务过半性原则。在这里我们要分别无各个服务器节点,执行启动zookeeper的启动命令:sh zkServer.sh start
三台机器都执行完启动命令后,一般会出现这个started。但这个并不能作为zookeeper集群启动成功判断依据。
那么如何来判断zookeeper集群已经启动成功了呢?有两种方法:
第一种:键入jps
当三台服务器,都出现QuorumPeerMain时,就代表着集群已经启动成功了。
PS:这一种方法有时并不准确,即使出现了QuorumPeerMain,也有可能集群启动失败,建议选用第二种方法或者两个结合在一起来看。
第二种:键入sh zkServer.sh status
必须启动完集群内所有机器之后,再里输入这个命令!
如果集群启动失败,那么一般会出现如下提示信息:
这时候我们可以去查看集群的启动日志,对症下药,解决问题。关于查看启动日志,对集群可能出现的问题进行自检,我之后会写一篇博客,敬请期待。
如果集群启动成功,那么会出现如下信息,Node会标明这台服务器在集群中扮演的角色,一般有三种角色,follower、observer、leader。其中follower、leader是通过选举算法选举出来的,observer是需要自己进行设置。
以上就是zookeeper集群的全部安装过程。