「DNS浸透言うな」を知った経緯
レジストラ&ホスティングサービスのDNSサーバからAWSのRoute53にDNSサーバを置き換える仕事があった。
その時DNSサーバ移行に際して気をつけることを調べていた時にちょうどGMOクラウドサポートのtwitterが炎上しており自分もよくわからなかったので調べた。
「DNS浸透言うな」の本質
DNS浸透待ちですって言ってるやつだいたいただの設定ミスだよね。
嘘ついてることになるし、DNSの理解が深まらないのでそう言うのやめようと言うこと。
「DNSサーバ(権威サーバ)引越しの正しい手順」
基本的にDNSがよくわかる教科書の引越し手順を読めばいい。今回はレジストラの移行に伴うところだけ以下手順では追記している。
1. ゾーンデータの移行
最初にDNSサーバ上で動くサービスを止めずに移行先DNSサーバ上で動くように移行を進める必要がある。
- ゾーンデータのレコードのキャッシュを短くする(86,400s -> 300s)
- ゾーンデータのレコードの向き先を移行先のものにする
上記2つの対応をすることで、既存のキャッシュが切れたタイミングでサービスの移行は完了する。
1.の対応をしないと並行運用期間が長くなり、メンテ時間内に収まらないといった不都合が起きる。
上記1.の例で言えばメンテ期間を3hもらっているとしたら、元のキャッシュだと1日古いサービスへのキャッシュが残ることになり間に合わない。よって、キャッシュを5分にして変更後1日経つのを待ってキャッシュ5分の設定が反映されるようにする。
※ 移行先レコードのTTLを短くしておくことで移行元に戻さなければいけない不具合があったときにすぐ戻せるようにしておくといい。
並行運用期間から完了までの時間
移行元ゾーンデータのTTL値に依存する。
2. レジストラを変更
権威サーバは移行元のままで、レジストラを変更する。
レジストラによっては2週間近くかかることもあるが、実際にはレジストラ移転の承認をしてもらってから2,3日で完了した。
移行申請してから完了までの時間
何度か経験のある人からしてもだいたい2,3日で完了するとのこと。
また移行元レジストラに承認してもらう必要があるので、コミュニケーションコストが+1週間程度かかった。
3. 権威サーバの移行
- 親子ともにNSレコードを変更する
- グルーレコードの設定を変更する
グルーレコード=サブドメインが親ゾーンと異なるネームサーバーを使用している場合に、そのサブドメインのネームサーバーのIPアドレスを指定するために使用される。
並行運用期間から完了までの時間
移行元権威サーバのNSレコードのTTL値 + TLDのTTL値に依存する。
つまり「DNS浸透言うな」はどう言うことか
DNSサーバ移転にかかる期間は想定できるし、サービスを止めないように移行もできる。
DNSの返答がうまくいっておらず、DNS浸透がまだ完了してない?と思ったときは、以下の可能性が考えられる。
-
移行元ゾーンデータの向き先が移行先になっておらず、移行完了後に削除されてもいない。この場合、ネームサーバが変わってもキャッシュが残り続けたまま、移行元の情報で上書きをし続けることでなかなか移行先を向いてくれないことがある。
このようなケースは非協力なDNS運用者によって引き起こされることがある。
ただ、GMOの炎上の件は移行元のDNS運用者もGMO自身だったこともスレッドで言及されており言い訳できない状況となっていた。