根据搜集的资料安装测试并整理的文档,如有不足希望不吝赐教。
目录
1、下载及解压
2、配置(&拷贝)
3、启动测试
4、异常及解决
此处以简单集群为例,单机模式测试请自行搜索。
下文安装以三台机器为例,内网地址为172.17.3.205-207。
安装集群时每台服务器配置基本一样,因此可以在每台机器上单独配置,也可以只在一台机器上安装好之后,使用scp命令,将文件夹拷贝到其他服务器,修改差异部分即可。
zookeeper安装需要jdk环境,jdk安装请自行搜索或者参考:CentOS7安装JDK
下载地址:http://mirror.bit.edu.cn/apache/zookeeper/
选择需要的版本进行下载,可以下载之后上传至主机也可以直接使用curl命令等,curl举例如下:
curl -O http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz
其中-O参数表示使用链接中的文件名作为下载之后的文件名,也可以使用curl -o filename url命令指定本地保存时的文件名。
下载完成后解压下载的文件到指定的目录,此处解压的位置为/usr/local目录。
tar zxf zookeeper-3.4.12.tar.gz -C /usr/local
解压完修改目录名(非必须):
mv zookeeper-3.4.12 zookeeper
目录结构如下:
- bin目录——zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
- conf目录——配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
- lib目录——zk依赖的包。
- contrib目录——一些用于操作zk的工具包。
- recipes目录——zk某些用法的代码示例
【注意】在集群模式下,建议至少部署3个zk进程,或者部署奇数个zk进程。如果只部署2个zk进程,当其中一个zk进程挂掉后,剩下的一个进程并不能构成一个quorum的大多数。因此,部署2个进程甚至比单机模式更不可靠,因为2个进程其中一个不可用的可能性比一个进程不可用的可能性还大。
在集群模式下,所有的zk进程可以使用相同的配置文件(是指各个zk进程部署在不同的机器上面),首先复制一个zoo_sample.cfg文件为zoo.cfg:
cp zoo_sample.cfg zoo.cfg
修改zookeeper/conf/zoo.cfg(vim conf/zoo.cfg)文件配置(截图为测试时候截图)如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
server.1=172.17.3.205:2888:3888
server.2=172.17.3.206:2888:3888
server.3=172.17.3.207:2888:3888
配置完成后,如果是在一台机器配置需要使用scp命令将目录拷贝到其他机器,如果分别配置则可以跳过本步。以从172.17.3.205拷贝到172.17.3.206为例,在172.17.3.205上执行scp命令如下(其余参考即可):
scp -r /usr/local/zookeeper [email protected]:/usr/local/
在三台机器dataDir目录(此处为/tmp/zookeeper,可自行修改)下,分别创建一个myid文件,文件内容分别只有一行,其内容为1,2,3,4。即文件中只有一个数字,这个数字即为上面zoo.cfg配置文件中指定的值。zookeeper是根据该文件来决定zookeeper集群各个机器的身份分配。
上面的例子中,在172.17.3.205-172.17.3.208上各部署一个zk进程,以构成一个zk集群,修改完成后,在每台机器上使用(以下命令均在目录/usr/local/zookeeper中使用,具体根据自己实际解压位置确定):
bin/zkServer.sh start
命令来启动zookeeper服务,待启动完成后可以使用:
bin/zkServer.sh status
命令来查看该机身份。截图如下:
完成后使用以下命令来链接一个集群:
bin/zkCli.sh -server 172.17.3.205:2181,172.17.3.206:2181,172.17.3.207:2181, 172.17.3.208:2181
成功链接后可以在最后看到类似如下输出:
从日志输出可以看到,客户端连接的是172.17.3.205:2181进程(连接上哪台机器的zk进程是随机的),客户端已成功连接上zk集群。
异常情况:配置文件修改完成并成功启动,jps也有线程显示,但是使用命令:bin/zkServer.sh status时异常,异常信息为:Error contacting service. It is probably not running.
解决方案:
首先查看系统防火墙是否关闭:
查看防火墙状态:firewall-cmd --state并关闭防火墙。
关闭防火墙:systemctl stop firewalld.service
禁止开机自启:systemctl disable firewalld.service
然后重启zookeeper查看是否成功。根据以往经验,此处为测试机器,实际设置开放zookeeper所需端口也可以解决问题,但本次未测试。
如果不是防火墙的原因,则应查看zookeeper(原始目录为zookeeper-3.4.12,此处为方便修改为zookeeper)文件目录中conf目录下是否有zoo_sample.cfg和zoo.cfg(原始只有前者,后者为配置时拷贝的文件)以及对应的位置是都都正确修改。并且查看dataDir参数指定目录(此处为/tmp/zookeeper/)中是否已经创建了myid文件且内容正确。
最后,如果问题依然存在,则需要查看zookeeper.out文件(此处为/usr/local/zookeeper目录下,具体以zookeeper实际解压或配置位置为准),以进行错误排查,方便对症下药。
END