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平台,包含所有核心组件。

效果如下:

相关推荐
五岳13 分钟前
DTS按业务场景批量迁移阿里云MySQL库实战(上):技术选型和API对接
mysql·阿里云·dts
Jackeyzhe34 分钟前
从零学习Kafka:配置参数
kafka
小二李1 小时前
第11章 nestjs服务端开发:登录鉴权
运维·服务器
i建模2 小时前
如何在Arch Linux中重设忘记的root密码
linux·运维·服务器
chatexcel3 小时前
元空AI+Clawdbot:7×24 AI办公智能体新形态详解(长期上下文/自动化任务/工具粘合)
运维·人工智能·自动化
编程彩机3 小时前
互联网大厂Java面试:从分布式架构到大数据场景解析
java·大数据·微服务·spark·kafka·分布式事务·分布式架构
kida_yuan3 小时前
【Linux】运维实战笔记 — 我常用的方法与命令
linux·运维·笔记
何中应5 小时前
vmware的linux虚拟机如何设置以命令行方式启动
linux·运维·服务器
江畔何人初5 小时前
kubernet与docker的关系
linux·运维·云原生
bubuly6 小时前
软件开发全流程注意事项:从需求到运维的全方位指南
大数据·运维·数据库