CentOS7安装zookeeper

根据搜集的资料安装测试并整理的文档,如有不足希望不吝赐教。


目录

1、下载及解压

2、配置(&拷贝)

3、启动测试

4、异常及解决


此处以简单集群为例,单机模式测试请自行搜索。

下文安装以三台机器为例,内网地址为172.17.3.205-207。

安装集群时每台服务器配置基本一样,因此可以在每台机器上单独配置,也可以只在一台机器上安装好之后,使用scp命令,将文件夹拷贝到其他服务器,修改差异部分即可。

 

1、下载及解压

zookeeper安装需要jdk环境,jdk安装请自行搜索或者参考:CentOS7安装JDK

下载地址:http://mirror.bit.edu.cn/apache/zookeeper/

选择需要的版本进行下载,可以下载之后上传至主机也可以直接使用curl命令等,curl举例如下:

curl -O http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz

其中-O参数表示使用链接中的文件名作为下载之后的文件名,也可以使用curl -o filename url命令指定本地保存时的文件名。

下载完成后解压下载的文件到指定的目录,此处解压的位置为/usr/local目录。

tar zxf zookeeper-3.4.12.tar.gz -C /usr/local

解压完修改目录名(非必须):

mv zookeeper-3.4.12 zookeeper

目录结构如下:

  • bin目录——zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
  • conf目录——配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
  • lib目录——zk依赖的包。
  • contrib目录——一些用于操作zk的工具包。
  • recipes目录——zk某些用法的代码示例

 

2、配置(&拷贝)

【注意】在集群模式下,建议至少部署3个zk进程,或者部署奇数个zk进程。如果只部署2个zk进程,当其中一个zk进程挂掉后,剩下的一个进程并不能构成一个quorum的大多数。因此,部署2个进程甚至比单机模式更不可靠,因为2个进程其中一个不可用的可能性比一个进程不可用的可能性还大。

 

在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面),首先复制一个zoo_sample.cfg文件为zoo.cfg:

cp zoo_sample.cfg zoo.cfg

修改zookeeper/conf/zoo.cfg(vim conf/zoo.cfg)文件配置(截图为测试时候截图)如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/tmp/zookeeper

clientPort=2181

server.1=172.17.3.205:2888:3888

server.2=172.17.3.206:2888:3888

server.3=172.17.3.207:2888:3888

  • initLimit:ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。
  • syncLimit:配置follower和leader之间发送消息,请求和应答的最大时间长度。
  • tickTime:tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。
  • server.id=host:port1:port2:其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。
  • dataDir:其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。

配置完成后,如果是在一台机器配置需要使用scp命令将目录拷贝到其他机器,如果分别配置则可以跳过本步。以从172.17.3.205拷贝到172.17.3.206为例,在172.17.3.205上执行scp命令如下(其余参考即可):

scp -r /usr/local/zookeeper root@172.17.3.206:/usr/local/

在三台机器dataDir目录(此处为/tmp/zookeeper,可自行修改)下,分别创建一个myid文件,文件内容分别只有一行,其内容为1,2,3,4。即文件中只有一个数字,这个数字即为上面zoo.cfg配置文件中指定的值。zookeeper是根据该文件来决定zookeeper集群各个机器的身份分配。

 

3、启动测试

上面的例子中,在172.17.3.205-172.17.3.208上各部署一个zk进程,以构成一个zk集群,修改完成后,在每台机器上使用(以下命令均在目录/usr/local/zookeeper中使用,具体根据自己实际解压位置确定):

bin/zkServer.sh start

命令来启动zookeeper服务,待启动完成后可以使用:

bin/zkServer.sh status

命令来查看该机身份。截图如下:

完成后使用以下命令来链接一个集群:

bin/zkCli.sh -server 172.17.3.205:2181,172.17.3.206:2181,172.17.3.207:2181, 172.17.3.208:2181

成功链接后可以在最后看到类似如下输出:

从日志输出可以看到,客户端连接的是172.17.3.205:2181进程(连接上哪台机器的zk进程是随机的),客户端已成功连接上zk集群。

 

4、异常及解决

异常情况:配置文件修改完成并成功启动,jps也有线程显示,但是使用命令:bin/zkServer.sh status时异常,异常信息为:Error contacting service. It is probably not running.

解决方案:

首先查看系统防火墙是否关闭:

查看防火墙状态:firewall-cmd --state并关闭防火墙。

关闭防火墙:systemctl stop firewalld.service

禁止开机自启:systemctl disable firewalld.service

然后重启zookeeper查看是否成功。根据以往经验,此处为测试机器,实际设置开放zookeeper所需端口也可以解决问题,但本次未测试。

 

如果不是防火墙的原因,则应查看zookeeper(原始目录为zookeeper-3.4.12,此处为方便修改为zookeeper)文件目录中conf目录下是否有zoo_sample.cfg和zoo.cfg(原始只有前者,后者为配置时拷贝的文件)以及对应的位置是都都正确修改。并且查看dataDir参数指定目录(此处为/tmp/zookeeper/)中是否已经创建了myid文件且内容正确。

 

最后,如果问题依然存在,则需要查看zookeeper.out文件(此处为/usr/local/zookeeper目录下,具体以zookeeper实际解压或配置位置为准),以进行错误排查,方便对症下药。


END

  • 17
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值