LoginSignup
15
7

More than 5 years have passed since last update.

Route53 の Weighted Routing で少しだけ流してテストする

Last updated at Posted at 2016-02-08

Weighted Routingとは

DNSクエリに対して指定した割合で一連のレコードセットの中からどれかを返す。
同名・同タイプのレコードセットを作成することで一連のレコードセットと見なされる。

Simpleなレコードセットとの違いは Set IDWeight を指定するところ。
Set IDは一連のレコードセット内でユニークなら適当でいい。
あるレコードセットのWeightを、一連のレコードセットのWeightの合計で割った割合で応答するようになる。

Weight / Weight合計

Aliasレコードを使わない場合、LatencyやGeolocationベースのルーティングは割増料金になるが、Weightedベースのルーティングは基本料金で使える。
https://aws.amazon.com/jp/route53/pricing/

レコードセットの作成

既存のSimpleなAレコードをWeighted Routingにしてみる。
1%だけ新規レコードのほうに流したい。

これが初期状態。SimpleなAレコードが1行あるだけ。

# name type value ttl weight set id
1 www.example.com A 0.0.0.0 300 - -

まず、既存のレコードセットをSimple → Weighted に変更する。
ELBのAliasレコードを追加するつもりなので、それに合わせてTTLは60秒にしておく。理由は後述。
99%は既存レコードを応答したいのでWeightは99に設定。
この時点で99/99の割合で既存レコードが応答される。要するにこれまで通り。

# name type value ttl weight set id
1 www.example.com A 0.0.0.0 60:sparkles: 99:sparkles: idc:sparkles:

続けて、ELBのAliasレコードをWeightedで追加する。
Weightは1。これで1/100の割合でこちらが応答される。

# name type value ttl weight set id
1 www.example.com A 0.0.0.0 60 99 idc
2:sparkles: www.example.com A ALIAS dualstack...amazonaws.com - 1 aws

問題なければ100%新規レコードを応答する。

# name type value ttl weight set id
1 www.example.com A 0.0.0.0 60 0:sparkles: idc
2 www.example.com A ALIAS dualstack...amazonaws.com - 100:sparkles: aws

その他

作成できるタイプ

AレコードはもちろんCNAMEレコードも複数作成できる。
Aliasも使える。

TTLの設定

レコードセットのTTLを変更すると全ての関連するレコードセットのTTLが一括で変更される。
一連のレコードセットにELBのAliasが含まれる場合、Aliasでない他のレコードセットのTTLも60秒に設定することが推奨されている。
ELBのTTL(60秒)に合わせないと指定した割合で応答しないことになるから。

負荷が分散できないケース

名前解決を行うクライアント(レゾルバ)数が少ない場合、たまに大量のアクセスが来ることになる。
例えば、クライアントが1人の場合、加重ルーティングで指定した割合で全てのアクセスが来る。
大量のアクセス→アクセスなし→大量のアクセス→・・・を繰り返す状態。
逆にクライアント数が多ければ指定した割合と同じ傾向でアクセスが分散される。

15
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
7