高可用性Webアプリケーションのデプロイ
Webアプリケーション・スタックには、通常、1つのロード・バランサ、複数のWebサーバーおよび1つのデータ・ストアが含まれます。高可用性を実現するには、スタックのすべての層に冗長リソースを含むトポロジが必要です。
アーキテクチャ
このリファレンス・アーキテクチャは、Oracle CloudでOracle Autonomous Transaction Processingデータベースで実行されている高可用性Webアプリケーションを示しています。
パブリック・ロード・バランサはインターネットからクライアント・リクエストを受信し、リクエストを複数のフォルト・ドメインにわたって分散しているWebサーバーのプールにルーティングします。データ層は、プライベート・エンドポイントを含む自律型データベースで構成されます。
次の図は、この参照アーキテクチャを示しています。

図ha-webapp-oci.pngの説明
アーキテクチャには次のコンポーネントがあります。
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含むローカライズされた地理的領域です。地方は他の地域から独立し、たくさんの距離(国や大陸など)を分けることができます。
このアーキテクチャのすべてのリソースは、単一のリージョンにデプロイされます。
- 可用性ドメイン
アベイラビリティ・ドメインは、リージョン内のスタンドアロンで独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。アベイラビリティ・ドメインは電源や冷却、内部アベイラビリティ・ドメイン・ネットワークなどのインフラを共有しません。そのため、1つの可用性ドメインで障害が発生しても、リージョン内の他の可用性ドメインには影響しません。
このアーキテクチャのリソースは、単一の可用性ドメインにデプロイされます。
- フォルト・ドメイン
フォルト・ドメインは、可用性ドメイン内のハードウェアおよびインフラのグループです。アベイラビリティ・ドメインごとに3つのフォルト・ドメインがあり、独立した電源とハードウェアです。複数のフォルト・ドメインにリソースを分散する場合、アプリケーションは、物理サーバーの障害、システムのメンテナンス、およびフォルト・ドメイン内の電源障害を許容できます。
このアーキテクチャに表示されるトポロジは、複数のフォルト・ドメインにまたがっています。
- 仮想クラウド・ネットワークおよびサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定する、カスタマイズ可能なソフトウェアで定義されたネットワークです。従来のデータ・センター・ネットワークと同様に、VCNではネットワーク環境を完全に制御できます。VCNには複数の重複しないCIDRブロックを含めることができ、VCNの作成後に変更できます。VCNをサブネットに分割できます。サブネットはリージョンまたは可用性ドメインにスコープ指定できます。各サブネットは、VCN内の他のサブネットと重複しない連続した範囲のアドレスで構成されます。サブネットのサイズは、作成後に変更できます。サブネットはパブリックまたはプライベートにできます。
このアーキテクチャでは、Webサーバーはパブリック・サブネットにアタッチされ、データベースはプライベート・サブネットを使用します。
- ロード・バランサ
Oracle Cloud Infrastructure Load Balancingサービスは、1つのエントリ・ポイントからバックエンド内の複数のサーバーへの自動トラフィック分散を提供します。
- Webサーバー
Oracle Cloud Infrastructure Computeサービスを使用すると、クラウド内のコンピュート・ホストをプロビジョニングおよび管理できます。CPU、メモリー、ネットワーク帯域幅およびストレージのリソース要件を満たすシェイプを使用してコンピュート・インスタンスを起動できます。コンピュート・インスタンスの作成後、セキュアにアクセスしたり、再起動したり、ボリュームのアタッチとデタッチを行ったり、不要になったら終了したりできます。
このアーキテクチャのWebサーバーは、コンピュート仮想マシンで実行されます。
- 自律型トランザクション処理データベース
Oracle Autonomous Transaction Processingは、トランザクション処理ワークロード用に最適化された、自動運転、自己保護および自己修復が可能なデータベース・サービスです。ハードウェアの構成や管理、ソフトウェアのインストールを行う必要はありません。Oracle Cloud Infrastructureでは、データベースの作成、およびデータベースのバックアップ、パッチ適用、アップグレードおよびチューニングを処理します。
- ネットワーク・セキュリティ・グループ(NSG)
NSGは、クラウド・リソースの仮想ファイアウォールとして機能します。Oracle Cloud Infrastructureのゼロトラスト・セキュリティ・モデルを使用すると、すべてのトラフィックが拒否され、VCN内のネットワーク・トラフィックを制御できます。NSGは、1つのVCN内の指定された一連のVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。
このアーキテクチャでは、ロード・バランサ、Webサーバーおよびデータベースに別のNSGが使用されます。
- ルート表
仮想ルート表には、サブネットからVCN外部の宛先(通常はゲートウェイ経由)にトラフィックをルーティングするルールが含まれます。
- インターネットゲートウェイ
インターネット・ゲートウェイによって、VCNのパブリック・サブネットとパブリック・インターネット間のトラフィックが許可されます。
- ネットワーク・アドレス変換(NAT)ゲートウェイ
NATゲートウェイを使用すると、VCN内のプライベート・リソースは、着信インターネット接続にそれらのリソースを公開せずに、インターネット上のホストにアクセスできます。
推奨
実際の要件は、ここで説明するアーキテクチャとは異なる場合があります。開始点として次の推奨事項を使用します。
- Webサーバーのコンピュート・シェイプ
アーキテクチャをデプロイするときに、アプリケーションのメモリーおよび処理要件に基づいて、Webサーバーをホストするコンピュート・インスタンスに適切なシェイプを選択します。
- ネットワーク設計
VCNを作成する際、必要なCIDRブロックの数と、VCNのサブネットにアタッチする予定のリソース数に基づいて各ブロックのサイズを決定します。標準のプライベートIPアドレス領域内にあるCIDRブロックを使用します。
プライベート接続を設定する他のネットワーク(Oracle Cloud Infrastructure、オンプレミス・データ・センターまたは他のクラウド・プロバイダ)と重複しないCIDRブロックを選択します。
VCNを作成した後、そのCIDRブロックを変更、追加および削除できます。
サブネットを設計する際は、トラフィック・フローおよびセキュリティ要件を考慮してください。セキュリティ境界として機能する、特定の層またはロール内のすべてのリソースを同じサブネットにアタッチします。
リージョナル・サブネットを使用します。
注意事項
クラウドで可用性の高いアプリケーション・スタックを設計する際には、次の要因を考慮してください。
- 拡張性
- データベース
手動でデータベースのCPUコアの数を任意の時点でスケール・アップまたはダウンできます。自律型データベースの自動スケーリング機能を使用すると、データベースで、CPUの現在のベース数の3倍をいつでも使用できます。要求が高まって、自動スケーリングによって、使用されるコア数が自動的に増加します。自律型データベースにより、可用性やパフォーマンスに影響を与えることなく、いつでもストレージ容量を拡張できます。
- アプリケーション
インスタンス・プールおよび自動スケーリング機能を使用して、アプリケーションをスケーリングできます。
インスタンス・プールを使用すると、同じリージョン内の同じ構成に基づいて複数のコンピュート・インスタンスをプロビジョニングおよび作成できます。
自動スケーリングを使用して、パフォーマンス・メトリック(CPU使用率など)に基づいてインスタンス・プール内のコンピュート・インスタンス数を自動的に調整します。自動スケーリングは、需要の多い期間にユーザーに一貫したパフォーマンスを提供し、需要が少なくなるとコストを削減するのに役立ちます。
- データベース
- 可用性
- データベース
アーキテクチャ図は、単一のOracle Autonomous Transaction Processingデータベースを示しています。アーキテクチャのデプロイ中に、Oracle Autonomous Data Guardを有効にしてスタンバイ・データベースをプロビジョニングおよび管理できます。
- アプリケーション
フォルト・ドメインは、アベイラビリティ・ドメイン内の回復性を提供します。可能な場合は、複数のアベイラビリティ・ドメインまたは複数のリージョンにリソースを分散することを検討してください。
- データベース
- セキュリティ
- アクセス制御
ポリシーを使用して、クラウド内のリソースにアクセスできるユーザーと、リソースが実行できるアクションを制限します。
- ネットワーク・セキュリティ
ネットワーキング・サービスには、セキュリティ・ルールを使用してパケット・レベルでトラフィックを制御する2つの仮想ファイアウォール機能(セキュリティ・リストおよびネットワーク・セキュリティ・グループ(NSG)があります。NSGは、単一のVCN内の選択したセットのVNICのみに適用される一連のイングレスおよびエグレス・セキュリティ・ルールで構成されます。たとえば、VCN内のマルチティア・アプリケーションのWeb層でWebサーバーとして機能するすべてのコンピュート・インスタンスを選択できます。
NSGセキュリティ・ルールはセキュリティ・リスト・ルールと同様に機能します。ただし、NSGセキュリティ・ルールのソースまたは宛先では、CIDRブロックのかわりにNSGを指定できます。そのため、セキュリティ・ルールを記述して、同じVCN内の2つのNSG間のトラフィック、または1つのNSG内のトラフィックを簡単に制御できます。データベース・システムを作成する場合、1つ以上のNSGを指定できます。また、既存のデータベース・システムを更新して、1つ以上のNSを使用することもできます。
- アクセス制御
デプロイ
このリファレンス・アーキテクチャのTerraformコードは、GitHubで入手できます。1回のクリックでコードをOracle Cloud Infrastructure Resource Managerにプルし、スタックを作成してデプロイできます。または、GitHubからコンピュータにコードをダウンロードし、コードをカスタマイズし、Terraform CLIを使用してアーキテクチャをデプロイします。
- Oracle Cloud Infrastructure Resource Managerを使用してデプロイします:
をクリックします
まだサインインしていない場合は、テナンシおよびユーザー資格証明を入力します。
- 条件をレビューして受け入れます。
- スタックをデプロイするリージョンを選択します。
- 画面上のプロンプトおよび指示に従ってスタックを作成します。
- スタックの作成後、「Terraformアクション」をクリックし、「プラン」を選択します。
- ジョブが完了するのを待ってから、プランをレビューします。
変更するには、「スタックの詳細」ページに戻り、「スタックの編集」をクリックして必要な変更を行います。次に、「プラン」アクションを再実行します。
- これ以上変更が不要な場合は、「スタック詳細」ページに戻り、「Terraformアクション」をクリックして「適用」を選択します。
- Terraform CLIを使用してデプロイします。
- GitHubに移動します。
- ローカル・コンピュータにコードをダウンロードまたはクローニングします。
- READMEの手順に従います。