在Linux上安装Kafka集群(kafka_2.12-2.8.0)

记录:456

场景:在CentOS 7.9操作系统上,使用kafka_2.12-2.8.0版本,在三台机器上,安装Kafka集群。使用Zookeeper集群作为Kafka集群的节点注册与协同管理。

版本:kafka_2.12-2.8.0,zookeeper-3.5.9,CentOS 7.9,Linux kernel-5.4.218。

Zookeeper集群安装:在Linux上安装Zookeeper集群(zookeeper-3.5.9)

1.主机规划

(1)Zookeeper集群规划

目标:使用三台主机部署Zookeeper集群。

主机app161;IP:192.168.19.161;端口:22181,28001,28501。

主机app162;IP:192.168.19.162;端口:22181,28001,28501。

主机app163;IP:192.168.19.163;端口:22181,28001,28501。

(2)Kafka集群规划

目标:使用三台主机部署Kafka集群。

主机app161;IP:192.168.19.161;端口:29092。

主机app162;IP:192.168.19.162;端口:29092。

主机app163;IP:192.168.19.163;端口:29092。

2.下载kafka_2.12-2.8.0安装包

下载版本:kafka_2.12-2.8.0.tgz

下载地址:https://archive.apache.org/dist/kafka

下载命令:wget https://archive.apache.org/dist/kafka/2.8.0/kafka_2.12-2.8.0.tgz

解析:下载完成后,kafka_2.12-2.8.0.tgz包在当前目录。

3.解压kafka包到指定目录

命令:tar -zxvf /home/apps/software/kafka_2.12-2.8.0.tgz -C /home/opt/kfk

解析:解压到指定目录:/home/opt/kfk/kafka_2.12-2.8.0/。

4.创建kafka的日志目录

kafka数据和日志目录放在指定目录。

命令:mkdir -p /home/opt/kfk/kafka-logs-2.8.0

解析:日志和数据存放在此目录。

5.修改kafka配置

5.1修改server.properties

配置文件:/home/opt/kfk/kafka_2.12-2.8.0/config/server.properties

修改命令:vi server.properties

修改内容:

#kafka集群唯一标识
broker.id=0
#kafka集群的地址
broker.list=192.168.19.161:29092,192.168.19.162:29092,192.168.19.163:29092
#绑定主机IP
host.name=192.168.19.161
#本机监听端口
port=29092
#分区数量
num.partitions=3
#队列中消息持久化和日志等存放的位置
log.dirs=/home/opt/kfk/kafka-logs-2.8.0
#zookeeper集群
zookeeper.connect=192.168.19.161:22181,192.168.19.162:22181,192.168.19.163:22181

5.2修改server.properties的broker.idhost.name

在集群中server.properties的broker.id和host.name不同,其它内容相同。

(1)在app161主机的server.properties的broker.id和host.name

broker.id=0

host.name=192.168.19.161

(2)在app162主机的server.properties的broker.id和host.name

broker.id=1

host.name=192.168.19.162

(3)在app163主机的server.properties的broker.id和host.name

broker.id=2

host.name=192.168.19.163

6.把主机app161配置的kafka拷贝到其它主机

6.1远程创建目录

脚本名称:mkdir_kfk.sh

脚本内容:

#!/bin/bash
for host_name in app162 app163
do
  ssh -t root@${host_name} 'mkdir -p /home/opt/kfk/kafka_2.12-2.8.0 ;\
mkdir -p /home/opt/kfk/kafka-logs-2.8.0'
done

执行脚本:bash mkdir_kfk.sh

6.2远程拷贝kafka到其它主机

脚本名称:scp_kfk.sh

脚本内容:

#!/bin/bash
for host_name in app162 app163
do
  scp -r /home/opt/kfk/kafka_2.12-2.8.0/* root@${host_name}:/home/opt/kfk/kafka_2.12-2.8.0
  scp -r /home/opt/kfk/kafka-logs-2.8.0/* root@${host_name}:/home/opt/kfk/kafka-logs-2.8.0
done

执行脚本:bash scp_kfk.sh

7.修改主机app162和app163的server.properties

主要修改server.properties的broker.id和host.name。

(1)在app162主机的server.properties的broker.id和host.name

broker.id=1

host.name=192.168.19.162

(2)在app163主机的server.properties的broker.id和host.name

broker.id=2

host.name=192.168.19.163

8.启动zookeeper集群

操作用户切换为learn用户:su learn

启动zookeeper集群,只需启动每个节点,zookeeper会自动组成集群。

使用用户:su learn

操作目录:/home/opt/zk/zookeeper-3.5.9/bin

启动命令:sh zkServer.sh start

9.修改kafka目录所有权

在此步骤前,zookeeper相关操作使用root用户操作。生产环境一般运行zookeeper使用普通用户,修改目录所有权。

脚本名称:chown_kfk.sh

脚本内容:

#!/bin/bash
for host_name in app161 app162 app163
do
   ssh -t root@${host_name} 'chown -R learn:learn /home/opt/kfk/'
done

执行脚本:bash chown_kfk.sh

解析:把/home/opt/kfk/目录所有权赋给learn用户.

10.启动kafka集群

10.1启动kafka集群(逐台启动)

使用启动名到每台主机启动zookeeper就行。

使用用户:su learn

操作目录:/home/opt/kfk/kafka_2.12-2.8.0

启动命令: ./bin/kafka-server-start.sh  ./config/server.properties

启动命令:nohup /home/opt/kfk/kafka_2.12-2.8.0/bin/kafka-server-start.sh  /home/opt/kfk/kafka_2.12-2.8.0/config/server.properties &

11.登录zookeeper集群查看broker信息

在zookeeper集群查看kafka注册的broker。

操作目录:/home/opt/zk/zookeeper-3.5.9/bin

(1)登录命令

sh zkCli.sh -timeout 5000 -server 192.168.19.161:22181

sh zkCli.sh -timeout 5000 -server 192.168.19.162:22181

sh zkCli.sh -timeout 5000 -server 192.168.19.163:22181

(2)在zookeeper客户端执行命令

查看broker:ls /brokers

查看ids:ls /brokers/ids

查看seqid:ls /brokers/seqid

查看topics:ls /brokers/topics

日志信息:

[zk: 192.168.19.161:22181(CONNECTED) 0] ls /brokers
[ids, seqid, topics]
[zk: 192.168.19.161:22181(CONNECTED) 1] ls /brokers/ids 
[0, 1, 2]
[zk: 192.168.19.161:22181(CONNECTED) 2] ls /brokers/seqid 
[]
[zk: 192.168.19.161:22181(CONNECTED) 3] ls /brokers/topics 
[]

12.kafka基本应用

操作目录:/home/opt/kfk/kafka_2.12-2.8.0/bin

12.1创建topics

命令:sh kafka-topics.sh --create --zookeeper 192.168.19.161:22181 --replication-factor 1 --partitions 1 --topic d-20230611-city-info

日志信息:

[learn@app161 bin]$ sh kafka-topics.sh --create --zookeeper 192.168.19.161:22181 --replication-factor 1 --partitions 1 --topic d-20230611-city-info
Created topic d-20230611-city-info.

12.2启动kafka生产者

命令:sh kafka-console-producer.sh --broker-list 192.168.19.162:29092 --topic d-20230611-city-info

解析:创建生产者后,topic中写入消息。

控制台信息:

[learn@app162 bin]$ sh kafka-console-producer.sh --broker-list 192.168.19.162:29092 --topic d-20230611-city-info
>Hangzhou
>

12.3启动kafka消费者

命令:sh kafka-console-consumer.sh  --bootstrap-server 192.168.19.163:29092 --topic d-20230611-city-info

解析:创建消费者后,会从topic读出消息。

控制台信息:

[learn@app163 bin]$ sh kafka-console-consumer.sh  --bootstrap-server 192.168.19.163:29092 --topic d-20230611-city-info
Hangzhou

12.4使用kafka-topics.sh查看topics

命令:sh kafka-topics.sh --zookeeper 192.168.19.161:22181 --describe --topic d-20230611-city-info

控制台信息:

[learn@app161 bin]$ sh kafka-topics.sh --zookeeper 192.168.19.161:22181 --describe --topic d-20230611-city-info
Topic: d-20230611-city-info	TopicId: bkDheCsnTv2gGOev1feCQw	PartitionCount: 1	ReplicationFactor: 1	Configs: 
	Topic: d-20230611-city-info	Partition: 0	Leader: 0	Replicas: 0	Isr: 0

12.5使用zookeeper查看topics

连接命令:sh zkCli.sh -timeout 5000 -server 192.168.19.161:22181

查看命令:ls /brokers/topics

控制台信息:

[zk: 192.168.19.161:22181(CONNECTED) 4] ls /brokers/topics 
[__consumer_offsets, d-20230611-city-info]

以上,感谢。

2023年6月11日

你可能感兴趣的:(L02-运维部署,安装Kafka集群,Linux,Kafka集群,kafka2.12-2.8.0,Linux,运维,部署,Kafka,zk)