【问题标题】:Avoiding race conditions with Route53 upserts使用 Route53 upserts 避免竞争条件
【发布时间】:2017-08-28 09:34:39
【问题描述】:

我需要以编程方式更新包含多个 IPv4 条目的 A 记录。

每当 EC2 实例启动/终止时都会触发更新。

我想到的方法是 read 当前记录,附加 IPv4 地址,然后 upsert 新记录到 Route53。但是,这会导致可能的竞争条件。

为了避免竞争条件,实现这一目标的最佳方法是什么?

(p.s. ELB 不是一个选项——我需要 DNS 循环负载平衡。)

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-sdk aws-cli amazon-route53


    【解决方案1】:

    Route53's multivalued answers 是这里的正确方法。

    您创建多个 A 记录(每个 IP 一个)并使用您在创建记录时指定的 SetIdentifier (see API) 来区分它们,而不是拥有一个 A 记录。 SetIdentifier 可以是任何你喜欢的东西,记录的唯一 ID 实际上变成了record_name:set_identifier

    Route53 会在响应客户端请求时自动将这些记录合并为一条记录(因此它会返回一个 A 记录,其中包含您指定为单独记录的所有 IP 集)。

    这意味着您可以原子地 upsert/delete 您的个人 IP 地址,避免在尝试更新包含多个值的 A 记录时面临的竞争条件。


    顺便说一句,Route53 可以选择对每条记录进行健康检查,并且只返回健康的:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-30
      • 2010-09-25
      • 2017-12-02
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2019-06-12
      相关资源
      最近更新 更多