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.210/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# 将以下追加到文件末尾exportJAVA_HOME/opt/jdk-12.0.2exportJRE_HOME/$JAVA_HOME/jreexportCLASSPATH.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexportPATH$PATH:$JAVA_HOME/bin:$JRE_HOME/bin生效环境配置source ~/.bash_profile查看java 版本java version2、zookeeper单服务器安装2.1 个人选择一个稳定的zookeeper-3.4.14http://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[rootdn2 opt]# lshadoop-2.7.5.tar.gz jdk-12.0.2 zookeeper-3.4.142.2 配置zk在 zk目录下新建data和logs目录[rootdn2 zookeeper-3.4.14]# mkdir data logs拷贝一个zk的配置文件用到实际项目中[rootdn2 zookeeper-3.4.14]# cp conf/zoo_sample.cfg zoo.cfg# 修改zoo.cfg的data目录和logs目录路径vizoo.cfg# 修改监听客户端连接端口为五位数信息安全等保要求重要端口都建议5位数clientPort32181# 修改dataDir/opt/zookeeper-3.4.14/data# 新增dataLogDir/opt/zookeeper-3.4.14/logs将zk加入环境变量vi~/.bash_profile 新增 ZOOKEEPER_HOME/opt/zookeeper-3.4.14exportPATH$ZOOKEEPER_HOME/bin:$PATHsource ~/.bash_profile2.3 启动zk# 启动zk[rootdn2 opt]# zookeeper-3.4.14/bin/zkServer.sh startZooKeeper JMX enabled by default Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg Starting zookeeper... STARTED#查看进程[rootdn2 bin]# jps4728 Jps 4668 QuorumPeerMain#QuorumPeerMain是zookeeper进程,启动正常# 查看状态[rootdn2 bin]# ./zkServer.sh statusZooKeeper JMX enabled by default Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg Mode: standalone# 查看zk服务日志打印后10条日志看看[rootdn2 bin]# tail -n 10 -f zookeeper.out# 停止zk服务[rootdn2 bin]# ./zkServer.sh stopZooKeeper JMX enabled by default Using config: /opt/zookeeper-3.4.14/bin/../conf/zoo.cfg Stopping zookeeper... STOPPED连接zkserver因为是本地单机可以无须制定IP即可用cli登录[rootdn2 bin]# ./zkCli.sh Connecting to localhost:2181 # 若登录远程部署多台或集群指定远程IP即可 [rootdn2 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集群。