介绍
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。
安装 kafka
集群,需要把集群状态保存在 zookeeper
上,所以需要先安装 zookeeper
。
环境准备
主机名 | 系统 | IP地址 | zk 端口 | kafka 版本 | kafka 端口 |
---|---|---|---|---|---|
node01 | Centos7.5 | 172.16.1.11 | 2181 | 2.12 | 9092 |
node02 | Centos7.5 | 172.16.1.12 | 2181 | 2.12 | 9092 |
node03 | Centos7.5 | 172.16.1.13 | 2181 | 2.12 | 9092 |
zookeeper 集群
zookeeper 的集群安装之前文章已经介绍过, CentOS 7 Zookeeper 介绍 及 集群安装,本次也同样使用该环境;
kafka 集群安装
下载地址:
下面的操作,需要在三台机器上郡
[root@node01 ~]# cd /opt/soft/
[root@node01 soft]# tar xf kafka_2.12-2.2.1.tgz
[root@node01 soft]# mv kafka_2.12-2.2.1 /opt/kafka-2.12
[root@node01 soft]# ln -s /opt/kafka-2.12 /opt/kafka
[root@node01 soft]# ls -ld /opt/kafka*
lrwxrwxrwx 1 root root 15 Mar 3 16:03 /opt/kafka -> /opt/kafka-2.12
drwxr-xr-x 6 root root 89 May 14 2019 /opt/kafka-2.12
服务管理脚本
cat > /etc/systemd/system/kafka.service <<EOF
[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 zookeeper.service
[Service]
Type=simple
User=kafka
Group=kafka
Environment=JAVA_HOME=/opt/jdk1.8.0_192
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
ExecStop=/opt/kafka/bin/kafka-server-stop.sh
[Install]
WantedBy=multi-user.target
EOF
配置
需要注意,三个服务配置文件 server.properties
中的 broker.id
和 listeners
需要根据服务器做相应的修改 不能相同,否则集群会报错,要注意修改。
cd /opt/kafka/config/
cp server.properties server.properties.default
cat > server.properties <<EOF
broker.id=1
listeners=PLAINTEXT://172.16.1.11:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/kafka-2.12/data
num.partitions=30
num.recovery.threads.per.data.dir=2
offsets.topic.replication.factor=3
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.flush.interval.messages=10000
log.flush.interval.ms=1000
log.retention.hours=144
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=172.16.1.11:2181,172.16.1.12:2181,172.16.1.13:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
EOF
启动测试
注意:修改好 配置文件server.properties
中的 broker.id
和 listeners
不同之后,相继启动三个服务;
systemctl enable kafka
systemctl start kafka
systemctl status kafka
● kafka.service - Apache Kafka server (broker)
Loaded: loaded (/etc/systemd/system/kafka.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2020-02-20 21:29:28 CST; 1 weeks 4 days ago
Docs: http://kafka.apache.org/documentation.html
Process: 30768 ExecStop=/opt/kafka-2.12/bin/kafka-server-stop.sh (code=exited, status=0/SUCCESS)
Main PID: 30784 (java)
CGroup: /system.slice/kafka.service
└─30784 /opt/jdk1.8.0_192/bin/java -Xmx2G -Xms2G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt...