zk这东西太优秀了,分布式锁、分布通知/协调(配置管理)、分布式队列、集群管理、数据发布与订阅等场景,最佳中间件,虽然zk有很多强大的特性,但一般公司的项目不会用得太多,集群管理、分布式锁应该是绝大部分公司最常用的zk两个特性!个人将对zk的单机以及集群安装和配置、基本命令使用、zk设计原理以及应用层实例使用进行全面记录。
1、JDK安装
通过压缩包方式安装,jdk官网下载:
https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html
最新jdk12.0.2下载包:
个人习惯将环境放置/opt目录下,建议保留jdk安装包目录名,因为该目录名显示jdk版本号,方便后续升级或者漏洞补丁处理的版本查看
wget https://download.oracle.com/otn-pub/java/jdk/12.0.2+10/e482c34c86bd4bf8b56c0b35558996b9/jdk-12.0.2_linux-x64_bin.tar.gz
解压
tar -xzf jdk-12.0.2_linux-x64_bin.tar.gz
将jdk路径配置到系统环境中
vi ~/.bash_profile
# 将以下追加到文件末尾
export JAVA_HOME=/opt/jdk-12.0.2
export JRE_HOME=/$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
生效环境配置
source ~/.bash_profile
查看java 版本
java version
2、zookeeper单服务器安装
2.1 个人选择一个稳定的zookeeper-3.4.14
http://mirror.bit.edu.cn/apache/zookeeper/stable/
同样放置子/opt目录下
wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
解压
tar -xzf zookeeper-3.4.14.tar.gz
[root@dn2 opt]# ls
hadoop-2.7.5.tar.gz jdk-12.0.2 zookeeper-3.4.14
2.2 配置zk
在 zk目录下新建data和logs目录
[root@dn2 zookeeper-3.4.14]# mkdir data logs
拷贝一个zk的配置文件,用到实际项目中
[root@dn2 zookeeper-3.4.14]# cp conf/zoo_sample.cfg zoo.cfg
# 修改zoo.cfg的data目录和logs目录路径
vi zoo.cfg
# 修改监听客户端连接端口为五位数,信息安全等保要求重要端口都建议5位数
clientPort=32181
# 修改
dataDir=/opt/zookeeper-3.4.14/data
# 新增
dataLogDir=/opt/zookeeper-3.4.14/logs
将zk加入环境变量
vi ~/.bash_profile
新增
ZOOKEEPER_HOME=/opt/zookeeper-3.4.14
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source ~/.bash_profile
2.3 启动zk
# 启动zk
[root@dn2 opt]# zookeeper-3.4.14/bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
#查看进程
[root@dn2 bin]# jps
4728 Jps
4668 QuorumPeerMain #QuorumPeerMain是zookeeper进程,启动正常
# 查看状态
[root@dn2 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Mode: standalone
# 查看zk服务日志,打印后10条日志看看
[root@dn2 bin]# tail -n 10 -f zookeeper.out
# 停止zk服务
[root@dn2 bin]# ./zkServer.sh stop
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
连接zk server
因为是本地单机,可以无须制定IP即可用cli登录
[root@dn2 bin]# ./zkCli.sh
Connecting to localhost:2181
# 若登录远程(部署多台或集群),指定远程IP即可
[root@dn2 bin]# ./zkCli.sh -192.168.100.5:2181
Connecting to localhost:2181
# 列出根路径下的节点,可以看到仅有zk的默认节点,注意“zookeeper”是zk保留字
[zk: localhost:2181(CONNECTED) 0] ls /
[zookeeper]
# 退出连接
quit
裸机部署zk单实例服务过程相对简单,在下一篇blog将给出集群部署,因测试环境无法提供多台真实服务器进行部署,所以这个集群是在一台服务器上实现,部署过程根但实例差别不大,另外也会给出使用docker部署zk集群。