现在zookeeper相当的火热,基本上分布式开源软件都会使用zookeeper,而且很多开源软件之中会自带zookeeper,但是我们当然希望这些软件都使用一套zookeeper来进行管理,所有我们需要搭建自己的zookeeper群。
这里我搭建zookeeper集群主要供hadoop与kafka集群使用
下面就开始教程,基本上与网上的其他教程差不多
第一步 准备工作
- 准备机器,我准备搭载一个三个节点的zookeeper,使用三台虚拟pc来搭载,安装虚拟机后注意要修改 hosts 文件,将三台节点的 host都要填入进去。(修改hosts都快成为了使用开源软件的必备第一步,确实很重要)
- 下载zookeeper 我下载的是,3.4.8版本的
下载地址
http://zookeeper.apache.org/releases.html - 解压文件
第二步 修改配置文件
修改zookeeper的配置文件,在zookeeper的
Conf目录下cp zoo_sample.cfg zoo.cfg vim zoo.cfg
主要修改的内容有两部分:dataDir、server.*
dataDir主要是存放zookeeper的数据
server.*放置server的ip与端口#我的配置如下,注意要删掉此段中文 dataDir=/home/lee/tmp/zookeeper server.1=hadooplee1:2888:3888 server.2=hadooplee2:2888:3888 server.3=hadooplee3:2888:3888
第三步 创建文件,准备运行
创建 dataDir目录,在该目录下新建一个myid的文件,写入serverList的序号
eg:mkdir /home/lee/tmp mkdir /home/lee/tmp/zookeeper #myid文件 1
运行zookeeper
//启动zookeeper,三台机器都要 ./bin/zkServer.sh start //查看zookeeper集群运行状态,每台都看一下 ./bin/zkServer.sh status
如果发现运行失败,使用以下代码可以查看zookeeper的启动运行日志
zkServer.sh start-foregroud
常见问题
问题1:
编辑zoo.cfg配置文件时,指定了log的输出目录,但是却未创建。
解决方案:因此需要按照里面指定的目录进行创建。mkdir /tmp/zookeeper/log
问题2:
检查配置zoo.cfg配置发现是该节点的主机名写错了;先停止三个节点zookeeper服务,逐一的修改节点上zoo.cfg配置文件,在逐一的启动 ,结果显示正常;
zk的安装搭建过程中, 如果报错, 一定要把status中的错误贴出来, 其它的信息不容易找到答案问题3:
Caused by: java.lang.IllegalArgumentException: ./zookeeper/myid file is missing
myid文件放错位置或者没有其他:
可以使用screen来 新建不同的session来进行后台运行,或者将zookeeper加入 rc.local文件,来进行开机运行。
Screen 是linux下的一个中高级技巧,通过screen命令创建的环境下运行的终端命令,其父进程不是sshd登陆回话,而是screen。这样就可以避免了用户退出进程消失的问题,同时又能重新接管回终端继续操作。也就是实现了后台运行新建 screen –dmS 名 连接 screen –r 名 跳出该screen Ctrl+A+D 列出所有的screen screen –list
参考文献: http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html