对于ZooKeeper有了一个大概的了解以后,本篇则着重于部署与运行操作。
一:系统环境:
操作系统-Linux虚拟机,用于本机操作;
Java环境-JDK 1.7,建议其Java环境为1.6或高于1.6版本的;
二:集群与单机操作:
ZooKeeper安装包下载:
下载网址:http://zookeeper.apache.org/releases.html#download;下载完成之后可以通过SecureCRT来将其放置虚拟环境中
放置相对应的环境之后,需要进行一些相对应的操作:
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
截图如下:
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查看进程:
其中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下的执行脚本,整理如下:
上述我们也只是实践了简单的启动和重启操作,其他的需要一个一个区实践,在实践的过程中,总会遇到各种各样的成长机会,比如我就遇到了这样的一个问题:
问题截图:
具体问题文字表达:
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,为整个文件夹赋权限再重新启动即可解决问题。