Zookeeper下载
Zookeeper官网及其下载地址
https://zookeeper.apache.org/
https://zookeeper.apache.org/releases.html#download
本次实战下载的是Apache ZooKeeper 3.8.0,下面这个地址是最终下载地址:
https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
在linux下下载,可使用如下命令:
curl -O https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
安装zookeeper
zookeeper有三种安装方式:单机模式、集群模式、伪集群模式。我们今天操作单机模式和伪集群模式,集群模式只是在不同的机器上,和伪集群模式的安装差不多。
解压下载的包
tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz
复制4份刚刚解压的文件,并重命名为zookeeper-3.8.0、 zookeeper-3.8.0-1、zookeeper-3.8.0-2、zookeeper-3.8.0-3,同时把刚刚解压的文件删除(节省空间)。
cp -r apache-zookeeper-3.8.0-bin zookeeper-3.8.0
cp -r apache-zookeeper-3.8.0-bin zookeeper-3.8.0-1
cp -r apache-zookeeper-3.8.0-bin zookeeper-3.8.0-2
cp -r apache-zookeeper-3.8.0-bin zookeeper-3.8.0-3
rm -rf apache-zookeeper-3.8.0-bin
zookeeper-3.8.0是我们的单机模式,进入到zookeeper-3.8.0的conf目录
cd zookeeper-3.8.0/conf/
创建一个zoo.cfg的配置文件
vi zoo.cfg
文件内容如下:
//心跳时间,为了确保client-server连接存在的,以毫秒为单位,最小超时时间为两个心跳时间。
tickTime=2000
//用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里
dataDir=/var/www/data/zookeeper/zookeeper-3.8.0/data
//用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争。
dataLogDir=/var/www/data/zookeeper/zookeeper-3.8.0/dataLog
//客户端监听端口。
clientPort=2181
启动单机模式的zookeeper,先进入zookeeper-3.8.0的bin目录
cd zookeeper-3.8.0/bin/
执行如下命令:
./zkServer.sh start
如果想要关闭,输入:
./zkServer.sh stop
检查是否启动成功
./zkServer.sh status
显示如下说明启动成功:
Using config: /var/www/data/zookeeper/zookeeper-3.8.0/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: standalone
zookeeper-3.8.0-1、zookeeper-3.8.0-2、zookeeper-3.8.0-3是我们的微集群模式,zookeeper-3.8.0-1的zoo.cfg如下:
//心跳时间,为了确保client-server连接存在的,以毫秒为单位,最小超时时间为两个心跳时间。
tickTime=2000
//用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里
dataDir=/var/www/data/zookeeper/zookeeper-3.8.0-1/data
//用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争。
dataLogDir=/var/www/data/zookeeper/zookeeper-3.8.0-1/dataLog
//客户端监听端口。
clientPort=2182
//服务器上所有IP均监听
quorumListenOnAllIPs=true
//初始化连接时最长能忍受多少个心跳时间间隔数
initLimit=5
//这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度
syncLimit=2
//集群配置(此处注意端口不能和clientPort一致)
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zookeeper-3.8.0-2的zoo.cfg如下:
//心跳时间,为了确保client-server连接存在的,以毫秒为单位,最小超时时间为两个心跳时间。
tickTime=2000
//用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里
dataDir=/var/www/data/zookeeper/zookeeper-3.8.0-2/data
//用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争。
dataLogDir=/var/www/data/zookeeper/zookeeper-3.8.0-2/dataLog
//客户端监听端口。
clientPort=2183
//服务器上所有IP均监听
quorumListenOnAllIPs=true
//初始化连接时最长能忍受多少个心跳时间间隔数
initLimit=5
//这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度
syncLimit=2
//集群配置(此处注意端口不能和clientPort一致)
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
zookeeper-3.8.0-3的zoo.cfg如下:
//心跳时间,为了确保client-server连接存在的,以毫秒为单位,最小超时时间为两个心跳时间。
tickTime=2000
//用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里
dataDir=/var/www/data/zookeeper/zookeeper-3.8.0-3/data
//用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争。
dataLogDir=/var/www/data/zookeeper/zookeeper-3.8.0-3/dataLog
//客户端监听端口。
clientPort=2184
//服务器上所有IP均监听
quorumListenOnAllIPs=true
//初始化连接时最长能忍受多少个心跳时间间隔数
initLimit=5
//这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度
syncLimit=2
//集群配置(此处注意端口不能和clientPort一致)
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890
三个zookeeper的不同在于dataDir、dataLogDir、clientPort,由于在同一个机器上,端口要不同。其中server.x=[hostname]:nnnnn[:nnnnn]表示:
①server.x:server.x的x要写在myid文件中,决定当前机器的id,
②第一个port用于连接leader,
③第二个用于leader选举。
④如果electionAlg为0,则不需要第二个port。
⑤hostname也可以填ip。
接下来要分别在三个zookeeper的dataDir下创建myid文件,zookeeper-3.8.0-1、zookeeper-3.8.0-2、zookeeper-3.8.0-3各自的myid文件的内容对应是1、2、3。
启动后使用以下命令查看状态
./zkServer.sh status
集群模式和伪集群模式类似,只是在不同机器上,端口配置可相同。