【问题标题】:Map private DNS records to EC2 instances with CDK使用 CDK 将私有 DNS 记录映射到 EC2 实例
【发布时间】: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 中实现目标组的负载均衡器?欣赏。

标签: amazon-web-services aws-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

【讨论】:

    猜你喜欢
    • 2018-09-02
    • 2014-12-23
    • 1970-01-01
    • 2021-06-10
    • 2013-08-24
    • 2020-04-18
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    相关资源
    最近更新 更多