我是在本机部署的,使用的是Vmware虚拟机。
首先你要确保你的三台机器防火墙全部关闭:
systemctl status firewalld
systemctl stop firewalld #临时关闭
systemctl disable firewalld #永久关闭
其次你要确保机器上都安装了jdk并配置好了JAVA_HOME,因为zk运行需要java环境。
之后上传下载后的zookeeper压缩包,请选择上面的文件,下面的是zookeeper的源码包…:
下载地址:https://zookeeper.apache.org/releases.html#download
解压文件并进入文件内部创建data文件夹,添加好myid文件(集群中这个myid代表着当前zk的唯一id,有大用…)
#顺手改了个名字~
mv apache-zookeeper-3.8.0-bin zookeeper-test/
#创建data用于存放当前zk节点的数据
mkdir -p ./zookeeper-test/data/zk-node1
每个zk的data目录不要相同,比如第一个节点叫zk-node1,第二个叫zk-node2…
cd zookeeper-test/data/zk-node1/
#文件中输入你想要的myid,比如1
vim myid
:wq 保存
看官大哥,请复制好你的文件夹目录,现在让我们来修改配置文件~
cd ../../conf/
#官方提供了一个配置文件夹,我习惯把他复制一份出来,你也可以直接使用它,,,改个名叫zoo.cfg就好~
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
为了方便我就直接复制下来了,其他的可以使用默认配置,我是单机单zk的结构,单机多zk记得修改端口号~
dataDir=/zookeeper-test/data/zk-node1修改zk节点的存储数据地址,就是刚刚复制的那个;
配置集群的话我写在这个最下面中
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpHost=0.0.0.0
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true
#zk cluster
# 端口规则为:[当前zk的IP]:2288:3388。2288为followers连接到leader的端口,3388为选举接口,单机#多zk可以配置为递增,例如:
#server.[myid] = 192.168.199.5:2288:3389
#server.[myid] = 192.168.199.5:2289:3390
#server.[myid] = 192.168.199.5:2290:3391
#在/zookeeper-test/data/zk-node1/myid文件中存入的myid就是在这使用,如果myid文件中的和当前节点的myid不匹配会出现一个peer什么的错误,大概意思就是当前节点的myid不在list中,你可以测试一下,,,
server.[myid] = 192.168.199.5:2288:3388
server.[myid] = 192.168.199.10:2288:3388
server.[myid] = 192.168.199.11:2288:3388
现在这个节点已经做好了,你可以用scp命令把当前修改好的分发到其他机器,然后记得修改zk节点数据文件夹,myid,zoo.cfg中的dataDir,clientPort和节点。
之后就可以启动zk了:在bin目录下执行:
./zkServer.sh start 启动
./zkServer.sh stop 停止
./zkServer.sh status 查看状态
#zk的日志默认会输出在当前zk的log文件夹下,启动时可以开个新的窗口跟踪日志,如果启动错误也可以根据此日志排查错误原因。
tail -f xxxx.log
此时就算成功了。
不过zookeeper官方在3.5之后的版本推出了观察者模式和动态配置文件部署集群,观察者模式有点类似redis的哨兵机制,有兴趣的可以自己尝试一下。
https://zookeeper.apache.org/doc/r3.5.2-alpha/zookeeperReconfig.html