博主
258
258
258
258
专辑

第二十二节 centos环境使用Docker安装Kafka指南

亮子 2023-05-22 03:35:12 1304 0 0 0

1、kafka介绍

1、kafka是什么?
Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,具有高性能、持久化、多副本备份、横向扩展能力。

2、kafka的工作原理[去耦合]
Kafka采用的是订阅-发布的模式,消费者主动的去kafka集群拉取消息,与producer相同的是,消费者在拉取消息的时候也是找leader去拉取。

3、kafka存在的意义:去耦合、异步、中间件的消息系统。

2、kafka安装

1)、创建一个网络

# app-kafka:网络名称
# –driver:网络类型为bridge

docker network create app-kafka --driver bridge

图片alt

2)、安装zookeeper

# Kafka依赖zookeeper所以先安装zookeeper
#  docker pull bitnami/zookeeper:3.7
# -p:设置映射端口(默认2181)
# -d:后台启动
# zookeeper:3.4.14

docker run -d --name zookeeper-server \
    -p 2181:2181 \
    --network app-kafka \
    -e ALLOW_ANONYMOUS_LOGIN=yes \
    bitnami/zookeeper:3.7

图片alt

3)、查看zookeeper运行状态

docker ps

图片alt

4)、安装Kafka

# 安装并运行Kafka,
# docker pull bitnami/kafka:3.2.0
# –name:容器名称
# -p:设置映射端口(默认9092 )
# -d:后台启动
# ALLOW_PLAINTEXT_LISTENER任何人可以访问
# KAFKA_CFG_ZOOKEEPER_CONNECT链接的zookeeper
# KAFKA_ADVERTISED_HOST_NAME当前主机IP或地址(重点:如果是服务器部署则配服务器IP或域名否则客户端监听消息会报地址错误)
# -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.131:9092 这个IP一定要是外网IP,不要设置为内网IP

docker run -d --name kafka-server \
    --network app-kafka \
    -p 9092:9092 \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
    -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.80.131:9092 \
    bitnami/kafka:3.2.0

图片alt

5)、查看kafka运行状态

docker ps

图片alt

6)、kafka-manager图形化管理工具(不好用)

# kafka-manager 只是一个简单的页面,浏览kafka中的信息,没有实际操作功能。
# -p:设置映射端口(默认9000)
# –name:容器名称
# -ZK_HOSTS:zookeeper服务地址,多个可用逗号隔开

docker run --name kafka-manager -d  \
    --network app-kafka \
	-p 9000:9000  \
	-e ZK_HOSTS="zookeeper-server:2181" \
	sheepkiller/kafka-manager

查看kafka-manager容器日志(可省略)

docker logs -f kafka-manager

通过浏览器访问主机地址,如果是服务器则注意要放开9000端口
http://172.17.0.6:9000/

7)、kafka-map图形化管理工具(好用)

# 图形化管理工具
# 访问地址:http://服务器IP:9101/
# DEFAULT_USERNAME:默认账号 admin
# DEFAULT_PASSWORD:默认密码 admin

# Git 地址:https://github.com/dushixiang/kafka-# map/blob/master/README-zh_CN.md

docker run -d --name kafka-map \
    --network app-kafka \
    -p 9101:8080 \
    -v /opt/kafka-map/data:/usr/local/kafka-map/data \
    -e DEFAULT_USERNAME=admin \
    -e DEFAULT_PASSWORD=admin \
    --restart always dushixiang/kafka-map:latest

图片alt

图片alt

图片alt

图片alt

8)、验证kafka是否可用

(1)查看zookeeper中有关kafka的配置

docker exec -it zookeeper-server /bin/bash

cd /opt/bitnami/zookeeper/bin
./zkCli.sh -server 127.0.0.1:2181

[zk: 127.0.0.1:2181(CONNECTED) 7] ls /
[admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 9]

图片alt

(2)进入kafka容器查看

# 进入kafka容器
docker exec -it  kafka-server bash
# 创建主题
kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic mytest

# 查看主题
kafka-topics.sh --list --bootstrap-server localhost:9092

# 发送消息
kafka-console-producer.sh --broker-list localhost:9092 --topic mytest
# 接收消息
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic mytest --from-beginning

图片alt

图片alt

参考文章