安装环境
1.从官方网站下载最新的稳定版本,目前是zookeeper-3.4.13
http://mirrors.shu.edu.cn/apache/zookeeper/stable/
2.三台Linux系统服务器:
server.1=10.255.29.29
server.2=10.255.29.30
server.3=10.255.29.31
3.将下载的zookeeper-3.4.13压缩包放在/home/bak/software目录下
4.软件依赖:jdk1.8.x
配置主服务器
1.解压缩
cd /home/bak/software
tar -zxvf zookeeper-3.4.13.tar.gz
mv zookeeper-3.4.13 /opt/
2.创建软连接
以后对zookeeper的所有操作都在软连接的目录 /zookeeper下进行,软连接就相当于windows系统下的快捷方式
cd /opt
ln -s zookeeper-3.4.13 /zookeeper
3.配置zoo.cfg文件
将/opt/zookeeper/conf目录下的zoo-sample.cfg文件修改为zoo.cfg。
修改配置信息:
vi /opt/zookeeper/conf/zoo.cfg
其中:
initLimit=10: 对于从节点最初连接到主节点时的超时时间,单位为tick值的倍数。
syncLimit=5:对于主节点与从节点进行同步操作时的超时时间,单位为tick值的倍数。
dataDir=/opt/zookeeper: 用于配置内存数据库保存的模糊快照的目录。即刚刚创建的data文件夹就是在此目录中。文件信息都存放在data目录下。
clientPort=2181: 表示客户端所连接的Zookeeper服务器所监听的端口号,默认是2181。即zookeeper对外提供访问的端口号。
server.A=B:C:D中的A是一个数字,表示这个是第几号服务器,B是这个服务器的IP地址,C第一个端口用来集群成员的信息交换,表示这个服务器与集群中的leader服务器交换信息的端口,D是在leader挂掉时专门用来进行选举leader所用的端口。
4.配置环境变量
vim /etc/profile
#设置软连接的路径
export ZOOKEEPER_HOME=/opt/zookeeper
#${ZOOKEEPER_HOME}/bin:用于在任何文件目录都可以启动
#${ZOOKEEPER_HOME}/conf:用于稍后配置的自启动
PATH=$PATH:${ZOOKEEPER_HOME}/bin:${ZOOKEEPER_HOME}/conf
保存后,输入source /etc/profile
命令使修改生效。
5.配置myid文件
创建data和logs文件夹
mkdir -p /opt/zookeeper/{data,logs}
命令解释
-p 递归创建
创建myid文件
在zoo.cfg文件中配置的dataDir路径中创建myid文件,使用下面的命令,将数字“1”写入myid文件,这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A)
echo "1" > /opt/zookeeper/data/myid
配置从服务器
1.复制主服务器的zookeeper到从服务器
输入:
scp -r /opt/zookeeper-3.4.13 root@10.255.29.31:/opt/
点击回车,会提示输入10.255.29.31服务器,root用户的密码,再点击回车,主服务器的zookeeper就会全部复制到从服务器10.255.29.31
2.创建软链接
ln -s zookeeper-3.4.13 zookeeper
3.修改myid文件
这个命令是覆盖修改,即myid文件中的数据直接由“1”变成了“2”
echo "2" > /opt/zookeeper/data/myid
第二个从服务器(10.255.29.31)重复如上操作
scp -r /opt/zookeeper-3.4.13 root@10.255.29.32:/opt/
echo "3" > /opt/zookeeper/data/myid
启动zookeeper集群
1.启动每一个服务器上的zookeeper节点
#一主两从都是以下命令启动
cd zookeeper
bin/zkServer.sh start
2.启动后查看每个节点的状态
/opt/zookeeper/bin/zkServer.sh status
app02:
app01:
app03:
zookeeper集群连接测试
/opt/zookeeper/bin/zkCli.sh -server 10.255.29.30
/opt/zookeeper/bin/zkCli.sh -server 10.255.29.31
出现如图所示的结果,代表测试成功(因为搭建10.255.29.29-30集群的时候忘记截图,下面的图片是第二次搭建zookeeper集群时的截图,请大家自动忽略ip)
安装过程中遇到的问题
1.第一次启动成功,把三台服务器的zookeeper全部关闭,再次启动的时候,zookeeper启动失败
查看zookeeper.out日志记录文件:
[root@app02 zookeeper]# cat zookeeper.out
nohup: failed to run command ?.app/jdk/bin/java?. No such file or directory
首先,查看JDK是否正确安装
java -version
其次,在/opt/zookeeper/bin/zkServer.sh中,添加jdk的环境变量,如下所示:
重启zookeeper,问题解决。
最后,如果问题依旧没有解决,那么,你应该和我遇到了相同的问题。
jdk的环境变量,写的是软链接的路径,但是你忘记创建jdk的软链接
2.ZooKeeper集群安装后无法启动ZooKeeper JMX enabled by default
[root@cicd ~]# /opt/zookeeper/src/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.13/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@cicd ~]# /opt/zookeeper/src/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.13/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
解决方法:
1.首先考虑防火墙的问题,关闭防火墙,否则三台机器之间无法正常通信
2.其次是/opt/zookeeper/data/myid文件中的数值是否与/opt/zookeeper/conf/zoo.cfg文件中的server.1=ip:2888:3888中的1匹配。
10.255.30.212服务器为例:
myid文件:
zoo.cfg文件: