くりゅぴ!

サーバーやWEB問題解決のメモから生活お得情報まで。未分類のものは執筆中

DNS浸透の曖昧さを回避する

DNSの切り替え時、例えばサーバーが変わってIPを変更するときにはAレコードの書き換えが発生します。
Aレコードは直ちに変更がされることでしょう。
ただし、変えたからと言ってすぐに世界に反映されるわけではありません。

世界中にネットワークは張り巡らされています。
もし、世界中からあなたのサーバーの場所はどこですか?と毎回問い合わせが来たらどうなるでしょうか?
答えはサーバーがパンクしてしまうです。

それを回避するためにDNSのレコードは一時的にキャッシュされます。
いろんな拠点でキャッシュされるのです。

つまり、問い合わせ先のキャッシュが消えない限りは古いサーバーを見続けるということになります。
よくあるのはDNSを切り替え中、別のプロバイダーで見ると、反映されていたりします。
でもいつも使うプロバイダーではまだ変わってない。

これがなぜ起こるかというとプロバイダーでDNSがキャッシュされているからです。

ではこのキャッシュはどうやったら消すことができるでしょうか?
通常は故意的に消すことは不可能です。管理者は私ではないのですから。

しかし、ある程度の制御は可能です。
TTLを変更することで制御ができます。

TTLとは、いつまでキャッシュし続けるかという時間です。
この時間が過ぎると、またドメインがどこを指定しているかという情報の問い合わせをされます。

通常なら1日の指定がされています。
なので、大体、一日くらいで反映されますと言われたりします。
念のため最長一週間を目途に変わりますということもあります。

このTTLをなるべく5分など少ない値にしてあげることにより、
最長5分ほどで変わりますよと言えるわけです。

例えば1日のTTLが指定されていた場合、
レコードの変更する1日前にTTLを変更しておけば、そのTTLになるということです。

あまりに短すぎると、問い合わせが多くなり、サーバーがパンクするので許容できる範囲での指定をしましょう。
そして、変更が終わって、指定した時間を超えて十分な時間をとれたと思ったら元に戻しましょう。

しかしながら、例外はあるわけで、ブラウザやパソコンでキャッシュされてたりすることもあるので、
その辺は再起動するなどして対応が必要ですね。

ただネームサーバーの切り替えはまた別なので、
ネームサーバーとDNS同時に切り替える場合は、先にDNSを切り替えてからのほうがいいと思います。

サーバー開発

タグ:

サーバー開発の最新記事

2020年8月24日
さくらサーバー移管後DNSゾーンは変更できない
2020年7月13日
NginxにSERVER_NAMEがない
2020年6月18日
NginxにREDIRECT_URLを追加する

コメントを残す

メールアドレスが公開されることはありません。