アクティブ-アクティブとは

アクティブ-アクティブ(Active-Active)とは、コンピュータシステムやネットワークにおいて、複数のシステムが同時に稼働し、それぞれがサービス要求を処理することで、負荷分散と同時に高可用性(High Availability)を実現する冗長化方式を指します。

この構成では、一部のシステムに障害が発生しても、残りの稼働中のシステムが処理を継続するため、サービスの停止時間を極力短縮し、全体の処理能力も向上させることが可能です。

アクティブ-アクティブの基本的な概念

アクティブ-アクティブ構成は、サービスの停止を許容できない、または高い処理能力が求められるシステムで特に有効な冗長化戦略です。

主な概念は以下の通りです。

  1. 負荷分散(Load Balancing): 複数の稼働系システム間で、受信したサービス要求(トラフィック)を均等に、または設定されたルールに基づいて分散させます。これにより、単一のシステムへの負荷集中を防ぎ、全体の処理能力を向上させます。
  2. 高可用性(High Availability, HA): システムの一部に障害が発生しても、残りのシステムが処理を継続するため、サービスが停止するリスクを大幅に低減できます。これにより、ダウンタイムを最小限に抑え、サービスの連続性を確保します。
  3. スケーラビリティ(Scalability): 必要に応じてシステムを追加することで、処理能力を水平に拡張(スケールアウト)できます。これにより、将来的な負荷の増加にも柔軟に対応可能です。
  4. 冗長性(Redundancy): 複数のシステムが同等の機能を提供することで、一部のシステムが故障しても全体としてサービスが継続できる体制を指します。

アクティブ-アクティブ構成の動作原理

アクティブ-アクティブ構成では、以下の要素が協調して動作します。

  1. ロードバランサー(Load Balancer): クライアントからのリクエストは、まずロードバランサーによって受け付けられます。ロードバランサーは、設定されたアルゴリズム(例:ラウンドロビン、最小コネクション数、IPハッシュなど)に基づいて、複数のアクティブなサーバーのいずれかにリクエストを振り分けます。
  2. 複数の稼働システム: ロードバランサー配下には、同等の機能を持つ複数のシステムが同時に稼働しています。これらのシステムは、それぞれが個別にサービス要求を処理します。
  3. 障害検知と再分配: ロードバランサーは、各システムの死活監視(ヘルスチェック)を継続的に行います。いずれかのシステムに障害が発生した場合、ロードバランサーは自動的にそのシステムへのリクエストの振り分けを停止し、残りの正常なシステムにのみリクエストを再分配します。これにより、障害発生時もサービスが継続されます。
  4. セッション管理とデータ同期: この構成で特に重要なのが、セッション情報やデータの整合性をいかに維持するかです。
    • 共有ストレージ: 複数のサーバーが同じデータベースやファイルシステムにアクセスできるようにすることで、データの一貫性を保ちます。
    • データベースレプリケーション: 各サーバーが持つデータストア間でリアルタイムにデータを同期します。
    • セッションの維持: ロードバランサーのスティッキーセッション(Sticky Session)機能などを用いて、特定のクライアントからのリクエストを常に同じサーバーに振り分けたり、セッション情報を共有メモリやデータベースで管理したりします。

アクティブ-アクティブのメリットとデメリット

メリット

  • 高い処理能力とスケーラビリティ: 複数のシステムが同時に処理を行うため、単一システムの構成よりも高い処理能力を発揮できます。また、必要に応じてシステムを追加することで、容易に処理能力を拡張できます。
  • ダウンタイムの最小化: 一部のシステムに障害が発生しても、残りのシステムが自動的に処理を引き継ぐため、サービスの停止時間を極めて短く、またはゼロに抑えることができます。
  • リソースの有効活用: 全てのリソースが通常時から稼働しているため、アクティブ-スタンバイ構成のように遊休リソースが発生せず、投資したハードウェアを最大限に活用できます。

デメリット

  • 実装と管理の複雑さ: 複数のシステム間で常にデータやセッションの整合性を保つ必要があるため、設計、実装、運用が複雑になります。特に、分散トランザクションやデータ競合の解決が課題となることがあります。
  • コストの増加: 複数のシステムを同時に稼働させる必要があるため、ハードウェア、ソフトウェアライセンス、運用管理にかかるコストが増加します。
  • 状態の同期問題: ステートフルなアプリケーション(ユーザーセッションを保持するアプリケーションなど)では、セッション情報やキャッシュなどの状態を複数のシステム間でリアルタイムに同期させるための仕組みが不可欠となり、その実装は複雑です。
  • デバッグの困難さ: 複数のシステムが連携して動作するため、問題が発生した場合の原因特定やデバッグが単一システムよりも困難になることがあります。

アクティブ-アクティブの主な適用例

  • Webサーバー群: 大量のアクセスを捌くウェブサイトやWebアプリケーションで広く採用されています。ロードバランサーを通じて、複数のWebサーバーにリクエストが分散されます。
  • APIゲートウェイ: マイクロサービスアーキテクチャなどにおいて、多数のAPIリクエストを複数のゲートウェイインスタンスで処理し、高可用性とスケーラビリティを確保します。
  • 分散データベース: 複数のデータベースノードが同時に読み書き操作を受け付け、相互にデータを同期することで、高可用性とスケーラビリティを実現します。
  • コンテンツ配信ネットワーク(CDN): 複数の地理的に分散したサーバーでコンテンツをキャッシュし、ユーザーに最も近いサーバーから配信することで、高速化と障害耐性を両立させます。
  • クラウドサービス: SaaS(Software as a Service)やPaaS(Platform as a Service)などのクラウドサービスは、通常、バックエンドでアクティブ-アクティブ構成を採用しており、高い可用性とスケーラビリティを提供しています。

アクティブ-アクティブは、複数のシステムが同時に稼働し、負荷分散と高可用性を同時に実現する冗長化方式です。ロードバランサーを介してクライアントからのリクエストを複数の稼働システムに振り分け、一部に障害が発生してもサービスを継続させます。高い処理能力、スケーラビリティ、ダウンタイムの最小化、リソースの有効活用がメリットである一方、実装・管理の複雑さ、コストの増加、状態同期の問題といったデメリットも存在します。

ウェブサーバー群、APIゲートウェイ、分散データベース、CDNなどで広く採用されており、ビジネス継続性やサービス品質の維持に不可欠なアーキテクチャとなっています。

関連用語

アクティブ-スタンバイ | 今更聞けないIT用語集
冗長化 | 今更聞けないIT用語集
クラウドソリューション

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。