DNS propagationとは何か? なぜレコードの変更に時間がかかるのか
DNS propagationとは、DNSレコードを変更した後、異なるresolverがcacheされたコピーが期限切れになるまで依然として古い値を返す期間のことです。
DNSレコードを更新しても、変更はどこでも瞬時ではありません。世界中のresolverは古い答えをそのTTLの間cacheしており、そのタイマーが切れるまでそれを返し続けます。ドメインを新しいホストへ向けるようなDNSのcutoverを伴うデプロイは、この遅延を考慮しないと半分壊れて見えます。
cacheが遅延を引き起こす
resolverは、権威サーバーが指定したTTLの間レコードをcacheします。変更後、各resolverはcacheエントリが期限切れになるまで古い値を提供し続けるため、新しい値は徐々に展開されます。
TTLが速度を制御する
- 低いTTLは変更を素早くpropagateさせます。
- 高いTTLは効率的ですが更新が遅いです。
- 計画されたcutoverの前にTTLを下げると速くなります。
期間中の一貫性のない答え
propagate中、一部のクライアントは新しいレコードを見て、他は古いものを見ます。ある場所から検証されたデプロイは問題なく見えても、別の場所のユーザーは依然として古いホストに当たっているかもしれません。
デプロイにおけるpropagation
AやCNAMEレコードを変更するcutoverは、propagationが完了するまでサイトを断続的に古いインフラへ向けたままにすることがあります。事前にTTLを下げ、期間中は古いホストを生かしておくことでエラーを避けられます。
CIでcutoverを検証する
DNS変更の直後に新しいエンドポイントをチェックするpipelineは、古いアドレスを解決して失敗するかもしれません。TTLを待つか、権威サーバーへ直接クエリすると信頼できる答えが得られます。
propagation中の一時的なlookup
propagation中は解決が一貫性を欠くことがあり、本当の障害ではない断続的な失敗を生じます。Latchkeyのrunnerは一般的なエンドポイントへの一時的な解決の失敗をretryし、cutover中の短い不一致を滑らかにします。
重要なポイント
- DNS propagationとは、cacheが期限切れになるにつれてレコードの変更がどこでも見られるようになるまでの遅延です。
- TTLが速度を制御するため、計画されたcutoverの前にそれを下げましょう。
- propagation中の答えは一貫性を欠き、不安定なデプロイのチェックを引き起こすことがあります。