AWS MSK Kafka Broker被注册到AWS公有DNS 能否改为绑定VPC内托管区域
AWS MSK 禁用公有DNS注册并使用VPC内部托管区配置方案
完全可以禁止Kafka Broker注册到AWS公有DNS,改为使用VPC内部托管区域,具体配置方案如下:
配置步骤
- 第一步:禁用MSK集群公网访问,直接停止公有DNS注册
在Terraform的aws_msk_cluster资源配置中,将公网访问类型设为禁用即可,参考配置如下:
resource "aws_msk_cluster" "internal_kafka" { cluster_name = "internal-only-kafka" kafka_version = "2.8.1" number_of_broker_nodes = 3 broker_node_group_info { instance_type = "kafka.t3.small" client_subnets = [aws_subnet.private_az_a.id, aws_subnet.private_az_b.id, aws_subnet.private_az_c.id] security_groups = [aws_security_group.msk_internal.id] storage_info { ebs_storage_info { volume_size = 100 } } # 核心配置:网络连通性设置 connectivity_info { public_access { type = "DISABLED" # 禁用公网访问后,AWS不会再为Broker创建公有DNS记录 } vpc_connectivity {} } } # 开启VPC私有DNS主机名,MSK会自动将Broker注册到VPC默认私有DNS中 enable_vpc_dns_hostnames = true # 其他集群配置省略 }
- 第二步:确认VPC的DNS配置满足要求
部署MSK的VPC需要开启两项DNS配置,否则内网解析会失效:
resource "aws_vpc" "msk_vpc" { cidr_block = "10.0.0.0/16" enable_dns_support = true # 开启AWS DNS解析支持 enable_dns_hostnames = true # 开启内网主机名分配能力 # 其他VPC配置省略 }
- 第三步(可选):自定义注册到自建的Route53私有托管区
如果你需要将Broker注册到自己指定的私有域名下,可额外通过Route53记录资源批量绑定:
# 提前创建私有托管区 resource "aws_route53_zone" "kafka_internal" { name = "kafka.mycompany.internal" vpc { vpc_id = aws_vpc.msk_vpc.id } private_zone = true } # 批量为每个Broker创建A记录 resource "aws_route53_record" "kafka_broker" { for_each = toset(aws_msk_cluster.internal_kafka.broker_nodes[*].node_id) zone_id = aws_route53_zone.kafka_internal.zone_id name = "broker-${each.value}.kafka.mycompany.internal" type = "A" ttl = "300" records = [aws_msk_cluster.internal_kafka.broker_nodes[tonumber(each.value)].private_ip] }
内容的提问来源于stack exchange,提问作者Myles McDonnell
相关产品推荐
相关产品推荐

