当前位置:   article > 正文

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

linux安装kafka集群

记录: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

修改内容:

  1. #kafka集群唯一标识
  2. broker.id=0
  3. #kafka集群的地址
  4. broker.list=192.168.19.161:29092,192.168.19.162:29092,192.168.19.163:29092
  5. #绑定主机IP
  6. host.name=192.168.19.161
  7. #本机监听端口
  8. port=29092
  9. #分区数量
  10. num.partitions=3
  11. #队列中消息持久化和日志等存放的位置
  12. log.dirs=/home/opt/kfk/kafka-logs-2.8.0
  13. #zookeeper集群
  14. 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

脚本内容:

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

执行脚本:bash mkdir_kfk.sh

6.2远程拷贝kafka到其它主机

脚本名称:scp_kfk.sh

脚本内容:

  1. #!/bin/bash
  2. for host_name in app162 app163
  3. do
  4. scp -r /home/opt/kfk/kafka_2.12-2.8.0/* root@${host_name}:/home/opt/kfk/kafka_2.12-2.8.0
  5. scp -r /home/opt/kfk/kafka-logs-2.8.0/* root@${host_name}:/home/opt/kfk/kafka-logs-2.8.0
  6. 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

脚本内容:

  1. #!/bin/bash
  2. for host_name in app161 app162 app163
  3. do
  4. ssh -t root@${host_name} 'chown -R learn:learn /home/opt/kfk/'
  5. 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

日志信息:

  1. [zk: 192.168.19.161:22181(CONNECTED) 0] ls /brokers
  2. [ids, seqid, topics]
  3. [zk: 192.168.19.161:22181(CONNECTED) 1] ls /brokers/ids
  4. [0, 1, 2]
  5. [zk: 192.168.19.161:22181(CONNECTED) 2] ls /brokers/seqid
  6. []
  7. [zk: 192.168.19.161:22181(CONNECTED) 3] ls /brokers/topics
  8. []

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

日志信息:

  1. [learn@app161 bin]$ sh kafka-topics.sh --create --zookeeper 192.168.19.161:22181 --replication-factor 1 --partitions 1 --topic d-20230611-city-info
  2. 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中写入消息。

控制台信息:

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

12.3启动kafka消费者

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

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

控制台信息:

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

12.4使用kafka-topics.sh查看topics

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

控制台信息:

  1. [learn@app161 bin]$ sh kafka-topics.sh --zookeeper 192.168.19.161:22181 --describe --topic d-20230611-city-info
  2. Topic: d-20230611-city-info TopicId: bkDheCsnTv2gGOev1feCQw PartitionCount: 1 ReplicationFactor: 1 Configs:
  3. 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

控制台信息:

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

以上,感谢。

2023年6月11日

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号