一、准备
1、安装jdk,zookeeper需要Java环境,linux推荐安装参照:Linux下用二进制文件安装jdk
2、下载zookeeper:linux下下载命令:
wget 'http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.12/zookeeper-3.4.12.tar.gz'
二、提取tar文件
tar -zxvf ./zookeeper-3.4.12.tar.gz # 解压zookeeper
tar -zxvf ./zookeeper-3.4.12.tar.gz # 进入安装目录
mkdir data # 创建目录储存数据
mv ./conf/zoo_sample.cfg ./conf/zoo.cfg # 修改配置文件名称
vim ./conf/zoo.cfg # 编辑配置文件
zookeeper默认配置文件是 zoo.cfg,zoo_sample.cfg是配置文件示例。
三、配置文件
在zookeeper目录下使用vim./conf/zoo.cfg
编辑zookeeper配置文件:
# zookeeper中的一个时间单元。zookeeper中所有时间都是以这个时间单元为基础,进行整数倍配置。
# 例如,session的最小超时时间是2*tickTime。
tickTime=2000
# 允许follower连接并同步到leader的初始化连接时间
# 它以 tickTime 的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败
initLimit=10
# leader 与 follower 之间发送消息,请求和应答时间
# 如果 follower 在设置的时间内不能与 leader 进行通信,那么此 follower 将被丢弃
syncLimit=5
# Zookeeper保存数据的目录,默认情况下,Zookeeper将写数据的日志文件也保存在这个目录里。
# 这里我指向前面创建的data目录
dataDir=/usr/software/java/zookeeper-3.4.12/data
# 客户端连接server的端口,即对外服务端口,一般设置为2181
clientPort=2181
四、单节点启动
1、启动
./bin/zkServer.sh start # 启动zookeeper服务器
./bin/zkServer.sh status # 查看服务器状态
2、客户端连接
./bin/zkCli.sh -server 127.0.0.1:2181 # 连接服务器
五、zookeeper集群
1、配置
使用vim ./conf/zoo.cfg
编辑配置文件,配置自己的数据目录dataDir,我这里是dataDir=/usr/software/java/zookeeper-3.4.12/data
,然后在配置文件zoo.cfg最后加上:
# server.X=A:B:C
server.1=192.168.238.131:2888:3888
server.2=192.168.238.132:2888:3888
server.3=192.168.238.133:2888:3888
如图:
2、myid
上面server.X=A:B:C
,X-代表服务器编号,A-代表服务器ip,B和C-代表端口。
X-代表的服务器编号需要在数据目录dataDir下面新建文件myid,并在里面写上编号,具体命令:
cd ./zookeeper-3.4.12
# 如果没有data目录
mkdir ./data
vim ./data/myid
# 在myid里面添加服务器编号
需要注意的是:服务器编号必须位数字,并且在myid文件的第一行第一列,前后不能有空格,不然会出现错误。如图,是我myid后面有一个空格启动出现的错误:
3、端口
server.X=A:B:C
中A-代表服务器ip之间必须要能够ping通,不然集群就会有问题。B、C对应的2888、3888系统之间通信的端口,zookeeper有三个端口(可以修改):2181、3888、2888,这3个端口的作用:
- 2181:对cline端提供服务
- 3888:选举leader使用
- 2888:集群内机器通讯使用(Leader监听此端口)
4、命令
# 启动服务器
./bin/zkServer.sh start
# 查看服务器状态
./bin/zkServer.sh status
# 查看启动过程 出错查看
./bin/zkServer.sh start-foreground