Zookeeper启动:零基础也能一次跑通

Zookeeper启动:零基础也能一次跑通

#

掌握正确的Zookeeper启动方式,能规避90%的本地调试和集群部署报错,不用反复翻日志排查低级问题。很多人启动失败,根本不是软件故障,只是搞错了启动脚本和运行模式。

Zookeeper的启动逻辑特别简单,核心就分单机和集群两种场景,日常开发90%的情况都在用单机模式。它本身是依赖Java环境运行的中间件,所以启动前唯一硬性要求,就是电脑或服务器装好JDK8及以上版本,环境变量配置生效。没装Java的话,双击脚本只会一闪而过,完全无法启动。

先做单机启动,这是新手最先掌握的基础操作。解压完Zookeeper安装包后,进入conf配置文件夹,能看到一个默认配置模板zoo_sample.cfg。系统不会识别这个模板文件,必须手动复制一份,重命名为zoo.cfg,这是很多新手踩过的第一个坑。

之前调试的时候,我偷懒直接用了sample配置文件,没改名,反复点击启动脚本十几次,控制台一直黑屏退出,查看日志发现抛出“配置文件不存在”的报错,耗时二十多分钟才找到问题根源。

配置文件不用大改,默认的端口、心跳参数都够用。只需要简单确认dataDir路径,这个目录是用来存放Zookeeper数据和日志的,默认是临时目录,建议改成安装包内的专属文件夹,避免数据丢失。

配置保存后,就可以启动服务了。

Windows系统,直接进入bin目录,双击zkServer.cmd即可。双击后不要立刻关闭窗口,黑色控制台窗口常驻、不报错退出,就代表启动成功。

Linux和Mac系统,打开终端,进入bin目录,输入命令 ./zkServer.sh start 。终端不会弹出窗口,只会返回一行简短的启动提示。

看状态,是关键一步。

Linux/Mac输入 ./zkServer.sh status ,能看到mode为standalone,就是单机启动成功。Windows没有自带状态查询脚本,直接打开新的cmd,输入zkCli.cmd,能正常连接服务,就说明运行正常。

集群启动要注意什么?

集群启动和单机完全不是一个逻辑,核心是多节点互相感知、投票选主。至少需要3台服务器,奇数节点是硬性规则,为什么不能用2台?两台节点宕机一台,剩余一台无法满足半数存活规则,集群直接瘫痪。

集群配置只需要改两处核心内容。第一,每台节点的dataDir目录下,新建一个myid文件,里面只写一个数字,1、2、3依次对应三台机器,用来区分不同节点。第二,在zoo.cfg末尾,添加所有节点的通信配置,写明每台机器的IP和端口。

改完所有节点配置后,必须逐台启动。

别一次性全部启动。

间隔三秒启动一台,全部启动完成后,逐个查询状态,会发现节点自动区分出leader主节点和follower从节点,集群搭建就完成了。

最后记住一个收尾操作。调试结束、关机之前,一定要执行停止命令。Linux用 ./zkServer.sh stop,Windows直接关闭服务窗口即可。强行杀进程,大概率会导致数据文件损坏,下次启动直接报错。

了解更多百科知识请访问 百科