サーバの引越しの時にはまずDNSのTTLを短くしておこう


そろそろ平成最後令和最初の大型連休ですね。この機会にウェブサーバを別のサービスに移してみようかな、考えている趣味のサーバー管理者の皆さんも多いと思います。よね?そんな時には、まず自分のホストを指しているDNSレコードのTTLを短くしておいて、引越しが終わったらすぐにアクセスできるようにしましょう。

DNSにはキャッシュがある

ご存じの通りDNSは浸透しません。でもキャッシュがあります。いろいろな計算機が名前解決をしてからTTL (Time To Live)で指定された有効期間だけ結果をキャッシュするので、その分だけ過去の情報が流通を続けることになります。

引越しをする時には、引越し予定の時刻くらいに世界中のキャッシュの有効期間が切れるようにあらかじめTTLを調整しておくことで、引越し後すぐにサーバにアクセスができるようになります。

あらかじめTTLを短くしておくことで古すぎる情報のキャッシュを避ける

予定時刻のTTL時間くらい前にTTLを短かくすることで、引越し予定の時刻くらいにキャッシュの有効時間が切れるようにすることができます。キャッシュを短くすることでDNSサーバへの負荷は増えるので、例えば予定時刻が近づくごとにTTLを1/2ずつすることで、負荷の増加を小さく抑えつつ予定時刻にキャッシュの有効期限を合わせることができます:

  1. 変えたいAレコードやCNAMEレコードの今のTTLを調べる
  2. 変えたい時刻のTTL前頃に、TTLを半分にする
  3. 設定したTTL分の時間だけ待ち、TTLを半分にする
  4. TTLが60秒くらいになるまで3を繰り返す

TTLが86400秒(24時間)だった場合、引越しの24時間前に43200秒に、12時間前に21600秒に、6時間前に10800秒に、とTTLを短くしていきます。

えー、めんどう、という人は、いきなり60秒にしてしまっても良いかもしれません。AWSのクラシックELBのAレコードのTTLはずっと60秒で、DNSはちゃんと機能しているようです。

引越しが終わったらTTLを元に戻す

引越しが終わり自分のサーバにアクセスができるようになったことを確認したら、TTLを元に戻しておきましょう。今後しばらく引越しがない場合にはキャッシュを生かしてみんなの負荷を減らしてあげたいものです。

ネームサーバのTTLは変えられないかも

サーバがお世話になっているサービスの引っ越しをする時にはネームサーバ自体も引っ越したくなるかもしれません。ネームサーバを示すNSレコードのTTLは変えられないことも多いようなので、ネームサーバを引っ越す時には、元のNSレコードのTTL前までに

  1. 引っ越し先のネームサーバに引っ越し元と同じレコードを作成して、
  2. NSレコードを引っ越し先のものに変更して

おくのが良さそうです。AレコードやCNAMEレコードの変更の時間も見越しておくか、サーバの引っ越し後にNSレコードの引っ越しをするのも良さそうです。