问题描述
我们有2个不同的数据中心(DC-A和DC-B),它们之间没有连接。实际上,仅允许从DC-A到DC-B的入站流量。我们在DC-A中设置了架构注册表,我们希望在DC-B中运行一个副本。
有哪些选择?我可以在DC-B中以只读模式设置新实例,并可以从DC-A复制架构主题(因为允许入站复制)吗?我们永远不会在DC-B中创建新的架构,我们所需要的只是访问DC-A中的架构。
谢谢!
解决方法
这应该是可能的,尽管可能不是首选设置。如果我理解正确,则您有两个DC,而DC-B之外没有任何连接,从而允许来自DC-A的入站流量。您在DC-B中有一个Kafka集群吗?我假设您愿意,因为您谈到了复制。
如果是这样,您可以有两个“单独的”模式注册表,但其中一个本质上是DC-B中的副本。我还没有尝试过,但是它应该可以工作,并且可以使用Docker轻松测试。
将针对Kafka A正常设置主要模式注册表。您将使用复制器(Confluent Replicator,MirrorMaker等)将_schemas
主题复制到KafkaB。请注意,建议您使用在DC B中运行复制器,但是听起来这在您的网络设置中是不可能的。
然后,您将设置一个针对Kafka B运行的第二个架构注册表,该架构注册表将从Kafka B上的_schemas
主题读取。然后,您可以将DC B中的架构注册表设置为READONLY
模式。如果在注册新模式时READONLY模式没有更新,则可以在DC B模式注册表上将master.eligibility
设置为false,并且由于与主模式注册表没有任何关系,因此在尝试创建新模式时会出错。
一些资源: