0Pricing
AWS Solutions Architect · レッスン

フェイルオーバーと位置情報ルーティング

ヘルスチェックを使ったアクティブ・パッシブのフェイルオーバーを設定し、クエリの地理的な発信元に応じて応答を制限またはカスタマイズします。

「フェイルオーバーと位置情報ルーティング」はCoddyKit上の無料AWS Solutions Architectレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAWS Solutions Architect学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AWS Solutions Architectコースには全4レッスンが含まれています。

フェイルオーバールーティングの概要

フェイルオーバールーティングは、アクティブ/パッシブ構成を実装します。一方のレコードをプライマリ、もう一方をセカンダリとして指定します。Route 53 は、プライマリのヘルスチェックに成功している限り、常にプライマリレコードを返します。プライマリが異常になると、Route 53 は自動的にセカンダリレコードを返すように切り替えます。

フェイルオーバールーティングは、本番環境(プライマリ)と、プライマリが停止した場合にのみトラフィックを受け取る待機環境(セカンダリ)がある、ディザスタリカバリのシナリオでよく使われるパターンです。

フェイルオーバーレコードの設定

フェイルオーバールーティングを設定するには、同じ DNS 名で 2 つのレコードを作成します。一方には Failover=PRIMARY、もう一方には Failover=SECONDARY を設定します。プライマリレコードにはヘルスチェックを関連付けます。セカンダリレコードが独立して障害を起こす可能性のあるリソースを指している場合は、セカンダリにもヘルスチェックを設定してください。

セカンダリレコードは静的なフォールバックとして機能します。S3 静的ウェブサイト、メンテナンスページ、または縮小構成の待機環境を指すことができます。セカンダリにヘルスチェックがなくても、プライマリに障害が発生すると、Route 53 は常にセカンダリへフォールバックします。

# Create primary failover record
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890 \
  --change-batch '{
    "Changes": [{
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "app.example.com",
        "Type": "A",
        "SetIdentifier": "primary",
        "Failover": "PRIMARY",
        "TTL": 60,
        "ResourceRecords": [{"Value": "54.100.1.1"}],
        "HealthCheckId": "hc-primary-id"
      }
    }]
  }'

アクティブ/パッシブとアクティブ/アクティブ

フェイルオーバールーティングはアクティブ/パッシブ構成を作成します。通常の運用中はプライマリだけがトラフィックを処理し、セカンダリは引き継ぎを待機します。これにより待機系のコストを抑えられますが、復旧にはやや時間がかかります(DNS TTL が期限切れになり、Route 53 が切り替えるまでの時間が必要です)。

アクティブ/アクティブ構成(両方のリソースが同時にトラフィックを処理する構成)には、等しい重みの加重ルーティング、またはレイテンシールーティングを使用します。一方のリソースに障害が発生すると、そのヘルスチェックが失敗し、Route 53 は自動的にそのリソースを DNS 応答から除外します。これにより、組み込みのフェイルオーバーを備えたアクティブ/アクティブ構成を実現できます。

ジオロケーションルーティングの概要

ジオロケーションルーティングは、DNS リゾルバー(通常はユーザーの ISP リゾルバーまたは AWS Route 53 Resolver)の地理的な場所に基づいて DNS クエリをルーティングします。特定の大陸、国、または米国の州ごとにレコードを作成すると、Route 53 はクエリの送信元に最も具体的に一致する場所のレコードを返します。

特定の場所に一致するレコードがない場合、Route 53 は(設定されていれば)デフォルトレコードを返します。デフォルトを設定していない場合、一致しない場所からのクエリには NODATA が返されます。明示的に設定していない場所のユーザーにも対応できるよう、必ずデフォルトレコードを作成してください。

# Create a geolocation record for Germany
aws route53 change-resource-record-sets \
  --hosted-zone-id Z1234567890 \
  --change-batch '{
    "Changes": [{
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "www.example.com",
        "Type": "A",
        "SetIdentifier": "germany",
        "GeoLocation": {"CountryCode": "DE"},
        "TTL": 60,
        "ResourceRecords": [{"Value": "54.200.1.1"}]
      }
    }]
  }'

ジオロケーションルーティングのユースケース

ジオロケーションルーティングの主なユースケースは次のとおりです。

  • 言語別コンテンツ:フランス語話者をフランス語の CDN オリジンへ、ドイツ語話者をドイツ語のオリジンへルーティングします
  • 規制遵守:EU ユーザーのデータを EU リージョン内に保持すること(GDPR)、または特定の国からのアクセスをブロックすることを保証します
  • 地域別の価格設定や提供状況:地域に応じた価格を表示したり、対応地域を限定したりします
  • ジオブロッキング:制限された場所のユーザーに対して、ジオロケーションレコードをメンテナンス用エンドポイントに向けることで、ブロックページまたは空の応答を返します

ジオロケーションの詳細度とデフォルトレコード

Route 53 は最も詳細なジオロケーションに一致させます。州レベルのレコードは国レベルのレコードより優先され、国レベルのレコードは大陸レベルのレコードより優先され、大陸レベルのレコードはデフォルトより優先されます。米国の州レベルのジオロケーションを利用できるのは米国のみです。

デフォルトレコードを省略し、ユーザーの場所に一致する設定済みレコードがない場合、Route 53 は NXDOMAIN または NODATA を返します。これにより、未設定の地域のユーザーが気付かないままアクセスできなくなります。予期しない障害を防ぐため、キャッチオールとしてデフォルトのジオロケーションレコードを必ず追加してください。

ジオプロキシミティルーティング

ジオプロキシミティルーティングは、ユーザーとリソース間の物理的な地理的距離に基づいてトラフィックをルーティングします。また、各リソースの実質的なルーティング範囲を拡大または縮小するためのバイアスを任意で設定できます。正のバイアスを設定すると、リソースがサービスを提供する地理的範囲が拡大し、負のバイアスを設定すると縮小します。

ジオプロキシミティは、Traffic Flow(Route 53 のビジュアルなルーティングポリシーエディタ)からのみ利用できます。また、Route 53 が座標を自動的に把握している AWS リージョンと、緯度・経度を指定するカスタムリソースの場所の両方をサポートします。

Route 53 Traffic Flow

Route 53 Traffic Flowは、複数のルーティングポリシーをツリー状の図で組み合わせ、複雑なルーティングロジックを構築できるビジュアルポリシーエディタです。たとえば、まずジオロケーションで EU のトラフィックを分離し、次に EU 内でレイテンシーに基づいて最もパフォーマンスの高いリージョンを選択し、最後に各リージョン内で加重ルーティングを使用してブルーグリーンデプロイを行えます。

Traffic Flow のポリシーにはバージョンが付くため、変更を安全にテストできます。1 つ以上の DNS 名を Traffic Flow ポリシーに関連付けると、個々のレコードを作り直さなくても、ポリシーの更新がすぐに反映されます。

フェイルオーバーと他のポリシーの組み合わせ

フェイルオーバールーティングは、他のポリシーの中に組み込むことができます。一般的なパターンとして、レイテンシールーティングで最も近いリージョンを選択し、各リージョン内ではフェイルオーバーレコードを使用します。これにより、そのリージョンのプライマリエンドポイントに障害が発生した場合、トラフィックが同じリージョン内のセカンダリエンドポイントへ自動的に切り替わります。

別のパターンとして、プライマリエンドポイントにレイテンシールーティングを使用したマルチリージョンのアクティブ/パッシブ構成があります。プライマリリージョンのヘルスチェックが失敗すると、Route 53 は次にレイテンシーが低い正常なリージョンへフォールスルーします。これにより、レイテンシー最適化と DR フェイルオーバーを実質的に組み合わせられます。

フェイルオーバーに必要なヘルスチェック

フェイルオーバールーティングを正しく機能させるには、プライマリレコードにヘルスチェックを必ず**関連付ける必要があります。ヘルスチェックがない場合、Route 53 はプライマリを常に正常とみなし、セカンダリに切り替えません。セカンダリレコードには独自のヘルスチェックを任意で設定できます。セカンダリも失敗した場合でも、Route 53 はセカンダリのアドレスを返します(最後の手段として使用されるためです)。

フェイルオーバーで使用できるヘルスチェックの種類は、HTTP/HTTPS エンドポイントチェック、TCP チェック、CloudWatch アラームチェックです(複数のメトリクスを組み合わせたアプリケーション全体の正常性シグナルに便利です)。

ジオロケーションとレイテンシー:試験での違い

この違いは SAA-C03 試験で頻繁に出題されます。

  • ジオロケーション:ユーザーが地理的にどこにいるかに基づいてルーティングします。パフォーマンスに関係なく、特定の国や大陸に対して常に同じエンドポイントを返します。コンテンツのローカライズやコンプライアンスに使用します
  • レイテンシー:ユーザーまでのネットワークパフォーマンスに基づいてルーティングします。その時点で eu-west-1 より高速であれば、ヨーロッパのユーザーを us-east-1 にルーティングすることがあります。パフォーマンスの最適化に使用します

試験問題でのキーワードは次のとおりです。「データレジデンシーに準拠する」、「国別コンテンツ」、「特定の地域のユーザーをブロックする」 → ジオロケーション。「最も近いリージョン」、「最小レイテンシー」、「グローバルユーザーに最適なパフォーマンス」 → レイテンシー。

クイックチェック

このレッスンで扱った AWS Solutions Architect(SAA-C03)の概念について、理解度を確認しましょう。

レッスンのまとめ

このレッスンでは、次のことを学びました。フェイルオーバールーティングはアクティブ/パッシブのHAを実現します。Primaryのヘルスチェックが失敗すると、Secondaryへ切り替えます。ジオロケーションルーティングは、コンプライアンスやローカライゼーションのために、ユーザーの地理的な発信元に基づいてルーティングします。また、ジオプロキシミティルーティングは、Traffic Flowを使用して、設定可能なバイアスを適用した物理的な距離に基づいてルーティングします。一致しない場所からのリクエストに対応できるよう、必ずデフォルトのジオロケーションレコードを追加してください。次は、ヘルスチェックとDNSフェイルオーバーについて詳しく学びます。

よくある質問

「フェイルオーバーと位置情報ルーティング」レッスンは無料ですか?

はい。「フェイルオーバーと位置情報ルーティング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AWS Solutions Architectコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AWS Solutions Architectコースには全4レッスンが含まれています。

「フェイルオーバーと位置情報ルーティング」で何を学びますか?

ヘルスチェックを使ったアクティブ・パッシブのフェイルオーバーを設定し、クエリの地理的な発信元に応じて応答を制限またはカスタマイズします。 ブラウザで直接実行するハンズオンコードでAWS Solutions Architectを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AWS Solutions Architectを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAWS Solutions Architectは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「フェイルオーバーと位置情報ルーティング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAWS Solutions Architectレッスンでコードを書いて実行できますか?

はい。すべてのAWS Solutions Architectレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ホストゾーンと DNS レコードタイプ
  2. ルーティングポリシー:シンプル、加重、レイテンシー
  3. フェイルオーバーと位置情報ルーティング
  4. ヘルスチェックと DNS フェイルオーバー
← AWS Solutions Architectに戻る