部署 zookeeper & kafka集群

服务器准备

我这边准备了3台服务器,分别是172.26.130.15、172.26.130.16、172.26.130.17,都是装的centos7的系统,防火墙都关闭了。

配置zookeeper

下载zookeeper

https://zookeeper.apache.org/releases.html

下载你需要的版本,我下载的是 apache-zookeeper-3.5.8-bin.tar.gz (注意,他有个Source Release ,不要下这个版本。你需要下载带bin结尾的版本)

将apache-zookeeper-3.5.8-bin.tar.gz放到三台机器的opt目录下面,解压出来, 然后重命名 apache-zookeeper-3.5.8-bin 为 zookeeper。

cd /opt
tar zxvf apache-zookeeper-3.5.8-bin.tar.gz
mv apache-zookeeper-3.5.8-bin zookeeper

编辑zookeeper配置

zookeeper 会附带一个模板的配置文件,复制出来。

cd /opt/zookeeper/conf
cp zoo_sample.cfg zoo.cfg

这里主要配置一下 dataDir(zk数据目录)、服务器节点。

dataDir=/opt/zookeeper-data
server.1=172.26.130.15:2888:3888
server.2=172.26.130.16:2888:3888
server.3=172.26.130.17:2888:3888

编辑这个zoo.cfg ,三台机器都要编辑,主要这三行配置,更新或者新增下。这里你可能发现,我们有配置一个zk的数据目录,目前应该是没有的,我们新增下(三台机器都要新增)。

mkdir /opt/zookeeper-data

zk需要在数据目录里面建一个叫myid的文件,来标识自己的ID。三台服务器不一样,所以分别创建。

vi /opt/zookeeper-data/myid

#第一台机器里面放1
1

#第一台机器里面放2
2

#第一台机器里面放3
3

这个id就是我们zk配置文件最下面那个集群服务器列表的server.1 这个后面的数字。

启动zookeeper

以上步骤,zk基本上算是配置完成了。我们只需要在zookeeper目录下面运行 bin/zkServer.sh start 命令就可以启动zk了。

bin/zkServer.sh stop 命令可以停止zk。你可以在 zk根目录下面log目录里面看到日志信息。

配置Systemd Unit File来控制zk的启动停止及开机启动

编辑文件 /etc/systemd/system/zk.service ,输入配置文件。

vi /etc/systemd/system/zk.servic

输入下面配置文件

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target

[Service]    
Type=forking
WorkingDirectory=/opt/zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=default.target

大功告成,你现在可以使用systemctl命令来控制zk的启动停止了。

systemctl start zk
systemctl enable zk
systemctl status zk
systemctl stop zk

配置kafka

下载kafka

下载地址: https://kafka.apache.org/downloads ,你需要下载 Binary downloads。我下载的版本是 kafka_2.12-2.5.0

将 kafka_2.12-2.5.0.tgz 依次放到3台服务器上,然后解压出来,重命名文件夹。

tar zxvf kafka_2.12-2.5.0.tgz
mv kafka_2.12-2.5.0 kafka

修改kafka配置

kafka的配置文件是 config目录下面的server.properties。

我们这里主要配置kafka的几个配置:

  • broker.id
  • advertised.listeners
  • log.dirs
  • offsets.topic.replication.factor
  • transaction.state.log.replication.factor
  • zookeeper.connect

分别是broker的id,我们规划三台机器,三个broker,所以他们的id分别为0 、1、2。

advertised.listeners 这个是kafka丢给别的节点访问自己的地址,如果你不配置,kafka可能会用你的主机名来让别的几点访问,如果主机名没做dns的话,可能会有点麻烦了,我们为每个节点配置固定的访问地址吧。

log.dirs 这个是存储kafka的数据的目录,我们修改为/opt/kafka-logs ,这个目录不存在,我们等下要去创建。

再有个是kafka现在是topic来管理消费的offset信息,官方建议这个topic的副本数量应该至少为3个,我们这里把他改为3。

zookeeper.connect 这个比较重要,是配置我们zk服务器的列表,我们前面已经搭建了三台zk的集群,我们这里把他们配置进去。别的参数,如果你有需要的,可以自己去查询官方配置文档,来对应调优。

汇总下修改的配置大概为:

broker.id=0  #第二台机器为1 ,第三台机器为2
advertised.listeners=PLAINTEXT://172.26.130.15:9092  #其他节点,按照自己的ip配置
log.dirs=/opt/kafka-logs
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
zookeeper.connect=172.26.130.15:2181,172.26.130.16:2181,172.26.130.17:2181

不要忘记我们为每个节点配置好kafka的数据目录。

mkdir /opt/kafka-logs

到这里,我们的简单kafka配置已经完成了,可以尝试启动kafka。

启动kafka

在每个节点执行kafka启动指令。

bin/kafka-server-start.sh config/server.properties

配置Systemd Unit File来控制kafka的启动停止及开机启动

编辑配置文件 /etc/systemd/system/kafka.service

vi /etc/systemd/system/kafka.service

[Unit]
Description=Apache Kafka server (broker)
Documentation=http://kafka.apache.org/documentation.html
Requires=network.target remote-fs.target
After=network.target remote-fs.target kafka-zookeeper.service

[Service]
Type=simple
WorkingDirectory=/opt/kafka
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
TimeoutSec=30
Restart=on-failure

[Install]
WantedBy=multi-user.target

ok了,你现在可以使用systemctl命令来控制kafka的启动停止了。

systemctl daemon-reload
systemctl start kafka
systemctl enable kafka
systemctl status kafka

结束。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Scroll to Top