料金が高くなっていた
AWS料金、以前は月額130円だったのに、最近になって倍以上の請求が来ていた。
調べてみた
画像左が2018年4月のもので、画像右が2019年7月のもの。
安かったときとの料金明細を比較するとこんな感じ($1.06→$2.79)。
結果的に料金が高くなった原因は下記のふたつだった。
- 検証用に作ったヘルスチェックを消し忘れていた
- DNSクエリがかなり増えている
ひとつはヒューマンエラー。
もうひとつはシステム的な問題。
両者ともに小さい工数で改善可能だと思われる。
対応
検証用ヘルスチェックは既に不要だったため、サクッと削除した。従量課金のクラウドを使うときはきちんと管理・棚卸ししなければならない(戒め)。
一方で、DNSクエリはさほどアクセスがないのに増えすぎている。おそらくだが、ttlを短く設定したことで、クエリが異常に増えたのだと思う。
通常はドメインにアクセスするとき、1.DNSに問い合わせ、2.ドメインに紐付いたIPを教えてもらう。3.ドメインのIP情報をキャッシュとしてPC内部に保存。というプロセスを踏む。そして次回以降同じドメインにアクセスするときは、内部に保存されたIP情報をもとにアクセスするので、DNSへの問い合わせがいらない。ところがttlが短くなるとIP情報の保持期間が短くなる。すると次回アクセスする際にまたDNS問い合わせを行わなければならない。その次もその次もDNS問い合わせが必要になる。これを繰り返すことでDNSクエリは増大していく。
なんでttlを短く設定したかというと、下記の施策のため。
-
- 冗長化のためDNSフェイルオーバーを導入
→フェイルオーバー後、ドメインに紐付いたIPの切替を迅速化するため、ttlを短く設定した
- 冗長化のためDNSフェイルオーバーを導入
-
- ddnsを使っている
→グローバルIPが変更されたときにすぐ反映されるよう、ttlを短く設定した
- ddnsを使っている
クエリ増大原因が「ttlが短い」ことなのだから、逆に「ttlを長く」設定しなおせば良い。なにかあったときの切替は遅くなるだろうが、お金の問題なので背に腹は変えられない。また料金が落ち着いたらここで報告する。