跨双EKS集群Redpanda数据复制:MirrorMaker配置参数取值疑问
问题描述
我已经在us-east-1和us-east-2区域的两个EKS集群中部署了Redpanda,且Redpanda Broker Pod均正常运行。现在需要实现两个Redpanda集群间的数据复制,计划在其中一个EKS集群部署Kafka MirrorMaker完成该任务,但目前在建立Broker连接时遇到问题。我的MirrorMaker配置文件内容如下:
#Primary and Secondary Kafka Cluster Names clusters=, #Comma Saperated list of bootstrap servers for source kafka cluster .bootstrap.servers=:9092 #Comma Saperated list of bootstrap servers for target kafka cluster .bootstrap.servers=:9092
我不确定.bootstrap.servers参数应填写Redpanda Broker的Pod IP还是节点IP?
解决方案
不要填写Pod IP或节点IP,应该使用Redpanda集群对应的Kubernetes服务(Service)地址,原因及具体操作如下:
- Pod IP不可用的原因:Pod IP是Kubernetes集群内部的临时地址,当Broker Pod重启或被调度到其他节点时,IP会发生变化,直接使用Pod IP会导致MirrorMaker频繁断开连接,无法稳定运行。
- 节点IP不合适的原因:节点IP虽然相对稳定,但跨区域EKS集群访问节点IP需要额外配置VPC peering或公网访问,且无法利用Redpanda的集群发现机制,只能访问单个Broker,无法实现集群级别的高可用连接。
正确配置步骤
- 为每个Redpanda集群创建对应的Kubernetes服务:
- 若MirrorMaker和源Redpanda在同一个EKS集群,使用ClusterIP服务即可;
- 若跨区域访问目标Redpanda集群,建议创建LoadBalancer服务,确保跨区域网络能访问到Redpanda集群。
- 修改MirrorMaker配置文件,填写服务的DNS名称+端口:
注:#Primary and Secondary Kafka Cluster Names clusters=source-cluster, target-cluster #Source Redpanda cluster bootstrap servers source-cluster.bootstrap.servers=redpanda-source-service.us-east-1.svc.cluster.local:9092 #Target Redpanda cluster bootstrap servers target-cluster.bootstrap.servers=redpanda-target-xxxxxx.us-east-2.elb.amazonaws.com:9092redpanda-source-service是同集群内Redpanda的ClusterIP服务名称,redpanda-target-xxxxxx.us-east-2.elb.amazonaws.com是跨区域Redpanda的LoadBalancer服务的公网DNS地址。
额外注意事项
- 确保两个EKS集群之间的网络连通:配置VPC peering,或者在安全组中开放9092端口的访问权限;
- Redpanda完全兼容Kafka协议,MirrorMaker的配置逻辑与对接普通Kafka集群一致,核心是使用稳定的服务地址而非临时的Pod/节点IP。
内容的提问来源于stack exchange,提问作者Dhruvin Soni
相关产品推荐
相关产品推荐

