内容概要
一、单节点安装
二、单节点伪分布式安装(不建议)
三、完全分布式安装
四、常见问题
准备工作
1、由于zookeeper使用java编写,所以需要java运行环境,这也就意味着,在安装zookeeper之前需要安装jdk。
2、下载zookeeper并上传到服务器。
开始安装
Linux目录结构
在这里插入图片描述
一、单节点安装
1、解压
tar -zxvf zookeeper-3.4.5.tar.gz -C ../app
查看解压结果
2、进行配置
由于配置时需要指定zookeeper数据存放位置,日志文件[可选]存放位置。因此如果需要进行数据存放的位置不存在的话,需要新建目录。
我新建的目录
1
、
z
o
o
k
e
e
p
e
r
数
据
文
件
存
放
到
z
o
o
k
e
e
p
e
r
安
装
目
录
(
解
压
目
录
)
/
d
a
t
a
\color{red}{1、zookeeper数据文件存放到zookeeper安装目录(解压目录)/data}
1、zookeeper数据文件存放到zookeeper安装目录(解压目录)/data
2
、
日
志
文
件
存
放
到
z
o
o
k
e
e
p
e
r
安
装
目
录
(
解
压
目
录
)
/
l
o
g
s
\color{red}{2、日志文件存放到zookeeper安装目录(解压目录)/logs}
2、日志文件存放到zookeeper安装目录(解压目录)/logs
所以需要在安装目录下执行
mkdir data
mkdir logs
进入conf目录,拷贝一份配置文件,并重命名为zoo.cfg
cp zoo_sample.cfg zoo.cfg
编辑配置文件vi zoo.cfg
# 指定数据存放位置
dataDir=/root/app/zookeeper-3.4.5/data
# 指定日志文件存放位置
dataLogDir=/root/app/zookeeper-3.4.5/logs
# zookeeper默认端口2181
clientPort=2181
# 单节点部署zookeeper可以不用配置,但是建议配置上
# 因为如果以后想要扩展为分布式的话,会方便一些
server.id=IP:2888:3888
cd到data目录,新建一个myid文件,将配置文件中的id(server.{id})写入myid
echo 1 > myid
3、测试安装结果
启动zookeeper
./zkServer.sh start
查看启动状态
./zkServer.sh status
二、单节点伪分布式安装(不建议)
停止掉单节点安装后启动的zookeeper
./zkServer.sh stop
1、拷贝zookeeper
将安装的zookeeper重命名为zookeeper1,然后拷贝多几份作为伪分布式安装用
mv zookeeper-3.4.5/ zookeeper1
cp -r zookeeper1/ zookeeper2/
cp -r zookeeper1/ zookeeper3/
2、修改配置文件
分别将里面的配置文件中的参数修改为正确的值
# zookeeper1
# 修改dataDir
dataDir=/root/app/zookeeper1/data
# 修改dataLogDir
dataLogDir=/root/app/zookeeper1/logs
# 修改客户端端口
clientPort=2181
# 修改zookeeper列表
server.1=IP:2888:3888
server.2=IP:4888:5888
server.3=IP:6888:7888
# ############################
# zookeeper2
dataDir=/root/app/zookeeper2/data
dataLogDir=/root/app/zookeeper2/logs
clientPort=2182
server.1=IP:2888:3888
server.2=IP:4888:5888
server.3=IP:6888:7888
# ############################
# zookeeper3
dataDir=/root/app/zookeeper3/data
dataLogDir=/root/app/zookeeper3/logs
clientPort=2183
server.1=IP:2888:3888
server.2=IP:4888:5888
server.3=IP:6888:7888
3、设置myid
在对应的zookeeper安装目录数据文件夹下,将各自的id保存到myid文件中
由于zookeeper是拷贝过来的,所以可能存在之前的数据文件,需要删掉。
然后设置myid
4、测试安装结果
启动zookeeper
zkServer.sh start
查看zookeeper状态
zkServer.sh status
使用jps查看启动的zookeeper进程
三、完全分布式安装
全分布式安装和单节点伪分布式安装几乎一样。因为是在不同的服务器,所以客户端端口可以都使用相同的2181,而且服务器列表的端口也可以使用相同的2888,3888。
四、常见问题
1、使用zkCli连接zookeeper
如果不加任何参数,默认连接到本地2181
./zkCli.sh -timeout 5000 -server IP:PORT
连接上zookeeper后,使用命令时常常忘记有哪些命令,这时可以使用help
2、访问不了zookeeper
可能原因:
(1)防火墙没有关闭,或防火墙开启着但是端口没有打开
(2)端口被占用,zookeeper压根没有启动起来
(3)没有安装jdk,zookeeper没有启动起来
解决办法:
(1)如果是内网服务器,为了避免麻烦,可以直接将防火墙关闭;
如果不能够关闭防火墙,则需要手动打开相应端口。
(2)在不了解占用端口的是什么应用,或不了解应用有什么功能的情况下,建议则修改zookeeper客户端端口。
(3)安装jdk
3、获取值时无权限,设置ACL失败
删除掉该path,使用zkCli连接上zookeeper,手动创建一个相同path
4、zookeeper在各服务器正常启动,但是却一直报没有运行
如果已经排除了是防火墙的问题,那么可能就是配置server列表时使用的不是ip,而是主机名
ps:因为这个问题,坑了我不少时间,,。。检查了防火墙已经关闭,配置文件也看不出有啥毛病。就是一直提示没有在运行,多番尝试后,换成主机名,最终zookeeper集群正常工作。