大多数已经使用事件流作为工具的企业,基本都运行多个Apache Kafka集群。例如,他们可能使用不同的Kafka集群进行测试与生产或不同的用例。但是,自我管理多个Kafka群集可能会给系统管理员带来挑战。
为了帮助Kafka管理员,我们在Confluent Platform 6.0中引入了集群注册表,通过它您可以在Confluent Platform元数据服务(MDS)中集中注册Kafka集群。MDS管理重要信息,例如有关Confluent Platform环境的授权数据,我们将在下面更详细地解释。
Confluent Platform还随附Confluent Control Center,用于管理和监视多个Kafka群集。通常,控制中心管理的群集集与在MDS中向“群集注册表”注册的集相同。由于群集注册表和控制中心本质上存储的是相同的信息,因此导致以下缺点:
重复的工作:用户必须在两个工具中注册Kafka集群
容易出错:不同的位置意味着同一群集的群集名称最终可能会有所不同
在Confluent Platform 6.0.1中,我们在Control Center中添加了对从Cluster Registry中读取集群信息的支持,以避免上述陷阱。
什么是控制中心?
Confluent Control Center是基于Web的工具,用于管理和监视Apache Kafka以及Confluent软件组件,例如Kafka连接器,Schema Registry和ksqlDB。控制中心提供了一个用户界面,使开发人员和操作员可以快速了解群集的运行状况。观察和控制消息,主题和架构注册表;并开发和运行ksqlDB查询。

管理和监视多个集群
您可以使用控制中心来管理和监视多个Kafka群集,而不仅仅是一个。为此,必须在控制中心配置文件中指定每个Kafka群集。在下面的示例中,我们lon-prod
为伦敦的生产流量指定了一个集群:
confluent.controlcenter.kafka.lon-prod.bootstrap.servers = localhost:9192上述集群将依次出现在Control Center UI中,如下所示:

有关详细信息,请参阅有关多群集配置的文档。
在Confluent Platform 6.0.1之前,上述方法是配置多个Kafka群集以与Confluent Control Center一起使用的唯一选择。在以下各节中,我们将说明最新版本如何通过“群集注册表”使多群集管理更加方便。
什么是群集注册表?
群集注册表基于Confluent平台元数据服务(MDS)的顶部,使您能够跟踪已安装的群集。对于不熟悉MDS的用户,Confluent平台元数据服务管理有关您的Confluent平台安装的各种元数据。具体来说,MDS:
承载群集注册表,使您能够跟踪已安装的群集
用作跨集群授权数据的记录系统
提供了一种方便的方法来管理多个群集中的审核日志配置
使用群集注册表的先决条件是首先启用RBAC。RBAC,又名基于角色的访问控制,是一种基于分配给组织内用户的角色来控制系统访问的方法。RBAC利用Confluent平台元数据服务从集中式配置上下文中配置和管理其实现。
注册集群
您可以使用curl命令或Confluent Platform CLI来注册集群。在群集注册表中注册Kafka群集时,必须指定以下信息:
群集名称: Kafka群集的名称
群集ID: Kafka群集的ID
主机名和端口号:集群的连接信息
主机和端口使用的协议:对于Kafka群集,该协议应为SASL_SSL(对于非生产型Kafka群集,该协议应为SASL_PLAINTEXT);对于Kafka Connect,ksqlDB和Schema Registry群集,该协议应为HTTP或HTTPS
使用CLI注册集群
要使用CLI注册新的Kafka集群,请执行以下操作:
首先登录到MDS集群:
confluent login --url <protocol>://<host>:<port>
通过运行以下命令来注册新的Kafka集群:
confluent cluster register \
--cluster-name <exampleKafka> \
--kafka-cluster-id <kafka-ID> \
--hosts <10.6.6.6:9000,10.3.3.3:9003> \
--protocol SASL_PLAINTEXT注册与新的Kafka集群关联的新的Connect集群:
confluent cluster register \
--cluster-name <exampleConnect> \
--kafka-cluster-id <kafka-ID> \
--connect-cluster-id <connect-ID> \
--hosts <10.6.6.7:8443> \
--protocol HTTP
注意:用您的信息替换<>中的值
有关完整的指南,请参阅Cluster Registry文档。
控制中心+群集注册表
如引言中所述,在Confluent Platform 6.0.1中,我们添加了对Control Center的支持,以从Cluster Registry中读取集群信息。这意味着控制中心可以将“群集注册表”用作其配置属性文件上群集信息的主要来源。
下图显示了启用和禁用“群集注册表”时控制中心如何发现群集信息。

在控制中心中启用群集注册表
要启用从群集注册表中读取群集信息,您可以按照以下步骤操作:
首先,在控制中心的属性文件中添加以下配置:
confluent.metadata.cluster.registry.enable=true其次,
control-center.properties
按照本指南中的说明将RBAC设置添加到文件中
在执行#1和#2之后,启动Control Center或重新启动它(如果它已经在运行)。启动后,控制中心应从“群集注册表”中读取群集信息。
注意事项:
启用群集注册表后,无需在Confluent Control Center的配置文件中指定Kafka设置。仅当我们需要指定用于与Kafka集群通信的其他属性(例如,用于加密通信的ssl。*设置)时,才需要使用该属性。
仍然需要在属性文件中配置Control Center的引导群集信息。我们不能仅从Cluster Registry分辨出哪个群集是引导群集。
迁移脚本
为了更轻松地将群集信息从控制中心迁移到群集注册表,我们在Confluent Platform中添加了以下脚本。
Control-center-export
您可以使用此脚本从控制中心导出现有群集信息:
control-center-export --cluster control-center.properties --outfile exported-cluster-info.json
导出的数据如下所示:
[
{
"clusterName": "lon-prod",
"scope": {
"path": [],
"clusters": {
"kafka-cluster": "jRCEm14eR_SadwCWqhXV-w "
}
},
"hosts": [
{
"host": "localhost",
"port": 9193
}
],
"protocol": "SASL_PLAINTEXT"
}
]
Cluster-information-migration-script
该脚本提供了一种从群集注册表导入或导出数据的方法。这是将群集信息导入群集注册表的方法:
cluster-information-migration-script -i --url http:// mds:8090 -f export-cluster-info.json要从“群集注册表”中导出群集信息,您将执行类似的操作:
cluster-information-migration-script -e --url http:// mds:8090 -f cluster-info-to-export.json从控制中心更新群集名称
控制中心始终允许您通过UI更新Kafka群集的名称,如下所示。

当同时启用了群集注册表时,也是如此。控制中心不仅可以从“群集注册表”中读取群集信息,还可以编辑群集名称。所做的更改将保留在群集注册表中。
例如,如果用户从更名lon.prod
说nyc.prod
,该结果confluent cluster list
命令是这样的:
> confluent cluster list
> Name | Type | Kafka ID | Component ID | Hosts | Protocol
>+----------------+-----------------+-----------+--------------+------------------------------+----------------+
> nyc.prod | kafka-cluster | jRCEm14eR_SadwCWqhXV-w | | localhost:9192 | SASL_PLAINTEXT
结论
总之,我们建议您利用群集注册表作为Control Center群集信息的来源。这只是第一步。我们希望将来会在集成故事中添加更多内容,请继续关注。
如果您还没有,但是现在想开始使用Cluster Registry,可以下载Confluent Platform。




