web-dev-qa-db-ja.com

ダウンタイムなしで「A」レコードを「CNAME」に変更する

私はドメイン名(現在dyn.comでホストされています)に、本番IPアドレスを指すAレコードがあります。

Amazon EC2に移動し、ロードバランサーを使用しています。ロードバランサーは定期的にIPアドレスを変更する可能性があるため、CNAMEレコードの代わりにAを使用することをお勧めします。

残念ながら、この移行をシームレスに行うことができないようです。まずAレコードを削除してから、CNAMEを追加する必要があります。これにより、新しいレコードが伝播するときにダウンタイムが発生する可能性があります。

ゼロ(または最小限)のダウンタイムでこれをスムーズに行う方法はありますか?

7
James Davies

ここでを使用できます。とはいえ、ウェスリーは賢い人なので、彼の言うことを聞いてください。私はそれを言っても給料はもらえませんが、いつかそれを変えたいと思っています。

example.com.というゾーンのwwwというレコードを変更しようとしていると仮定します。

  • ゾーンに一時的なワイルドカードAレコード(*)を作成します。変更をコミットします。それをテストし、ワイルドカードレコードが期待どおりに動作し、NXDOMAIN応答を上書きしていることを確認します。
  • www Aレコードを削除します。コミット。
  • 新しいCNAMEレコードを追加します。コミット。もう一度テストしてください。
  • 満足したらワイルドカード*レコードを削除します。
  • ウェズリーのアドバイスに従って、このようなフープを飛び越えることを強制しないDNSプロバイダーを見つけてください。

これはその行での評判なので、ワイルドカードの処理方法についてWikipediaが何を言っているかについて クイックリフレッシャー を取得することをお勧めします。 ワイルドカードレコードはドットを通過しないため、削除するレコードと同じドット数のワイルドカードを追加していることを確認してください。 (適切なRFC用語が必要な場合は、ラベルと呼ばれます)

また、これは言うまでもありませんが、これらのテストはすべて、信頼できるサーバーに対して直接実行する必要があります。 (ないテストを実行しているコンピューター用に構成されたデフォルトのリゾルバーに対して)

11
Andrew B

Amazon EC2に移動し、ロードバランサーを使用しています。Aレコードの代わりにCNAMEを使用することをお勧めします

ApexドメインにCNAMEを設定しないでください。 DNSホストが自己尊重している場合、それは許可されません。それが恥ずかしがり屋でぬるぬるしたホストなら、それはできますが、あなたの魂の一部を失います(とにかくEC2を使用しているので、あなたの魂への懸念はすでに最小限になっているようです)。

Quoth Amazon:

CNAMEレコードを使用してゾーンの頂点をElastic Load Balancingインスタンスに関連付けることはできません。 DNSルールでは、ゾーンの頂点(example.comなど)でのCNAMEレコードの作成が禁止されています。たとえば、example.comドメイン名を所有している場合、foo.example.comサブドメイン名にはCNAMEレコードを使用できますが、example.comゾーンの頂点には使用できません。

次へ...

...ロードバランサは定期的にIPアドレスを変更する場合があるため。

いいえ、ロードバランサーは定期的にIPアドレスを変更するべきではありません。それは彼らの要点のようなものです。それらは同じままで、消費者とコンテンツインフラストラクチャの間の抽象化レイヤーとして機能します。ロードバランサーのIPアドレスが定期的に変更される可能性があると誰かから言われた場合は、明確にするよう依頼してください。

Amazon ELBが用意されているため、ドメインをELBの名前にCNAMEすることが目標です。私は今状況を理解しています。

残念ながら、この移行をシームレスに行うことができないようです。まずAレコードを削除してから、CNAMEを追加する必要があります。これにより、新しいレコードが伝播するときにダウンタイムが発生する可能性があります。

マルチキャストの悪意がなく、BGPの奇行さえもない場合、DNS自体はダウンタイムの変更をゼロにすることを意図していません。ただし、レコードのTTL値を許容される最小の時間まで下げることで、ダウンタイムの可能性を最小限に抑えることができます。通常60秒ですが、DNSホストがそれを低くすることを許可していない場合は、ピッチフォークがバフになってしまいます。とにかく、レコードを可能な限り低い数にドロップしますが、その後、以前のTTLの値がどれだけ長くなるかを待ちます。以前のTTL値が3600秒であった場合、TTL値を60秒に変更してから1時間待ちます。

長く待ったら、AレコードをCNAMEに変更できます。ダウンタイムは約60秒です。

ダウンタイムがゼロの同様のスイッチオーバーを実行しましたが、同期はデータストアで実行されたため、あいまいなカットオーバー期間中に、古いシステムと新しいシステムにフィルター処理されたすべてのトランザクションがバックエンドマジックと同期されました。多くのユーザーとお金を扱っていない限り、通常は正当化されるよりも多くの時間と労力がかかります。

TTLはすでに60秒ですが、SOA NXDOMAIN TTLは1800秒です

...これは、ドメインでNXDOMAIN応答を返す何かが発生した場合にのみ問題になります。これは、レコードをAからCNAMEに変更した場合には発生しません。

そのため、既存のAレコードを削除すると、最大30分ダウンする可能性があります(私が知る限り)

いいえ、あなたは削除していないので、変更しており、合理的なDNSホストはAレコードの削除とCNAMEの追加を一挙にコミットするため、どの要求に対してもNXDOMAINで応答しません。

Dynがゾーンへのすべての変更を、ゾーンファイルに個別にコミットするアトミックアクションにする場合、はい、NXDOMAIN応答を返す可能性があります。これはDynが行うにはひどいことですが、まったく驚くことではありません。

dyn.comで変更できないようです。

私の意見($ 5と組み合わせると、スターバックスでコーヒーを1杯飲めます):DynはひどいDNSホストです。

7
Wesley