使用 CDK 将私有 DNS 记录映射到 EC2 实例
Posted
技术标签:
【中文标题】使用 CDK 将私有 DNS 记录映射到 EC2 实例【英文标题】:Map private DNS records to EC2 instances with CDK 【发布时间】:2022-01-15 22:57:27 【问题描述】:我正在使用 aws-cdk
运行 7 个 ec2
实例,这些实例将是 MongoDB
节点。我可以使用他们的安全组和东西创建它们,但我不明白如何在私有 DNS 中映射它们。
for (inst i = 1; inst<8; inst++)
new ec2.Instance(this, 'mongodb' + i,
instanceType: new ec2.InstanceType('t3.medium'),
vpc: defaultVpc,
securityGroup: mongoGroup ,
)
部署后名称将为$mongodb1/InstanceRole.Arn, $mongodb2/InstanceRole.Arn,...
如何为cdk
中的这些实例设置我的私人DNS
记录?我想创建一个配置,其中所有节点都将像这样列出
database1.test.com
database2.test.com
database3.test.com
...
代替
ec2-203-3-156-25.compute-1.amazonaws.com
ec2-201-1-191-21.compute-1.amazonaws.com
ec2-208-0-112-03.compute-1.amazonaws.com
...
因为如果我重新部署或重新启动,IP 会改变,我需要再次更改完整的配置,而且这些名称也不容易记住。我想我需要创建私有托管区域,然后将每个IP地址分配给CNAME
,但不知道是否可以在cdk中自动完成?
【问题讨论】:
一种方法是设置privateIpAddress
。另一个是使用网络负载均衡器并将所有实例添加到目标组。
tnx,有什么建议可以我如何在 cdk 中实现目标组的负载均衡器?欣赏。
【参考方案1】:
您可以为此使用network load balancer (NLB)。
类似于:
import * as elbv2 from '@aws-cdk/aws-elasticloadbalancingv2';
import * as elasticloadbalancingv2_targets from '@aws-cdk/aws-elasticloadbalancingv2-targets';
// vpc = ...
const lb = new elbv2.NetworkLoadBalancer(this, 'lb', vpc, internetFacing: false );
const listener = lb.addListener('listener', port: 27017 );
listener.addTargets('target',
targets: [
new elasticloadbalancingv2_targets.InstanceIdTarget(instance1.instanceId),
new elasticloadbalancingv2_targets.InstanceIdTarget(instance2.instanceId),
// ... more ...
]
);
// get domain name from lb.loadBalancerDnsName
【讨论】:
以上是关于使用 CDK 将私有 DNS 记录映射到 EC2 实例的主要内容,如果未能解决你的问题,请参考以下文章
将 AWS Route 53 DNS 记录静态链接到 EC2 实例
使用 Route 53 服务将 DNS 名称分配给 EC2 实例的最简单方法是啥?