(1) 首先下载软件包(采用二进制包,非编译安装):
Zookeeper:https://archive.apache.org/dist/zookeeper/zookeeper-3.5.7/apache-zookeeper-3.5.7-bin.tar.gz
(2) 解压Zookeeper安装包,编辑解压文件中的conf/zoo.cfg配置文件,添加或调整以下配置:
#Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。tickTime以毫秒为单位
tickTime=2000
#集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数(tickTime的数量)
initLimit=10
#集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数(tickTime的数量)
syncLimit=5
#Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里
dataDir=/data/ELK/zookeeper_data/data
#Zookeeper保存日志的目录,如出现,则日志写在该目录下
dataLogDir=/data/ELK/zookeeper_data/logs
#客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
#服务器名称与地址:集群信息(服务器编号,服务器地址,Leader和follower通信端口,选举端口)
server.1=192.168.145.109:2888:3888
server.2=192.168.145.110:2888:3888
server.3=192.168.145.111:2888:3888
#zookeeper3.5.0新增的jetty嵌入式服务器,提供一些管理接口,设置为false以禁用,否则默认占用8080端口可能会导致端口冲突
admin.enableServer=false
(3) 需注意的是需要在步骤(2)中定义的数据目录下,新增名为“myid”的文件,并写入步骤(2)中定义的集群配置中,当前服务器所在节点的编号数字,如server.1=xxxx,则myid文件中写入“1”
(4) 修改zookeeper启动内存和系统日志位置,编辑解压文件中的bin/zkEnv.sh脚本,添加或调整以下配置:
#修改zookeeper系统日志路径
ZOO_LOG_DIR="/data/ELK/zookeeper_data/logs"
#修改zookeeper服务端运行堆内存为1024
ZK_SERVER_HEAP="${ZK_SERVER_HEAP:-1024}"
#修改jvm虚拟机启动参数,加载运行堆内存,将以下条目
export SERVER_JVMFLAGS="-Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
# 改为,注意内存单位:
export SERVER_JVMFLAGS="-Xms${ZK_SERVER_HEAP}m -Xmx${ZK_SERVER_HEAP}m $SERVER_JVMFLAGS"
(5) 更改文件从属,以便使用elk运行服务的时候不会出现读写权限问题,请自行更改zookeeper所在目录:
chown -R elk:elk /data/zookeeper
(6) 设置开机启动,这里采用的是写入/etc/rc.local的方式,Centos7以上版本首先要确认/etc/rc.d/rc.local是否有可执行权限,否则无法进行自启动,接着在文件里添加以下内容,请自行更改zookeeper所在目录:
su - elk -c "/bin/sh /data/zookeeper/bin/zkServer.sh start"
(7) 在所有服务器节点上执行以上操作,最后启动服务,观察服务启动日志是否有异常