Zookeeper是一个分布式服务框架,据说是一个比较强大的架构模式,具体我也不甚了解,但是最近由于工作上的原因,需要部署一个Zookeeper服务,实现移动端一个简单的发单、抢单功能。于是我便开始了解这个框架,将个人本地测试以及服务器部署过程的中遇到的问题和解决方案总结如下,希望大家在使用过程中可以少走弯路,第一次学习这个框架,写的不好,还望指正,大神勿喷哦!
使用任何一门语言或者框架之前的首要工作就是部署开发环境。
本地部署Mac版本
1. 下载对应的安装程序,支持版本 dmg 、tar.gz 下载地址: http://www.apache.org/dyn/closer.cgi/zookeeper;
2. 也可以使用brew命令$ brew install zookeeper 直接下载安装, 具体安装步骤详见链接http://blog.csdn.net/whereismatrix/article/details/50420099;
3. 安装后的配置工作可以参考上述这位博主的链接,我觉得这位博主总结比我到位,我本地的环境就是按照这个步骤搭建的,灰常感谢。
下面重点说一下服务器部署
服务器部署Linux版本
1. 下载对应的安装程序,可以使用命令下载(如果你的服务器有域名解析的话),也可以将本地的安装包上传至服务器。我比较倾向于后者,因为一般新搭建的服务器都没有域名解析,要使用的话还需要网络工程师做配置修改,比较麻烦,所以我将本地的资源上传了上去,不会上传的童鞋可以搜索一下远程拷贝scp命令,这里就不赘述;
2. 解压安装程序,这里我建议直接解压到/usr/local/ 目录下,这不是硬性规则,只是个人习惯而已;
3. 创建配置文件zoo.cfg
在解压文件中的conf文件夹中创建自定义配置文件zoo.cfg,并根据配置文件的内容,创建对应的文件夹(比如data、logs文件夹)
配置文件的内容
tickTime=2000 dataDir= /usr/local/zookeeper-3.4.8/data (填写自己的data目录) dataLogDir=/usr/local/zookeeper-3.4.8/logs clientPort=2181
4. 启动服务
进入文件中的bin目录 运行 ./zkserver.sh start
如果出现下图中start 等字样表示启动成功,但是不要高兴的太早!
5.启动zookeeper客户端
跟随第四步,继续在当前目录运行 ./zkCli.sh -timeout 3000 -server 127.0.0.1:2181
如果不出意外的话是会启动失败的,报错信息为 ./zookeeper-3.4.8/bin/zkCli.sh: line 39: java: command not found
下面详细说一下这个问题的解决方案:
导致这个问题的原因有两种,一是服务器没有Java 开发环境, 二是配置文件未生效
没有Java环境怎么解决我就不多说;
要让配置文件生效的话,就得再启动服务时指定配置文件路径,这样的话启动命令为 ./zkserver.sh start /usr/local/zookeeper-3.4.8/conf/zoo.cfg
成功启动即可解决。