Zookeeper的安装和配置(单机版和集群)

这里我以zookeeper3.4.10.tar.gz来演示安装,安装到/usr/local/soft目录下。

一.单机版配置

1.安装和配置

#1.下载
wget http://apache.fayea.com/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
#2.解压
tar -zxvf zookeeper3.4.10.tar.gz

#3.在zookeeper-3.4.10/conf目录下创建目录: 
mkdir data 
mkdir logs

#4.将zookeeper3.4.10/conf目录下的zoo_sample.cfg 文件拷贝一份,命名为为zoo.cfg
cp zoo_sample.cfg zoo.cfg

#5.修改zoo.cfg配置文件
vim zoo.cfg
#修改为上面创建的目录
dataDir=/usr/local/soft/zookeeper-3.4.10/data 
#【该配置项为优化项,用于单独存放事务日志。参考官方文档】
dataLogDir=/usr/local/soft/zookeeper-3.4.10/logs

说明:
dataDir是快照存储的目录。配置文件中已经明确说明不要使用/tmp来存储,/tmp在这里仅仅是为了演示的目的。
dataLogDir是一个优化项,可以参考官方说明:优化

大意意思是:指明一个明确的事务日志目录可以在更新时降低延迟。默认的事务日志存放位置与data快照和myid文件存放位置相同。使用dataLogDir参数就可以指定一个不同的目录。

2.配置环境变量(可选)
配置环境变量后,则可在bin目录之外直接使用相应的命令。

#打开配置
vim /etc/profile

#在文件尾加入以下内容
export ZOOKEEPER_HOME=/usr/local/soft/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#刷新配置
source /etc/profile

3.启动(不要使用root用户启动)

#启动
zkServer.sh start
#停止
zkServer.sh stop
#查看运行状态
zkServer.sh status

运行状态中standalone表明当前为单节点模式。
这里写图片描述
4.设置开机启动(可选。生产环境下需要)
设置开机启动有两种方式,分别对应/etc/rc.d目录下的init.d目录和rc.local文件。

说明:
由于linux建立了软链接init.d -> rc.d/init.d,rc.local -> rc.d/rc.local的缘故,所以/etc/rc.d/init.d可以简写为/etc/init.d,同样/etc/rc.d/rc.local可简写为/etc/rc.local

①方式一:开机启动脚本
该方式类似于windows的’启动’目录,里面的批处理文件会在系统启动后自动运行。对应/etc/rc.d/init.d目录。
打开/etc/rc.d/rc.local文件,加入以下内容

#以非root用户来启动脚本
su - 用户名 -c '/usr/local/soft/zookeeper-3.4.10/zkServer.sh start'

然后,重启试试。
②方式二:开机自启动服务服务
另一种是做成开机自启动服务,这类似于windows中的系统服务,这些服务会在系统启动时自动启动。对应/etc/rc.d/rc.local文件。

#进入/etc/rc.d/init.d目录
cd /etc/rc.d/init.d
#创建zookeeper文件(每个服务对应一个文件),并授予执行权限
touch zookeeper
chomod +x zookeeper

#编辑zookeeper文件(创建zookeeper服务)
vim zookeeper
加入如下内容(这里使用的是root用户)
    #!/bin/bash
    #chkconfig:2345 20 90
    #description:zookeeper
    #processname:zookeeper
    case $1 in
              start) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh start;;
              stop) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh stop;;
              status) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh status;;
              restart) su root /usr/local/soft/zookeeper-3.4.10/bin/zkServer.sh restart;;
              *)  echo "require start|stop|status|restart"  ;;
    esac

#将zookeeper服务添加到开机启动项
chkconfig –add zookeeper
#查看开机自启项中是否已有zookeeper服务
chkconfig --list
#重启系统试试
#测试服务
service zookeeper start/stop/restart/status

二、配置参数说明

1.tickTime:
Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位。
tickTime=2000  

2.initLimit:Leader-Follow初始通信时限
集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)。启动有快有慢,超过该值则认为启动失败。
initLimit=5  

3.syncLimit:LF同步通信时限
集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)。
syncLimit=2  

4.dataDir:数据文件目录
Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
dataDir=/home/michael/opt/zookeeper/data  

5.clientPort:客户端连接端口
客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181 

6.服务器名称与地址:集群信息(服务器编号,服务器地址,LF通信端口,选举端口)
这个配置项的书写格式比较特殊,规则如下:
server.N=YYY:A:B 

server.1=test05:2888:3888
server.2=test06:2888:3888
server.3=test07:2888:3888

三、集群版配置

为了高可用,通常会配置zookeeper集群。Zookeeper集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将ZK集群的节点数量要为奇数(2n+1:如3、5、7个节点)较为合适。

以下是由三台zookeeper组成的集群的配置。
1.添加配置
只需要在前面单机配置的基础上,在配置文件追加如下内容

#服务器编号,服务器地址,Leader-Follow通信端口,选举端口
server.1=test01:2888:3888
server.2=test02:2888:3888
server.3=test03:2888:3888

说明:服务器地址可以直接写成ip形式,但推荐使用了ip与主机名绑定形式。
只需在/etc/hosts文件中添加:

# zookeeper servers 
192.168.8.88   test01

2.验证集群
分别启动三个zookeeper节点,查看运行状态。

zkServer.sh status

如果集群正常,则三台zookeeper都不再是standalone模式,而是会有一个leader模式和两个follower模式。其中leader是由zookeeper的选举策略选举产生的。

猜你喜欢

转载自blog.csdn.net/javandroid/article/details/80709020