堕落不振功业废,勤耕不辍日月新

CentOS 7 安装配置kafka

运维 hailen 215℃

通常来说, logstash的处理能力有限, 为了防止高峰期日志数量太高导致kafka挂掉, 一般使用kafka来缓存日志消息.

kafka依赖zookeeper, 因此需要先安装配置zookeeper, 再安装配置kafka.

系统环境:

系统统一采用CentOS 7.8 64bit

IP地址 Zookeeper DATA目录 kafka内网调用域名
172.29.4.168 /data/zookeeper/data kafka1.zhukun.net
172.29.4.169 /data/zookeeper/data kafka2.zhukun.net
172.29.4.170 /data/zookeeper/data kafka3.zhukun.net

1, 部署并配置Zookeeper

以下操作需要同时在3台服务器上操作

$ wget http://mirror.bit.edu.cn/apache/zookeeper/stable/apache-zookeeper-3.5.8-bin.tar.gz
$ tar zxvf apache-zookeeper-3.5.8-bin.tar.gz
$ mv apache-zookeeper-3.5.8-bin /data/
$ ln -s /data/apache-zookeeper-3.5.8-bin /data/zookeeper && mkdir /data/zookeeper/data

准备zk配置文件

$ vim /data/zookeeper/zoo.cfg    # 写入如下配置
dataDir=/data/zookeeper/data
clientPort=2181
maxClientCnxns=0
admin.enableServer=false
# admin.serverPort=8080
initLimit=10
syncLimit=5
server.1=172.29.4.168:2888:3888
server.2=172.29.4.169:2888:3888
server.3=172.29.4.170:2888:3888

准备系统服务

$ vim /usr/lib/systemd/system/zookeeper.service    # 写入如下配置
[Unit]
Description=Zookeeper
Requires=network.target
After=network.target
 
[Service]
Type=forking
ExecStart=/data/zookeeper/bin/zkServer.sh start
ExecStop=/data/zookeeper/bin/zkServer.sh stop
ExecReload=/data/zookeeper/bin/zkServer.sh restart
 
[Install]
WantedBy=multi-user.target

准备myid文件(需要在3台服务器上各自执行)

$ echo "1" > /data/zookeeper/data/myid    # 仅在172.29.4.168上执行
 
$ echo "2" > /data/zookeeper/data/myid    # 仅在172.29.4.169上执行
 
$ echo "3" > /data/zookeeper/data/myid    # 仅在172.29.4.170上执行

启动服务

$ systemctl daemon-reload
$ systemctl start zookeeper
$ systemctl enable zookeeper

验证服务启动成功

$ /data/zookeeper/bin/zkServer.sh status

2, 部署并配置kafka

以下操作需要同时在3台服务器上操作

$ wget http://apache.stu.edu.tw/kafka/2.4.1/kafka_2.13-2.4.1.tgz
$ tar zxvf kafka_2.13-2.4.1.tgz
$ mv kafka_2.13-2.4.1 /data/ && ln -s /data/kafka_2.13-2.4.1 /data/kafka
 
$ cp /data/kafka/config/server.properties /data/kafka/config/server.properties.ori    # 备份原始配置文件
$ grep -v ^$ /data/kafka/config/server.properties.ori | grep -v ^# > /data/kafka/config/server.properties    # 清理配置文件
 
# 配置kafka
$ sed -i '/^zookeeper.connect=/czookeeper.connect=172.29.4.168:2181,172.29.4.169:2181,172.29.4.170:2181' /data/kafka/config/server.properties
$ sed -i '/^log.retention.hours=/clog.retention.hours=72' /data/kafka/config/server.properties
$ sed -i '/^log.dirs=/clog.dirs=/var/log/kafka' /data/kafka/config/server.properties
 
# 下面的命令仅在单个机器上执行
$ sed -i 's/broker.id=0/broker.id=1/g' /data/kafka/config/server.properties    # 仅在172.29.4.168上执行
 
$ sed -i 's/broker.id=0/broker.id=2/g' /data/kafka/config/server.properties    # 仅在172.29.4.169上执行
 
$ sed -i 's/broker.id=0/broker.id=3/g' /data/kafka/config/server.properties    # 仅在172.29.4.170上执行
 
# 确保上面的配置都修改成功
$ egrep -e '(broker.id|log.retention.hours|log.dirs|zookeeper.connect)' /data/kafka/config/server.properties    # 确保上面的改动全部生效

准备系统服务

$ vim /usr/lib/systemd/system/kafka.service    # 写入如下内容
[Unit]
Description=Apache Kafka
Requires=zookeeper.service
After=zookeeper.service
 
[Service]
Type=simple
ExecStart=/data/kafka/bin/kafka-server-start.sh /data/kafka/config/server.properties
ExecStop=/data/kafka/bin/kafka-server-stop.sh
 
[Install]
WantedBy=multi-user.target

启动服务

$ systemctl daemon-reload
$ systemctl start kafka
$ systemctl enable kafka

3, 测试kafka & 一些有用命令

# 创建一个topic
$ /data/kafka/bin/kafka-topics.sh --zookeeper 172.29.4.168:2181,172.29.4.169:2181,172.29.4.170:2181 --create --replication-factor 3 --partitions 3 --topic mytopic111
 
# 列出所有topic
$ /data/kafka/bin/kafka-topics.sh --zookeeper 172.29.4.168:2181,172.29.4.169:2181,172.29.4.170:2181 --list
 
# 查看某个topic的详细信息
$ /data/kafka/bin/kafka-topics.sh --zookeeper 172.29.4.168:2181,172.29.4.169:2181,172.29.4.170:2181 --describe --topic mytopic111
 
# 测试生产/消费
$ /data/kafka/bin/kafka-console-producer.sh --broker-list 172.29.4.168:9092 --topic mytopic111                                            # 模拟生产者发送消息(仅在172.29.4.168上运行)
$ /data/kafka/bin/kafka-console-consumer.sh --bootstrap-server 172.29.4.168:9092,172.29.4.169:9092,172.29.4.170:9092 --topic mytopic111   # 模拟消费者消费消息(仅在172.29.4.169上运行)
# 此时在生产者端随便输入内容并回车, 能在消费者端看到消息内容
 
# 删除某个topic
$ /data/kafka/bin/kafka-topics.sh --zookeeper 172.29.4.168:2181,172.29.4.169:2181,172.29.4.170:2181 --delete --topic mytopic111

参考文档:
centos7部署kafka+zookeeper集群
在 CentOS 上安裝 Apache Kafka cluster

转载请注明:我是IT » CentOS 7 安装配置kafka

喜欢 (2)or分享 (0)