Amazon-Web-Services

是否可以在 IP 更改時強制更新 AWS 中的 Route53 DNS 解析器記憶體?

  • December 30, 2019

我在 AWS 中設置了多個 VPC,並且我的所有實例都使用預置的 IP 地址,即 -使用Elastic IP Addresses.

當任何給定實例啟動時,它會在機器上執行一個腳本(網路後),該腳本獲取實例 ID、區域 ID(來自本地配置)和區域等 - 一旦它有了這些資訊,它就會更新Route 53以更新 DNS這些實例的私有託管區域中的資訊。

這樣做的原因基本上是為了讓我可以將 DNS 用於伺服器連接字元串。我的 Web 伺服器和數據庫伺服器位於私有子網中,當 Web 伺服器連接到數據庫時,它只使用staticdns.mydomain.private映射到實例私有 IP 地址的那個。這樣,當實例重新啟動或 IP 因其他原因發生更改時,它不需要進行大量的重新配置。

這一切都很好,而且它有效 - 有一個警告。新的 DNS 映射的解析存在延遲,我不確定它有多長 - 它不是很長,但它似乎有點隨機(可能是 TTL?)。在解析器記憶體舊IP的這段時間裡,我們將收到從 Web 伺服器到數據庫的連接失敗。我更希望這個記憶體在更新時被釋放,但我什至不知道在哪裡搜尋它。

有誰知道是否有辦法在 Route 53 的專用區域內刷新 DNS 解析器記憶體?我也嘗試nscd在伺服器上使用,這似乎沒有幫助。

幾個選項和註釋…

  1. 如果伺服器位於同一個 VPC 或對等 VPC 中,則使用它們的私有 IP 進行通信,而不是公共 IP。當實例停止/重新啟動時,私有 IP 保持不變。
  2. nscd舊記錄記憶體在主機上,而不是 Route 53 中。一旦一個 IP 發生更改,您就必須刷新所有其他主機的記憶體,這需要大量自動化操作。除了一些應用程序和框架還在 nscd 之外記憶體記錄,因此在需要時很難刷新所有內容。
  3. 您可以將 DNS 記錄的 TTL 降低到 60(= 1 分鐘),這意味著解析的記錄不會被記憶體超過一分鐘。這與 AWS RDS 用於故障轉移機制的方法相同。
  4. 使用網路負載均衡器 (NLB) - 即使伺服器的實際 IP 發生變化,它也會為您的伺服器提供穩定的 IP。然而,這實在是太矯枉過正了。
  5. 使用彈性 IP。那也可以解決你的問題。當附加到正在執行的實例時,它們不會產生任何費用。
  6. 使用 AWS RDS,可能是無伺服器的Aurora,在不使用時幾乎沒有成本。所有的管理、故障轉移等都將為您完成。

引用自:https://serverfault.com/questions/997069