如何利用集群链接建立一个无缝和安全的混合数据桥

164 阅读7分钟

你的企业很有可能正在向云端迁移。但是,如果你在企业内部的数据中心运营业务应用程序,你就会亲身体会到,通往云端的旅程充满了安全风险、网络挑战和协调的相互依赖性的危险。在私人数据中心和公共云供应商之间有严密的防火墙,使连接成为一种挑战。

许多企业已经发现,管理和跟踪其内部数据中心的现有服务之间的点对点连接和依赖关系是一个挑战。将系统转移到云端只会使这些问题更加严重。安全问题,如确保部署之间一致的授权和认证,仍然是一个关键的考虑。其他因素包括间歇性的连接问题、系统故障,以及需要支持点对点云间通信的系统数量。

Apache Kafka®为您的组织提供了通过使用事件流来解耦点对点连接的手段。生产者将重要的业务事实写入你的主题,而消费者则自行选择他们想为自己的用例消费的那些内容。这种模式在单个数据中心内运行得非常好,但在扩展到云中时,可以得到更多的帮助。

Hybrid cloud and on-premises architecture
由于点对点连接的混乱,混合云具有挑战性

这就是为什么我们很高兴向您展示集群连接是如何成为一个易于使用和可重复的解决方案,以解决您的混合架构的安全和网络障碍。Cluster Linking--目前在Confluent Platform 7.0Confluent Cloud中普遍可用--是一种内置功能,可以实时地将数据、主题配置和结构以及消费者偏移从一个Confluent集群镜像到另一个。在您数据中心的Confluent Platform集群和公共云的Confluent Cloud集群之间的集群链接是一个单一的安全、可扩展的混合数据桥,可被数百个主题、应用程序和数据系统使用。

Cluster Linking是为云计算重新发明的地理复制。它是内置的、无缝的、可靠的、安全的、可扩展的,并且易于使用。

  • 内置:Cluster Linking直接内置于经纪商,因此你不需要任何额外的基础设施或软件,如MirrorMaker 2。这简化了你在混合云中管理的移动部件的数量。
  • 无缝:Cluster Linking从一个集群到另一个集群创建相同的 "镜像主题"。镜像主题是其源主题的字节对字节的复制,直到偏移量。这种全局一致性意味着,当你把消费者应用程序从数据中心移到云端时,它将不必翻译其偏移量。相反,它可以准确地接上它离开的地方,实现无缝过渡,没有重复的、无序的信息或复杂的自定义客户端代码。
  • 安全:你的安全团队可能有一个DMZ来保护他们的内部网络,并且不允许从公有云传入连接。因此,集群连接将连接的方向与数据流的方向分开。你的数据中心可以发起与Confluent云的连接,因此你的防火墙不需要打开任何漏洞,就可以让公共云将连接送入你的数据中心。Cluster Linking支持所有Confluent平台的认证和授权机制--Kerberos、OAuth等,而且Confluent平台的凭证永远不会离开企业内部。这些原则将使你的安全团队更容易通过审计。
  • 可靠的:集群连接可以容忍高网络延迟和不稳定性,这在将企业内部环境连接到云端时很常见,尤其是当 "数据中心 "实际上是一个工厂车间或运输船时。如果两个集群失去了连接,那也没关系;当它们重新连接时,集群连接将自动恢复,并同步任何错过的数据。
  • 可扩展性:随着你的数据量的增加,集群连接的扩展性也很好。它是内置在代理中的,所以它可以随着你的集群的现有容量而扩展。与其他Kafka复制工具(如MirrorMaker 2)不同,Cluster Linking不会对消息进行解压和重新压缩,所以数据的移动更加高效。
  • 易于使用:只需一条CLI或REST API命令就可以创建一个集群链接。然后,你可以创建镜像主题,同步消费者偏移量,并通过几个命令将镜像主题提升为可写主题。由于数百个不同的应用程序和数据系统都可以使用一个集群链接,这些简单的命令可以加速你的团队的应用开发时间或云迁移。但不要相信我们的话,让我们看看混合集群链接在实践中是什么样的。

Cluster link hybrid data bridge between on-premises and the cloud
集群链接可以成为你在企业内部和云之间的混合数据桥梁

行动中的链接

要创建一个混合集群链接,将数据从企业内部发送到云端,你需要一个Confluent Platform 7.0(或更高版本)集群。你还需要一个Confluent Cloud集群--请看文档中支持的Confluent Cloud集群类型。如果你还没有一个Confluent Cloud集群,你可以点击几下就启动一个。Confluent平台集群需要与Confluent云集群进行网络连接,但不一定要反过来。

为了创建一个连接到Confluent Cloud的集群链接,并且连接来自企业内部,你需要一个 "源发起 "的集群链接。建立一个源发起的链接需要你在每个集群上创建两个半的单一集群链接。

你首先要创建Confluent Cloud的那一半集群链接。你将需要一个名为cloud-dst-link.config 的文件,其中包含这两个简单的配置,它告诉集群链接它是 "源启动 "集群链接的目标方:

link.mode=DESTINATION
connection.mode=INBOUND

这方面的CLI命令看起来像这样:

confluent kafka link create onprem-to-cloud \
    --config-file cloud-dst-link.config \
    --source-cluster-id  \
    --source-bootstrap-server 0

因为连接来自企业内部,云集群只需要知道集群链接的名称和Confluent平台集群的ID。

把Confluent Platform和Confluent Cloud集群的安全凭证放到Confluent Platform集群的一个文件中。Confluent平台的凭证永远不会离开平台,将用于创建集群链接的一半。Confluent Cloud的凭证会被加密并安全地发送到Confluent Cloud进行认证,从而创建集群链接的另一半。这个文件,在这里我们称之为CP-src-link.config ,看起来像这样:

link.mode=SOURCE
connection.mode=OUTBOUND

bootstrap.servers=
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule \
      required username='' \
      password='';

local.listener.name=SASL_PLAINTEXT
local.security.protocol=SASL_PLAINTEXT
local.sasl.mechanism=SCRAM-SHA-512
local.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule \
      required username="cp-to-cloud-link" password="1LINK2RUL3TH3MALL";

前两行告诉集群链接,它是一个由源发起的集群链接的源端。中间部分告诉集群链接在哪里找到云集群以及如何进行认证。底部是集群链接用来从Confluent平台集群读取主题的安全凭证。在本例中,我们为集群链接创建了一个名为cp-to-cloud-link 的用户,并为其提供了集群上所有主题的READDESCRIBE_CONFIGS 的ACL。

最后,你可以用这个CLI命令创建集群链接的Confluent Platform的一半:

kafka-cluster-links --create --link onprem-to-cloud \
    --config-file CP-src-link.config \
    --cluster-id  \
    --bootstrap-server localhost:9092 \
    --command-config CP-command.config

就这样,你现在有了一个混合集群链接你可以使用这个集群链接将数据从企业内部地理复制到云端,在目标集群上创建镜像主题。镜像主题是源集群中主题的相同、只读的副本。当你创建一个镜像主题时,集群链接将开始同步其源主题的任何历史数据:

Historical data is synced from source to mirrored topic
历史数据从源主题同步到镜像主题

然后,当源集群上有新的消息时,集群链接将把它们实时同步到目标集群的镜像主题。用这个命令在目的地创建一个镜像主题:

ccloud kafka mirror create  --link onprem-to-cloud

所有这些命令也都可以通过Confluent平台Confluent云的REST API调用来实现,这可以方便你编写脚本并与你的工具整合。

总结

您可以使用集群链接(Cluster Linking)在您的内部Confluent Platform集群和Confluent Cloud集群之间创建一个安全、无缝的混合数据桥,现在Confluent Platform 7.0和Confluent Cloud普遍可用。这将帮助您的企业执行混合云战略或从数据中心迁移到云。Cluster Linking是内置的、全局一致的,并为混合架构的网络和安全要求而设计。