只需三步,使用 KRaft 建立多节点 Kafka 集群

Apache Kafka是一个用 Java 编写的开源分布式事件和流处理平台,用于处理要求苛刻的实时数据馈送。它本质上是可扩展的,具有高吞吐量和高可用性。其设计也具有容错性,每个集群可支持数百个节点。

在本教程中,你将创建一个 Kafka 集群,使用 KRaft共识协议的 Kafka 集群。你将学习如何配置节点成为集群的一部分,并观察主题分区是如何分配给不同节点的。你还将学习如何将主题分配给集群中的特定代理。

让我们开始吧!

准备工作

为了你能顺利跟上本教程的步骤,你需要这些:

  • 三个可用的 Droplets,至少需要 4GB 内存以及 2 个 CPU。如果是 Ubuntu 服务器,请按照 Ubuntu 初始服务器设置获取设置说明,或参照教程在 DigitalOcean Droplet 云主机上创建 Ubuntu 服务器

  • 一个完全注册的域名,带有指向三个 Droplets的三个子域。本教程将把它们分别称为 kafkaX.your_domain。你可以在 Namecheap 购买域名,在 Freenom 上免费获取一个,或者也可以使用你选择的域名注册商。

  • 在 Droplets 上安装和配置 Apache Kafka。有关安装说明,你可以按照 Kafka 简介教程配置。你只需完成第一步 第二步

第一步:配置 Kafka 节点

在这一步中,你将配置作为准备工作

一部分创建的三个 Kafka 服务器,使其成为同一个 KRaft 集群的一部分。有了 KRaft,节点本身就可以组织和执行管理任务,而无需依赖 Apache ZooKeeper。

配置第一个节点

你将先配置第一个节点。首先,运行以下命令停止第一个 Droplet 上的服务:

sudo systemctl stop kafka

接下来,以用户 kafka 的身份,导航到 Kafka 所在的目录,并通过运行打开其配置文件进行编辑:

vi /config/kraft/server.properties

找出以下几行:

...
# The role of this server. Setting this puts us in KRaft mode
process.roles=broker,controller

# The node id associated with this instance's roles
node.id=1

# The connect string for the controller quorum
controller.quorum.voters=1@localhost:9092
...

这三个参数将 Kafka 节点同时配置为代理和控制器,这意味着它将接收和消费数据(代理)并执行管理任务(控制器)。这种分离在大型部署中非常有用,可以将控制器分开,以提高效率和冗余。

node.id 指定了节点在群集中的 ID。这是第一个节点,所以它的 ID 是 1,因此第二个和第三个节点的 ID 将分别为 23

controller.quorum.voters 将节点 ID 映射到它们各自的地址和端口,以便通信。这里将指定所有集群节点的地址,以便每个节点都能知道其他节点。修改该行如下(config/kraft/server.properties):

...
controller.quorum.voters=1@kafka1.your_domain:9093,2@kafka2.your_domain:9093,3@kafka3.your_domain:9093
...

在此,你将列出集群中的所有三个节点及其各自的 ID。记住将 your_domain 替换为你在准备工作中设置的域名地址。

接下来,在文件中找到以下几行:

...
listeners=PLAINTEXT://:9092,CONTROLLER://:9093

# Name of listener used for communication between brokers.
inter.broker.listener.name=PLAINTEXT

# Listener name, hostname and port the broker will advertise to clients.
# If not set, it uses the value for "listeners".
advertised.listeners=PLAINTEXT://localhost:9092
...

listeners 定义了 Kafka 节点监听的地址,而 advertised.listeners 则指定了将传递给客户端以连接到节点的地址。这让你可以为客户端指定它应该使用的实际地址的子集。

修改以下代码行,用实际域名替换其中的 your_domain

...
listeners=P
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值