Zkserver的安装:
Cd /software
wget http://mirrors.shu.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz
tar xzvf zookeeper-3.4.10.tar.gz -C /usr/local/
cd /usr/local/
ln -sv zookeeper-3.4.10/ zookeeper
cd zookeeper
cp -r zoo_sample.cfg zoo.cfg
vim /etc/profile.d/zk.sh
ZK_HOME=/usr/local/zookeeper/
PATH=$PATH:$ZK_HOME/bin
export ZK_HOME PATH
Source /etc/profile
ZK集群配置文件修改
配置zoo.cfg文件 vim /usr/local/zookeeper/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/logs
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1= 10.83.64.102:2888:3888
server.2= 10.83.64.101:2888:3888
server.3= 10.83.64.105:2888:3888
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下
Mkdir -p /usr/local/zookeeper/{data,logs}
echo "1" >/usr/local/zookeeper/data/myid
tickTime这个时间是作为zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是说每个tickTime时间就会发送一个心跳。
initLimit这个配置项是用来配置zookeeper接受客户端(这里所说的客户端不是用户连接zookeeper服务器的客户端,而是zookeeper服务器集群中连接到leader的follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
当已经超过10个心跳的时间(也就是tickTime)长度后 zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20秒。
syncLimit这个配置项标识leader与follower之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是5*2000=10秒。
dataDir顾名思义就是zookeeper保存数据的目录,默认情况下zookeeper将写数据的日志文件也保存在这个目录里;
clientPort这个端口就是客户端连接Zookeeper服务器的端口,Zookeeper会监听这个端口接受客户端的访问请求;
server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。
3.3、创建ServerID标识
除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。
这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。
#在192.168.1.148服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,#在192.168.1.149服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.2保持一致,如下
echo "2" > /opt/zookeeper/data/myid
#在192.168.1.150服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.3保持一致,如下
echo "3" > /opt/zookeeper/data/myid
到此,相关配置已完成
配置启动服务文件
Vim /etc/init.d/zk
#!/bin/bash
#
# elasticsearch <summary>
#
# chkconfig: 2345 90 30
# description: Starts and stops a single elasticsearch instance on this system
#
### BEGIN INIT INFO
# Provides: Elasticsearch
# Required-Start: $network $named
# Required-Stop: $network $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: This service manages the elasticsearch daemon
# Description: Elasticsearch is a very scalable, schema-free and high-performance search solution supporting multi-tenancy and near realtime search.
### END INIT INFO
pid_num=$(ps aux |grep zookeeper|grep -v grep|awk '{print $2}')
start() {
nohup /usr/local/zookeeper/bin/zkServer.sh start >/dev/null 2>&1 &
}
stop() {
if [ `ps aux |grep zookeeper|grep -v grep|wc -l` -eq 1 ];then
kill -9 ${pid_num}
fi
}
status() {
if [ `ps aux |grep zookeeper|grep -v grep|wc -l` -eq 1 ];then
echo "zookeeper service is starting"
/usr/local/zookeeper/bin/zkServer.sh status
else
echo "zookeeper service is stoping"
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
*)
echo "service accept arguments start|stop|status"
esac
Chkconfig --add zk
Chkconfig zk on
Service zk status
Service zk start
Service zk stop
推荐关注我的个人微信公众号 “云时代IT运维”,周期性更新最新的应用运维类技术文档。关注虚拟化和容器技术、CI/CD、自动化运维等最新前沿运维技术和趋势;
转载于:https://blog.51cto.com/zgui2000/2355244