Confluent 单节点部署配置

Confluent它不是一个单一工具,而是基于 Apache Kafka 打造的 "Kafka 全家桶 / 一站式流数据平台",目的是解决纯 Kafka 部署、使用、运维中的各种痛点,让企业能更便捷地落地流数据架构。

具体可以参考查看阿里云的:https://www.alibabacloud.com/help/zh/apsaramq-for-kafka/cloud-message-queue-confluent-edition/perform-basic-operations-in-control-center

核心关系:Confluent Platform vs Apache Kafka

Apache Kafka 是一个开源的分布式流处理平台(核心是消息队列 + 流存储),但它只是一个 "核心引擎",就像一辆汽车的发动机。

Confluent Platform 5.2.4 是以 Apache Kafka 2.2.x 为核心引擎(版本强绑定,Confluent 的版本号和 Kafka 不是一一对应,但 5.2.4 内置了稳定版的 Kafka 2.2),额外封装、集成了一系列配套工具和组件的完整解决方案,相当于给发动机配上了底盘、车身、方向盘、导航等,直接变成一辆能上路的完整汽车。

Confluent 5.2.4 的核心价值(为什么企业不用纯 Kafka 而选它)

纯 Kafka 存在一些 "使用门槛":比如数据格式不统一、对接外部系统(数据库 / ES / 文件系统)麻烦、缺乏可视化运维工具、没有企业级的安全和监控能力等。

Confluent 5.2.4 就是为了解决这些问题而生,核心价值可以总结为:

  1. 降低使用门槛:提供开箱即用的配套工具,不用自己二次开发对接各种系统;
  2. 提升运维效率:提供可视化界面、监控告警、一键部署等能力,减少运维成本;
  3. 增强企业级能力:补充安全认证、数据校验、高可用保障等纯 Kafka 缺失的企业级特性;
  4. 完善生态闭环:从数据采集、传输、存储、处理、消费到监控,形成完整的流数据链路。

Confluent 5.2.4 的组件围绕 Kafka 形成完整生态,核心组件可以分为 "核心必备" 和 "生态配套" 两类,下面逐个通俗解释:

(一)核心必备组件(相当于汽车的核心部件,缺一不可)

  1. Apache Kafka(内置核心) 这是整个 Confluent 平台的 "心脏",负责核心的消息接收、存储、转发。可以把它理解为一个 "分布式、高容量、高可靠的消息中转站":

    • 上游系统(比如电商网站、物流系统)产生的实时数据(订单创建、物流轨迹更新),先发送到 Kafka;
    • 下游系统(比如数据分析平台、报表系统、风控系统)从 Kafka 中订阅并消费这些数据;
    • 它的核心优势是能扛住高并发、数据不丢失、支持海量数据存储和回溯。
  2. **Confluent Schema Registry(模式注册表)**这是 Confluent 最核心的特色组件之一,解决纯 Kafka 的 "数据格式混乱" 问题,相当于一个 "流数据的格式说明书仓库"。

    • 纯 Kafka 中的消息是 "二进制字节流",发送方和接收方如果没有约定好格式,接收方根本无法解析数据(就像两个人说话没有共同语言);
    • Schema Registry 采用 Avro(主流)、Protobuf 等结构化数据格式,要求发送方先把数据格式(Schema,比如订单数据包含订单号、金额、创建时间等字段)注册到这个仓库;
    • 接收方消费数据时,先从仓库获取对应的格式说明书,再解析数据,保证了 "发送方和接收方数据格式一致",同时还能支持格式的兼容升级(比如后续给订单添加 "支付方式" 字段,不影响老的接收方正常工作)。
  3. **Confluent Rest Proxy(REST 代理)**解决 "非 Java 语言对接 Kafka 麻烦" 的问题,相当于一个 "Kafka 的 HTTP 翻译官"。

    • 纯 Kafka 的原生客户端主要支持 Java/Scala 等 JVM 语言,而 Python、PHP、Go、前端等语言对接 Kafka 时,要么客户端不成熟,要么开发成本高;
    • Rest Proxy 把 Kafka 的核心操作(发送消息、订阅消费消息、查询主题信息等)封装成 HTTP/REST API;
    • 任何支持 HTTP 请求的语言 / 系统,都可以通过简单的 GET/POST 请求操作 Kafka,不用关心 Kafka 的原生协议,大大降低了跨语言对接门槛。

下边 就是针对Confluent的一个单机测试部署记录:

准备需求:

1,server:centos 7

安装包 :http://packages.confluent.io/archive/5.2/confluent-5.2.4-2.11.tar.gz

1. 解压安装包

复制代码
tar -zxvf /opt/package/confluent-5.2.4-2.11.tar.gz -C /home/kafka/.local/
mv /home/kafka/.local/confluent-5.2.4 /home/kafka/.local/confluent
cd /home/kafka/.local/confluent

2. 创建数据目录

复制代码
sudo mkdir -p /data/confluent/{zookeeper,kafka-logs,control-center}
sudo chown -R kafka:kafka /data/confluent

3. 修改配置文件(单节点192.168.123.129)

3.1 Zookeeper配置

复制代码
vim /home/kafka/.local/confluent/etc/kafka/zookeeper.properties

# 数据存放目录
dataDir=/data/confluent/zookeeper
clientPort=2181
maxClientCnxns=0
initLimit=5
syncLimit=2
# 单节点ZK配置
server.1=192.168.123.129:2888:3888

创建myid文件:

复制代码
echo 1 > /home/kafka/.local/confluent/etc/kafka/myid

修改confluent启动脚本,确保myid被正确复制:

复制代码
vim /home/kafka/.local/confluent/bin/confluent

config_zookeeper()方法块最后一行,添加:

复制代码
cp ${confluent_conf}/kafka/myid $confluent_current/zookeeper/data/

3.2 Kafka配置

复制代码
vim /home/kafka/.local/confluent/etc/kafka/server.properties

broker.id=0
advertised.listeners=PLAINTEXT://192.168.123.129:9092
num.network.threads=8
num.io.threads=8
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
fetch.purgatory.purge.interval.requests=100
producer.purgatory.purge.interval.requests=100
# Kafka数据存储位置
log.dirs=/data/confluent/kafka-logs
num.partitions=12
num.recovery.threads.per.data.dir=1
message.max.bytes=10000000
replica.fetch.max.bytes=10485760
auto.create.topics.enable=true
auto.leader.rebalance.enable=true
# 重要:单节点环境需将复制因子设置为1
default.replication.factor=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.flush.interval.messages=20000
log.flush.interval.ms=10000
log.flush.scheduler.interval.ms=2000
log.retention.check.interval.ms=300000
log.cleaner.enable=true
log.retention.hours=48
# ZK连接地址
zookeeper.connect=192.168.123.129:2181
zookeeper.connection.timeout.ms=6000
zookeeper.sync.time.ms=2000
confluent.metrics.reporter.bootstrap.servers=192.168.123.129:9092
confluent.metrics.reporter.topic.replicas=1
confluent.support.metrics.enable=true
confluent.support.customer.id=anonymous
delete.topic.enable=true
group.initial.rebalance.delay.ms=0

3.3 Kafka-REST配置

复制代码
vim /home/kafka/.local/confluent/etc/kafka-rest/kafka-rest.properties

id=kafka-rest-server-001
schema.registry.url=http://192.168.123.129:8081
zookeeper.connect=192.168.123.129:2181
bootstrap.servers=PLAINTEXT://192.168.123.129:9092
port=8082
consumer.threads=8
access.control.allow.methods=GET,POST,PUT,DELETE,OPTIONS
access.control.allow.origin=*

3.4 KSQL配置

复制代码
vim /home/kafka/.local/confluent/etc/ksql/ksql-server.properties

ksql.service.id=default_
bootstrap.servers=192.168.123.129:9092
listeners=http://0.0.0.0:8088
ksql.schema.registry.url=http://192.168.123.129:8081
ksql.sink.partitions=4

3.5 Confluent Control Center配置

复制代码
vim /home/kafka/.local/confluent/etc/confluent-control-center/control-center-dev.properties

bootstrap.servers=192.168.123.129:9092
zookeeper.connect=192.168.123.129:2181
confluent.controlcenter.rest.listeners=http://0.0.0.0:9021
# 单节点唯一ID
confluent.controlcenter.id=1
confluent.controlcenter.data.dir=/data/confluent/control-center
confluent.controlcenter.connect.cluster=http://192.168.123.129:8083
confluent.controlcenter.ksql.url=http://192.168.123.129:8088
confluent.controlcenter.schema.registry.url=http://192.168.123.129:8081
# 重要:单节点环境下复制因子设为1
confluent.controlcenter.internal.topics.replication=1
confluent.controlcenter.internal.topics.partitions=2
confluent.controlcenter.command.topic.replication=1
confluent.monitoring.interceptor.topic.partitions=2
confluent.monitoring.interceptor.topic.replication=1
confluent.metrics.topic.replication=1
confluent.controlcenter.streams.num.stream.threads=10

3.6 Schema Registry配置

复制代码
vim /home/kafka/.local/confluent/etc/schema-registry/schema-registry.properties

listeners=http://0.0.0.0:8081
kafkastore.bootstrap.servers=PLAINTEXT://192.168.123.129:9092
kafkastore.topic=_schemas
# 重要:单节点环境下复制因子设为1
kafkastore.topic.replication.factor=1
debug=false

3.7 Connect配置

复制代码
vim /home/kafka/.local/confluent/etc/kafka/connect-distributed.properties

bootstrap.servers=192.168.123.129:9092
group.id=connect-cluster
key.converter=org.apache.kafka.connect.storage.StringConverter
key.converter.schemas.enable=false
value.converter=io.confluent.connect.avro.AvroConverter
value.converter.schemas.enable=true
# 重要:单节点环境下schema registry也要指向本机
value.converter.schema.registry.url=http://192.168.123.129:8081
config.storage.topic=connect-configs
offset.storage.topic=connect-offsets
status.storage.topic=connect-statuses
# 重要:单节点环境下复制因子设为1
config.storage.replication.factor=1
offset.storage.replication.factor=1
status.storage.replication.factor=1
internal.key.converter=org.apache.kafka.connect.json.JsonConverter
internal.value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter.schemas.enable=false
internal.value.converter.schemas.enable=false
rest.port=8083
rest.advertised.host.name=192.168.123.129
plugin.path=/home/kafka/.local/confluent/share/java,/usr/share/java

4. 启动服务

4.1 全部服务启动

复制代码
# 启动所有服务
bin/confluent start

# 检查服务状态
bin/confluent status

4.2 服务启动顺序(如需单独启动)

复制代码
# 1. 启动Zookeeper
bin/zookeeper-server-start -daemon etc/kafka/zookeeper.properties

# 2. 启动Kafka
bin/kafka-server-start -daemon etc/kafka/server.properties

# 3. 启动Schema Registry
bin/schema-registry-start -daemon etc/schema-registry/schema-registry.properties

# 4. 启动Kafka REST
bin/kafka-rest-start -daemon etc/kafka-rest/kafka-rest.properties

# 5. 启动Connect
bin/connect-distributed -daemon etc/kafka/connect-distributed.properties

# 6. 启动KSQL Server
bin/ksql-server-start -daemon etc/ksql/ksql-server.properties

# 7. 启动Control Center
bin/control-center-start -daemon etc/confluent-control-center/control-center-dev.properties

5. 验证访问

6. 常用操作

复制代码
# 查看日志目录
confluent current

# 列出所有连接器
confluent list connectors

# 创建文件源连接器示例
curl -X POST http://192.168.123.129:8083/connectors -H "Content-Type: application/json" -d '{
  "name": "file-source-test",
  "config": {
    "connector.class": "FileStreamSource",
    "tasks.max": "1",
    "file": "/tmp/test.txt",
    "topic": "file-source-test"
  }
}'

# 查看连接器状态
confluent status file-source-test

7. 重要注意事项

  1. 复制因子调整:单节点部署时,所有复制因子(replication factor)必须设置为1,否则服务将无法启动。
  2. 资源分配:单节点运行所有服务需要足够的系统资源(建议至少8GB内存,4核CPU)。
  3. 生产环境:此配置仅适用于开发/测试环境,在生产环境中应使用多节点集群以确保高可用性。
  4. 防火墙设置:确保相关端口(2181, 9092, 8081-8083, 8088, 9021)在防火墙中开放。

完成以上配置后,就像我一样在测试的192.168.123.129上成功部署完整的Confluent平台,包含所有核心组件。

效果如下:

相关推荐
EMTime3 小时前
Docker运行OpenWRT
运维·docker·容器
lolo大魔王3 小时前
Linux 文件系统超全面详解(原理、结构、挂载、分区、inode、日志、管理命令)
linux·运维·服务器
zyl837216 小时前
Docker 使用手册
运维·docker·容器
古月方枘Fry6 小时前
MGRE实验
运维·服务器
stolentime6 小时前
FreeDomain 本地开发环境快速搭建指南
运维·服务器·网络
bush48 小时前
嵌入式linux学习记录四
linux·运维·学习
lihao lihao9 小时前
软硬链接
linux·运维·服务器
TOWE technology9 小时前
智能安防监控系统如何做好防雷?——视频信号SPD综合应用方案解析
运维·服务器·防雷产品·信号保护·信号防雷·spd
楼田莉子9 小时前
Docker学习:Docker介绍及其架构介绍
运维·后端·学习·docker·容器·架构
大明者省10 小时前
IIS 端口绑定正常访问的原理说明与常见误区澄清
运维·服务器·笔记