zookeeper的安装与配置

这里不做集群,只做单台

大前提:安装java

这里省略

确定zookeeper的版本

到kafka官网确定版本

https://kafka.apache.org/downloads

这里我们选择2.7.2版本

下载源码

在包中的kafka-2.7.2-src------》gradle目录下,找到dependencies.gradle文件

versions部分可以找到zookeeper的版本

可以看到是3.5.9版本

下载与安装zookeeper

ZooKeeper是用Java编写的,需要安装Java运行环境,可以从zookeeper官网https://zookeeper.apache.org/获取zookeeper安装包,这里安装的版本是apache-zookeeper-3.5.9-bin.tar.gz。

将下载下来的安装包直接解压到一个路径下即可完成zookeeper的安装

$ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/apache-zookeeper-3.5.9-bin.tar.gz
$ tar xf apache-zookeeper-3.5.9-bin.tar.gz -C /usr/local
$ mv /usr/local/apache-zookeeper-3.5.9-bin  /usr/local/zookeeper

配置zookeeper

zookeeper安装到了/usr/local目录下,因此,zookeeper的配置模板文件为/usr/local/zookeeper/conf/zoo_sample.cfg,拷贝zoo_sample.cfg并重命名为zoo.cfg

重点配置如下内容:

$ cd /usr/local/zookeeper
$ cp conf/zoo_sample.cfg conf/zoo.cfg
$ vim conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/data
clientPort=2181
#因为只是单台,所以不需要下面这些
#server.1=10.0.0.6:2888:3888
#server.2=10.0.0.7:2888:3888
#server.3=10.0.0.8:2888:3888

每个配置项含义如下:

  • tickTime:zookeeper使用的基本时间度量单位,以毫秒为单位,它用来控制心跳和超时。2000表示2 tickTime。更低的tickTime值可以更快地发现超时问题。

  • initLimit:这个配置项是用来配置Zookeeper集群中Follower服务器初始化连接到Leader时,最长能忍受多少个心跳时间间隔数(也就是tickTime)l

  • syncLimit:这个配置项标识Leader与Follower之间发送消息,请求和应答时间长度最长不能超过多少个tickTime的时间长度

  • dataDir:必须配置项,用于配置存储快照文件的目录。需要事先创建好这个目录,如果没有配置dataLogDir,那么事务日志也会存储在此目录。

  • clientPort:zookeeper服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。

  • server.A=B:C:D:其中A是一个数字,表示这是第几个服务器;B是这个服务器的IP地址;C表示的是这个服务器与集群中的Leader服务器通信的端口;D 表示如果集群中的Leader服务器宕机了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

不是集群,也就不需要下面这一步

$ mkdir /usr/local/zookeeper/data
$ vim /usr/local/zookeeper/data/myid
1

为了保证zookeeper集群配置的规范性,建议将zookeeper集群中每台服务器的安装和配置文件路径都保存一致。

添加zookeeper的环境变量

#设置zookeeper环境变量
$ vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
#生效
$ . /etc/profile

新建zookeeper启动脚本

$ vim /etc/init.d/zookeeper.service
#!/bin/bash
#description : Start Real Server
. /etc/rc.d/init.d/functions
case $1 in
start){
/usr/local/zookeeper/bin/zkServer.sh start
};;
stop){
/usr/local/zookeeper/bin/zkServer.sh stop
};;
status){
/usr/local/zookeeper/bin/zkServer.sh status
};;
esac
$ chmod +x /etc/init.d/zookeeper.service
$ systemctl daemon-reload

启动zookeeper集群

启动Zookeeper服务:

$ cd /usr/local/zookeeper/bin
$ ./zkServer.sh start
#因为加入了环境变量了,所以可以直接执行
$ zkServer.sh start

#或者
$ service zookeeper.service start

$ jps
23097 QuorumPeerMain

Zookeeper启动后,通过jps命令(jdk内置命令)可以看到有一个QuorumPeerMain标识,这个就是Zookeeper启动的进程,前面的数字是Zookeeper进程的PID。

posted @ 2023-04-03 10:15  厚礼蝎  阅读(221)  评论(0编辑  收藏  举报