負荷分散の基礎の基礎

B!

 

クロスリージョン

複数のアーキテクチャがある。予算次第な要素が強い。

いづれもRDSS3のクロスリージョンレプリケーションを組み合わせ、各リージョン間でデータを同期する必要がある。

AWS Global Accelerator

  • AWS Global Acceleratorは、グローバルIPを提供し、異なるリージョンのアプリケーションにトラフィックを分散するサービス
  • 最適なエッジロケーションを使用して、ユーザーの近くのリージョンにトラフィックをルーティングするため、遅延が少なくなる

Route53 のDNSベースのルーティング

  • リージョンごとにトラフィックを制御できるサービス
  • レイテンシールーティング:ユーザーから最も近い(レイテンシーが低い)リージョンにトラフィックを誘導
  • 地理的ルーティング:ユーザーの地理的な場所に基づいて、特定のリージョンにトラフィックを送信
  • フェイルオーバールーティング:特定のリージョンが利用できなくなった場合、他のリージョンにトラフィックをフェイルオーバー

Route53+ALB

  • 各リージョンにALB(Application Load Balancer)を配置し、Route 53で各ALBを管理
  • リージョンごとに複数のアプリケーションを稼働させ、DNSルーティングで最適なリージョンにユーザーを誘導

起動テンプレート

設定可能なオプション

  • Amazon Machine Image (AMI): 起動するインスタンスのOSやアプリケーションを含むイメージ。
  • インスタンスタイプ: CPU、メモリなどのリソース仕様(例: t3.micro、m5.large)。
  • キーペア: インスタンスにSSHでアクセスするための公開鍵情報。
  • セキュリティグループ: インスタンスへのトラフィックを制御するためのファイアウォール。
  • IAMロール: インスタンスに割り当てるIAMロール(必要に応じてS3やCloudWatchなどにアクセス)。
  • ストレージ設定: EBSボリュームのサイズ、タイプ、スナップショット。
  • ネットワーク設定: VPC、サブネット、およびネットワークインターフェースの設定。

なんと驚きバージョニング

できちゃいます

スケーリングポリシー

動的スケーリング

シンプルスケーリング

  • 1つのイベントが発生すると、固定の数のインスタンスを増減

ステップスケーリング

  • メトリクスの変化に応じて、段階的にインスタンスを増減させます
  • 例: CPU使用率が70%を超えた場合に2台追加、90%を超えた場合に3台追加

ターゲット追跡スケーリング

  • 特定のメトリクスに対する1つの閾値に基づくスケーリング。
  • メトリクスが目標値から外れると、Auto Scalingはインスタンスを自動的に追加または削除します。

スケジュールに基づくスケーリング

  • スケジュールした日時に1回のみ、または定期的なスケジュールでスケーリング

予測スケーリング

  • 過去のパフォーマンスデータから未来のリソース需要を予測し、最適なリソース数になるようにスケーリングを実施
    • バッチぽい

手動スケーリング

  • ユーザーが任意のタイミングでスケーリングする

スケーリングのライフサイクルフック

ライフサイクルフックを使うと、EC2インスタンスの起動または終了のプロセスに一時停止(wait状態)を追加し、スクリプトや他のAWSサービスと連携したタスクを実行できます。

主なユースケース

  • インスタンスの起動時:初期設定やアプリケーションのセットアップ。
  • インスタンスの終了時:セッションデータの保存、ログ転送、クリーンアップ。

Auto Scalingのスケールイン終了ポリシー

スケールイン終了ポリシー(Termination Policy)は、Auto Scaling グループ内でインスタンスを削減(スケールイン)する際に、どのインスタンスを終了するかを決定するルールです。AWSでは、いくつかの終了ポリシーを提供しており、効率的にスケールインを実行するための柔軟な制御が可能です。

デフォルトの終了ポリシー

AWSでは、インスタンスを終了する際に次の手順で判断します:

  1. AZ(アベイラビリティゾーン)のバランスを維持
    • 最初に、Auto Scaling グループ内でインスタンスが均等に分散されるよう、インスタンス数が多いアベイラビリティゾーンからインスタンスを終了します。
  2. スポットインスタンスの優先終了
    • スポットインスタンスとオンデマンドインスタンスが混在している場合、スポットインスタンスを優先的に終了します。
  3. 起動テンプレートのバージョン
    • 異なるバージョンのテンプレートで起動されたインスタンスがある場合、古いバージョンのインスタンスが優先的に終了されます。
  4. 最も古い起動時間のインスタンスを終了
    • すべての条件が同一の場合、最も古く起動されたインスタンスが終了されます。

スケールインの設計における考慮事項

  • 最小インスタンス数の設定
    • Auto Scalingグループにおける最小インスタンス数(MinSize)は、スケールイン終了の際に考慮されます。これを下回らないようにインスタンスが削除されます。
  • AZの均等分散
    • インスタンスの終了時、複数のアベイラビリティゾーン間のバランスを維持するように設計されています。
  • ヘルスチェックとの連携
    • ヘルスチェックで「異常」と判断されたインスタンスは、終了ポリシーにかかわらず優先的に終了されます。
最新の記事はこちらから