介绍
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。
在Spring Cloud中因为Eureka的更新停止,可以选用ZooKeeper来代替其服务注册中心的组件。
安装
本次安装演示采用centos7安装zookeeper3.6.2版本。
1.下载安装包
官网下载地址:https://zookeeper.apache.org/releases.html
2.配置环境
安装zookeeper需要java环境,可以下面这篇文章安装JDK:
Linux安装JDK
3.上传安装包
通过地址下载安装包然后通过Xshell拖拽上传或者wget指令下载。
4.拷贝到安装目录和备份目录
/usr/local/src是备份的目录,自行修改。
cp apache-zookeeper-3.6.2-bin.tar.gz /usr/local/src
拷贝到安装目录:
cp apache-zookeeper-3.6.2-bin.tar.gz /usr/local
5.解压安装包
cd /usr/local
tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
解压完成后删除:
rm -f apache-zookeeper-3.6.2-bin.tar.gz
-命令介绍:
指令 | 介绍 |
---|---|
tar | 备份文件 |
-z | 通过gzip指令处理备份文件 |
-x | 从备份文件中还原文件 |
-v | 显示指令执行过程 |
-f | 指定备份文件 |
jdk-8u202-linux-x64.tar.gz | 文件名 |
6.重命名解压的文件夹
mv apache-zookeeper-3.6.2-bin zookeeper
7.创建数据存储文件夹
cd zookeeper
名称可以自定义:
mkdir zkdata
如果是集群部署需要进入zkdata目录创建myid文件并写入数据(单机版不需要);myid文件的内容只有一行,且内容只能为1 – 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。
比如假设该台服务器是server.1,执行如下命令:
cd zkdata
echo 1 >myid
8.配置文件
cd /usr/local/zookeeper/conf
拷贝一份 zoo_sample.cfg 文件并且重命名为zoo.cfg:
cp zoo_sample.cfg zoo.cfg
打开zoo.cfg修改数据存储目录和端口和集群服务器:
vim zoo.cfg
各项参数解释:
参数 | 备注 |
---|---|
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。 |
9.开放端口
开放2181、2888、3888端口。
firewall-cmd --permanent --add-port=2181/tcp
firewall-cmd --permanent --add-port=2888/tcp
firewall-cmd --permanent --add-port=3888/tcp
重启防火墙:
firewall-cmd --reload
查看端口是否开放:
firewall-cmd --query-port=端口号/tcp
10.启动
返回程序主目录:
cd ..
启动指令:
bin/zkServer.sh start
出现红框内容即启动成功:
11.节点状态
bin/zkServer.sh status
12.客户端启动
首次启动比较慢,等下就好:
bin/zkCli.sh
查看节点列表:
ls /
查看服务详情
get /zookeeper
13.自启(可选)
1)在启动的目录创建脚本文件:
vim /etc/init.d/zookeeper
2)添加如下内容,注意路径自己修改下:
#!/bin/bash
#chkconfig:2345 20 90
#description:zookeeper
#processname:zookeeper
export JAVA_HOME=/usr/lib/java/jdk1.8.0_202
export PATH=$JAVA_HOME/bin:$PATH
case $1 in
start)su root /usr/local/zookeeper/bin/zkServer.sh start;;
stop)su root /usr/local/zookeeper/bin/zkServer.sh stop;;
status)su root /usr/local/zookeeper/bin/zkServer.sh status;;
restart)su root /usr/local/zookeeper/bin/zkServer.sh restart;;
*) echo "require start|stop|status|restart" ;;
esac
3)授予执行权限。
chmod 777 /etc/init.d/zookeeper
4)增加mysqld服务。
chkconfig --add zookeeper
5)查询mysql情况。
chkconfig --list zookeeper
如果345为off则:
chkconfig --level 345 zookeeper on
6)重启验证:
reboot