对于ZooKeeper有了一个大概的了解以后,本篇则着重于部署与运行操作。

一:系统环境:

    操作系统-Linux虚拟机,用于本机操作;

    Java环境-JDK 1.7,建议其Java环境为1.6或高于1.6版本的;

二:集群与单机操作:

ZooKeeper安装包下载:

下载网址:http://zookeeper.apache.org/releases.html#download;下载完成之后可以通过SecureCRT来将其放置虚拟环境中

单机zookeeper正常状态 zookeeper运行状态_大数据

放置相对应的环境之后,需要进行一些相对应的操作:

    1、传入的是压缩包形式,所以需要对其进行解压操作;解压完之后,初次使用ZooKeeper,需要将%ZK_HOME%/conf目录下的zoo_sample.cfg文件重命名为zoo.cfg;然后对其文件进行配置即可。


解压操作:tar zxvf XXXX


更改重命名:mvzoo_sample.cfg zoo.cfg


进入文件操作:vim zoo.cfg

    2、Zoo.cfg配置如下:


tickTime=2000


initLimit=5


syncLimit=2


dataDir=/home/huohuo/zookeeper-3.4.8/data
dataLogDir=/home/huohuo/zookeeper-3.4.8/logs


clientPort=2181


server.1=100.66.162.172:2888:3888

截图如下:

单机zookeeper正常状态 zookeeper运行状态_zookeeper_02

3、在data下创建文件myid,比如上边我们只配置了一个server.1,所以我们只需要创建一个文件,将其内容为1即可。

4、在/home/xxx/.bash_profile中增加ZooKeeper配置:

    # zookeeper env
    export ZOOKEEPER_HOME=/home/huohuo/zookeeper-3.4.8
    export PATH=$ZOOKEEPER_HOME/bin:$PATH

使配置文件生效命令:

    source /home/wusc/.bash_profile

5、在防火墙中打开需要用到的端口号:2181,2888,3888

    # chkconfig iptables on
    # service iptables start
   编辑/etc/sysconfig/iptables
   # vi /etc/sysconfig/iptables
   增加以下 3 行:
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
   重启防火墙:
   # service iptables restart
   查看防火墙端口状态:
   # service iptables status

注:

    2888端口号是ZooKeeper服务之间通信的端口;

    3888是ZooKeeper与其他应用程序通信的端口;

    对于ZooKeeper,存在两种运行模式:集群模式和单击模式,我们上述操作都是使用的单机模式,和集群模式唯一的区别就是在机器列表上,在单击模式的zoo.cfg文件中,只存在一个server.1这一项;而集群模式则是其对应的三台或者几台服务的列表操作。

对于ZooKeeper的集群模式的参数配置,需要配置一下几点:

a.在集群模式下,集群中的每台机器都需要感知到整个集群中的机器序号。同事,在每台ZooKeeper机器上,我们都需要在数据目录(dataDir参数指定的那个目录)下创建一个myid文件,该文件只有一行内容,并且是一个数字,即对应于每台机器上的ServerID数字。

b.在ZooKeeper的设计中,集群中所有机器上zoo.cfg文件的内容都应该是一致的。

c.要确保每个服务器的myid文件中的数字不同,并且和自己所在机器的zoo.cfg中server.id=host:port:port的id值一致。另外,id的范围是1到255.

d.创建myid文件

在dataDir所配置的目录下,创建一个名为myid的文件,在该文件的第一行写上一个数字,和zoo.cfg当前机器的编号对应上。

e按照相同的步骤,为其他机器都配置上zoo.cfg和myid文件。

三:运行操作

一切准备就绪,当然就得运行起来,进行测试了。

启动服务:



[root@localhostbin]# sh zkServer.sh start



ZooKeeper JMXenabled by default



Using config:/root/zookeeper-3.4.8/bin/../conf/zoo.cfg



Starting zookeeper... STARTED

 输入jps查看进程:

单机zookeeper正常状态 zookeeper运行状态_zookeeper_03

其中QuorumPeerMain 是 zookeeper 进程,启动正常。

停止服务:



[root@localhostbin]# sh zkServer.sh stop



ZooKeeper JMXenabled by default



Using config:/root/zookeeper-3.4.8/bin/../conf/zoo.cfg



Stopping zookeeper... zkServer.sh: line 182: kill: (16834) - No such process



STOPPED


通过ls查看bin下的执行脚本,整理如下:



单机zookeeper正常状态 zookeeper运行状态_单机zookeeper正常状态_04



   上述我们也只是实践了简单的启动和重启操作,其他的需要一个一个区实践,在实践的过程中,总会遇到各种各样的成长机会,比如我就遇到了这样的一个问题:

问题截图:

单机zookeeper正常状态 zookeeper运行状态_网络_05

具体问题文字表达:


Starting zookeeper... /home/huohuo/zookeeper-3.4.8/bin/zkServer.sh: line 149:/home/huohuo/zookeeper-3.4.8/data/zookeeper_server.pid: Permission denied

FAILED TO WRITE PID


Permission denied,得不到许可,其实也就是权限不够的原因。通过chmod a+wxr,为整个文件夹赋权限再重新启动即可解决问题。