一、简述
独立模式是部署zookeeper服务的三种模式中最简单和最基础的模式,只需一台机器即可,独立模式仅适用于学习,开发和生产都不建议使用独立模式。本文介绍以独立模式部署zookeeper服务器的全过程,并提供一些验证它正在运行的简单命令。
二、先决条件
1、一台机器,本文使用服务器为CentOS 7.3。
2、zookeeper在java虚拟机(JVM)上运行,要求JDK1.6或更高版本,所以需要安装JDK并配置环境变量,JDK的安装网络上有很多教程,此处就不再赘述,本文使用JDK版本为JDK1.8。
三、下载zookeeper
下载zookeeper,一般我选择到zookeeper档案馆中下载,既然是zookeeper档案馆,那zookeeper的各种版本,应有尽有,此处献上连接:http://zookeeper.apache.org/releases.html。此处使用的是zookeeper-3.4.0,所以下载文件zookeeper-3.4.0.tar.gz。
四、独立模式部署zookeeper服务
1、新建目录:在跟目录下新建目录/data/zookeeper。
2、上传文件:上传zookeeper-3.4.0.tar.gz到/data/zookeeper目录下。
3、解压:解压缩包到当前目录下,tar xzf zookeeper-3.4.0.tar.gz。
4、配置zookeeper环境变量:编辑/etc/profile文件,在文件末尾添加下列代码:
1 export ZOOKEEPER_HOME=/data/zookeeper/zookeeper-3.4.0 2 export PATH=$PATH:$ZOOKEEPER_HOME/bin
如下图所示:
保存文件,执行命令source /etc/profile使命令立即生效。
5、配置zookeeper
在启动zookeeper服务之前,我们需要创建一个配置文件,用于配置zookeeper服务。这个文件习惯上命名为zoo.cfg,在解压后的zookeeper文件下的conf目录下可以找到zoo.cfg文件的模板文件zoo_sample.cfg,如下图所示:
使用命令cp zoo_sample.cfg zoo.cfg复制zoo_sample.cfg文件并重命名为zoo.cfg,如下图所示:
编辑zoo.cfg文件,修改dataDir属性值为/data/zookeeper/zdata,如下图所示,该属性主要是配置zookeeper产生的数据存放的目录。也可以为其他的目录,前提是目录已经存在,如果不存在,则新建。此处/data/zookeeper/zdata目录我已经提前建好。
注释掉属性initLimit和syncLimit。
仔细观察可以发现此处仅仅设置了3个属性,分别为tickTime=2000、dataDir=/data/zookeeper/zdata、clientPort=2181。tickTime和clientPort保持默认即可,这是独立模式下zookeeper的最低要求。附录中会附上这3个属性的详细解析。
6、启动zookeeper:由于配置了zookeeper系统环境变量,所以可以在任意路径下执行zkServer.sh start 命令来启动zookeeper。当然,如果没有配置环境变量的话,只能到/data/zookeeper/zookeeper-3.4.0/bin下通过命令./zkServer.sh start来启动zookeeper服务。如成功下图所示:
五、验证
验证zookeeper服务是否启动(或服务是否正常),其实很简单。使用nc发送ruok命令到监听端口,即可检查zookeeper服务是否正在运行。命令如下:
echo ruok | nc localhost 2181
ruok(必须配置zookeeper环境变量后此命令才有效)命令即 Are you OK?,即询问zookeeper服务是否安好,如果安好,也就是zookeeper服务正在运行,则打印imok(I am ok),如下图所示:
六、客户端连接zookeeper服务
在任意路径下执行命令zkCli.sh -server localhost:2181连接zookeeper,如果没有配置环境变量,需要到/data/zookeeper/zookeeper-3.4.0/bin路径下执行./zkCli.sh -server localhost:2181,如下图所示:
连接成功之后输入命令ls /可以看到zookeeper服务默认已经创建了一个zookeeper节点,如下图所示:
至此,独立模式下部署zookeeper服务成功,接下来可以操作zookeeper啦!在下一篇博文中会介绍zookeeper的简单操作。
附录:上述配置文件中各变量详解
1、tickTime属性指定了zookeeper中的基本事件单元,以毫秒为单位。例如秒是人类的基本事件单元,人类计时以1秒、2秒、3秒.........,而zookeeper则使用我们给它设置的时间单元来计时。
2、dataDir属性指定了zookeeper产生的数据存储的位置,建议不要使用默认位置,该属性值代表的路径必须存在,zookeeper启动时找不到该路径会抛出异常。
3、clientPort属性指定了zookeeper用于监听客户端的端口
由于能力有限,如有不足和错误之处,还望不吝指出!