gpt4 book ai didi

amazon-web-services - 当 Auto Scaling 启动新实例时自动更新 Route 53

转载 作者:行者123 更新时间:2023-12-04 01:40:12 25 4
gpt4 key购买 nike

我在我的环境中使用 Amazon EC2 Auto Scaling,每当 Auto Scaling 触发新实例时,我需要在 Route 53 中手动更改 IP。我想自动执行此过程。

尝试使用 Lifecycle Hooks但没有看到 Route 53 的任何更新。

最佳答案

您可以使用此用户数据脚本在实例启动时更新 Route 53 记录。

它从实例元数据中收集所需信息。

#!
INSTANCE_ID=$(curl http://169.254.169.254/latest/meta-data/instance-id)
PRIVATE_IP=$(curl http://169.254.169.254/latest/meta-data/local-ipv4)
DOMAIN_NAME=$(aws route53 get-hosted-zone --id "${HOSTED_ZONE_ID}" --query 'HostedZone.Name' --output text | sed 's/.$//')

hostnamectl set-hostname hostname."${DOMAIN_NAME}"

aws route53 change-resource-record-sets --hosted-zone-id "${HOSTED_ZONE_ID}" --change-batch '{"Changes": [{"Action": "UPSERT","ResourceRecordSet": {"Name": "'"$(hostname)"'","Type": "A","TTL": 60,"ResourceRecords": [{"Value": "'"${PRIVATE_IP}"'"}]}}]}'

您需要为 ${HOSTED_ZONE_ID} 插入一个值来标识要更新的记录。

编辑:

如果您有多个由 ASG 提供的实例,您可以开发一个脚本来命名新主机。即:

  1. 使用 ASG 将“角色”TAG 应用到 ASG 提供的每个实例,即 role=webserver
  2. 在用户数据脚本中列出所有带有 TAG role=webserver 的实例
  3. 检查 TAG“节点”的返回实例
  4. 如果没有,则此实例为 node1 -> hostname webserver-node1.${DOMAIN_NAME}
  5. 如果有的话,解析TAG“节点”来检查哪个实例被ASG替换了。即结果你可以有 node=node1, node=node3, node=node4。 node2 丢失,所以这个实例是 node2 -> hostname webserver-node2.${DOMAIN_NAME}
  6. 在用户数据的末尾,您必须向此实例添加“节点”TAG,因此下一个不会命名为现有实例。

关于amazon-web-services - 当 Auto Scaling 启动新实例时自动更新 Route 53,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com