zk不懂的可以看博主理论学习:https://blog.csdn.net/qq_39276448/article/details/86029235
以下过程已经试过好多遍,没问题的
单机版
下载zookeeper的安装包
http://apache.fayea.com/zookeeper/stable/zookeeper-3.4.12.tar.gz
可能已过时,自行下载http://apache.fayea.com/zookeeper/可用版本
解压zookeeper
tar -zxvf zookeeper-3.4.12.tar.gz
解压后,放在你想放的地方,以下是目录结构
cd 到 conf , copy一份zoo.cfg(复制一份,已配置文件形式启动,也避免误操作删除了原来的配置文件)
cp zoo_sample.cfg zoo.cfg
cd bin/
sh zkServer.sh start ../conf/zoo.cfg 以自己的配置文件启动,不写则以默认配置文件启动(在bin目录下查看该脚本指令,加start即为开启服务)
{start|start-foreground|stop|restart|status|upgrade|print-cmd}
sh zkCli.sh -server 127.0.0.1:2181(客户端连接测试)
集群版(单机模拟三台)博主穷!一样的,下面会阐述
忽略上面操作
下载解压不说了。
复制三份启动配置文件(集群利于选举,且最低台数)
伪集群版
cp zoo_sample.cfg zoo1.cfg
cp zoo_sample.cfg zoo2.cfg
cp zoo_sample.cfg zoo3.cfg
非伪集群版:
cp zoo_sample.cfg zoo.cfg
zoo.cfg 设置:
看单机版目录:
查看配置文件
伪集群版:
vim /conf/zoo1.cfg
找到
dataDir=/tmp/zookeeper/ 就是这个目录,版本不同可能不同/tmp/zookeeper/
cd /tmp/zookeeper/切换到目录下创建 配置3个服务器的数据,日志文件,并在data下创建myid文件且插入对应id
mkdir data-1
cd data-1
touch myid
vim myid
插入 1
:wq!保存退出
mkdir data-2
cd data-2
touch myid
插入 2
:wq!保存退出
mkdir data-3
cd data-3
touch myid
插入 3
:wq!保存退出
mkdir logs-1
mkdir logs-2
mkdir logs-3
集群版:
不用管!
修改添加配置文件
伪集群版:
zoo1.cfg 设置:
# 数据文件夹
dataDir=/tmp/zookeeper/data-1
# 日志文件夹
dataLogDir=/tmp/zookeeper/logs-1
#客户端端口
clientPort=2181
#(节点的id:x,集群版配置对应每台机器的:ip,port1:端口随意最好一样,port2:以及选举端口)
server.x=外网ip:port1:port2
server.1=本地外网ip:2887:3887
server.2=本地外网ip:2888:3888
server.3=本地外网ip:2889:3889
zoo2.cfg 设置:
dataDir=/tmp/zookeeper/data-2
dataLogDir=/tmp/zookeeper/logs-2
clientPort=2182
server.1=本地外网ip:2887:3887
server.2=本地外网ip:2888:3888
server.3=本地外网ip:2889:3889
zoo3.cfg 设置:
dataDir=/tmp/zookeeper/data-3
dataLogDir=/tmp/zookeeper/logs-3
clientPort=2183
server.1=本地外网ip:2887:3887
server.2=本地外网ip:2888:3888
server.3=本地外网ip:2889:3889
切换到zk bin目录下
运行第一个伪zk节点:sh zkServer.sh start ../conf/zoo1.cfg
运行第二个伪zk节点:bin/zkServer.sh start ../conf/zoo2.cfg
运行第三个伪zk节点:bin/zkServer.sh start ../conf/zoo3.cfg
启动后测试节点状态:
sh zkServer.sh status ../conf/zoo1.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo.cfg
Mode: follower
sh zkServer.sh status ../conf/zoo2.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo2.cfg
Mode: leader
sh zkServer.sh status ../conf/zoo3.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo.cfg
Mode: follower
看到以上黄色内容则表示成功!
非伪集群版:
第一台:
#客户端端口
clientPort=2181
#集群地址(每台机器的地址以及port)
#(节点的id:x,集群版配置对应每台机器的:ip,port1:端口随意最好一样,port2:以及选举端口)
#一定要一一对应上,别乱写。
server.x=外网ip:port1:port2
server.1=外网ip:2888:3888
server.2=外网ip:2888:3888
server.3=外网ip:2888:3888
第二台:(同上)
clientPort=2181
server.1=外网ip:2888:3888
server.2=外网ip:2888:3888
server.3=外网ip:2888:3888
第三台:(同上)
clientPort=2181
server.1=外网ip:2888:3888
server.2=外网ip:2888:3888
server.3=外网ip:2888:3888
分别在3台zk节点/tmp/zookeeper/下创建myid文件
cd /tmp/zookeeper/
第一台:
touch myid
vim myid
插入1
:wq!保存
第二台:
touch myid
vim myid
插入2
:wq!保存
第三台:
touch myid
vim myid
插入3
:wq!保存
切换到zk bin目录下
到第一台启动:sh zkServer.sh start ../conf/zoo.cfg
到第二台启动:sh zkServer.sh start ../conf/zoo.cfg
到第三台启动:sh zkServer.sh start ../conf/zoo.cfg
测试:
查看第一台状态 sh zkServer.sh status ../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo.cfg
Mode: follower
查看第二台状态 sh zkServer.sh status ../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo2.cfg
Mode: leader
查看第三台状态 sh zkServer.sh status ../conf/zoo.cfg
ZooKeeper JMX enabled by default
Using config: conf/zoo.cfg
Mode: follower
看到这些则表示成功!
看到以上黄色内容则表示成功!