クラウド・ネイティブ・サービスを使用したロード・バランサのカスタム・エラー・ページの実装
デフォルトのロード・バランサのエラー・メッセージをクラウド・ネイティブの監視、通知および機能サービスを使用して作成されたカスタム・エラー・メッセージに置き換えることで、ユーザー・エクスペリエンスを向上させます。
Oracle Cloud Infrastructure Load Balancingサービスにより、リソース使用率が向上し、スケーリングが容易になり、高可用性が保証されます。ロード・バランサがトラフィックを正常なインスタンスにのみ転送するように、複数のロード・バランシング・ポリシーおよびアプリケーション固有のヘルス・チェックを構成できます。1つ以上のバックエンド・サーバーが異常と報告した場合、ロード・バランサ・リスナーにアクセスしようとするユーザーは、標準のエラー・コードとメッセージをレスポンスとして受け取ります。ただし、Oracle Cloud Infrastructure Monitoring、Oracle Cloud Infrastructure NotificationsおよびOracle Functionsサービスを使用すると、Oracle Cloud Infrastructure Object Storageサービスによってホストされるカスタム・エラー・ページをエンドユーザーに提供できます。このリファレンス・アーキテクチャでは、エンド・ユーザーの操作性を向上させるシナリオを示します。
アーキテクチャ
このリファレンス・アーキテクチャでは、ネイティブのOracle Cloud Infrastructure Monitoringおよび通知サービスを使用してロード・バランサのしきい値条件に応答し、Oracle Functionsをコールして条件を評価し、リダイレクト・ルールを使用してOracle Cloud Infrastructure Object Storageに格納されているカスタム・エラー・メッセージを転送します。
Oracle Cloud Infrastructure Monitoringは、異常なロード・バランサ・バックエンド・サーバーがしきい値に達するたびにトリガーするアラームを定義します。Oracle Cloud Infrastructure Notificationsサービスは、アラーム・メッセージをサブスクライバに送信します。この場合、サブスクライバには関数が含まれます。通知されると、この関数はロード・バランサ・リスナーにアタッチされているルール・セットを有効または無効にするために必要なロジックを実装します。URLリダイレクト・ルールは受信URLを評価し、ロード・バランサ・リスナーがエンド・ユーザーに転送するOracle Cloud Infrastructure Object Storageのカスタム・エラー・ページにリダイレクトします。
次の図に、このリファレンス・アーキテクチャを示します。
Oracle Functionsアーキテクチャには次のコンポーネントがあります。
- リージョン
Oracle Cloud Infrastructureリージョンは、可用性ドメインと呼ばれる1つ以上のデータ・センターを含む、ローカライズされた地理的領域です。リージョンは他のリージョンから独立しており、(複数の国または大陸にまたがって)広く離れている場合があります。
- 可用性ドメイン
可用性ドメインは、リージョン内のスタンドアロンの独立したデータ・センターです。各可用性ドメインの物理リソースは、フォルト・トレランスを提供する他の可用性ドメインのリソースから分離されます。アベイラビリティドメインは、電源や冷却などのインフラストラクチャや内部アベイラビリティドメインネットワークを共有しません。そのため、ある可用性ドメインで障害が発生しても、リージョン内の他の可用性ドメインには影響しない可能性があります。
- 仮想クラウド・ネットワーク(VCN)およびサブネット
VCNは、Oracle Cloud Infrastructureリージョンで設定するカスタマイズ可能なソフトウェア定義のネットワークです。従来のデータ・センター・ネットワークと同様に、VCNではネットワーク環境を完全に制御できます。VCNには、VCNの作成後に変更できる、重複しないCIDRブロックを複数含めることができます。VCNをサブネットにセグメント化できます。サブネットはリージョンまたは可用性ドメインにスコープ指定できます。各サブネットは、VCN内の他のサブネットと重複しない連続したアドレス範囲で構成されます。作成後にサブネットのサイズを変更できます。サブネットはパブリックまたはプライベートにできます。
- ロード・バランサ
Oracle Cloud Infrastructure Load Balancingサービスは、単一のエントリ・ポイントからバックエンドの複数のサーバーへの自動トラフィック分散を提供します。
- 関数
Oracle Functionsは、完全に管理されたマルチテナントで、スケーラビリティの高いオンデマンドのFunctions - as - a - Serviceプラットフォームです。Fn Projectオープン・ソース・エンジンを搭載しています。関数を使用すると、コードをデプロイし、それを直接コールするか、イベントに応じてトリガーできます。Oracle Functionsでは、Oracle Cloud Infrastructure RegistryでホストされているDockerコンテナを使用します。
- 通知
Oracle Cloud Infrastructure Notificationsサービスは、パブリッシュ/サブスクライブ・パターンを使用して分散コンポーネントにメッセージをブロードキャストし、Oracle Cloud Infrastructureでホストされるアプリケーションに対してセキュアで信頼性の高い低レイテンシの永続メッセージを配信します。
- 監視
Oracle Cloud Infrastructure Monitoringサービスは、メトリックを使用してクラウド・リソースをアクティブおよびパッシブにモニターし、これらのメトリックがアラーム指定のトリガーを満たしたときに通知するリソースおよびアラームをモニターします。
- オブジェクト・ストレージ
オブジェクト・ストレージを使用すると、データベースのバックアップ、分析データ、イメージやビデオなどのリッチ・コンテンツなど、あらゆるコンテンツ・タイプの大量の構造化データおよび非構造化データにすばやくアクセスできます。迅速、即時および頻繁にアクセスするために必要なホット・ストレージには、標準ストレージを使用します。アーカイブ・ストレージは、長期間保持し、ほとんどまたはほとんどアクセスしないコールド・ストレージに使用します。
お薦め
実際の要件は、ここで説明するアーキテクチャとは異なる場合があります。次の推奨事項を開始ポイントとして使用します。
- VCN
VCNを作成するときは、VCNのサブネットにアタッチする予定のリソースの数に基づいて、必要なCIDRブロックの数と各ブロックのサイズを決定します。標準プライベートIPアドレス空間内にあるCIDRブロックを使用します。
VCNの作成後、CIDRブロックを変更、追加および削除できます。
このアーキテクチャでは、ファンクションはVCNのプライベート・リージョナル・サブネットでホストされます。バックエンド・サーバーは、パブリック・サブネットのロード・バランサからアクセスされるプライベート・サブネットでホストされます。
- 関数
Oracle Functionsは、Python、Java、Node、GoおよびRubyをサポートしています。任意のプログラミング言語を使用します。エラーが発生した場合にデバッグを許可するには、常にロギングを有効にします。このアーキテクチャでは、Pythonプログラミングを使用して、ルール・セットを追加または削除する関数ロジックを開発します。
- オブジェクト・ストレージ
このアーキテクチャでは、標準のOracle Cloud Infrastructure Object Storageを使用して、エンド・ユーザーのリクエストに対するレスポンスとして機能するカスタムWebページをホストします。
- 監視
Oracle Cloud Infrastructure Monitoringでは、メトリックを使用してリソースおよびアラームを監視し、これらのメトリックがアラーム指定のトリガーを満たしたときに通知します。このアーキテクチャでは、ロード・バランサがメトリックを公開し、
UnHealthyBackendServers
メトリックが3分を超えて使用可能なバックエンドの合計数と等しい場合にアラームがトリガーされます。UnHealthyBackendServers
メトリックが使用可能なバックエンドの合計数を3分以上下回ると、個別のアラームによってカスタムWebページ・レスポンスが削除されます。 - 通知
Oracle Cloud Infrastructure Notificationsでは、イベント・ルールがトリガーされたとき、アラームに違反したとき、またはメッセージが直接公開されたときにメッセージが公開されます。この場合、Oracle Cloud Infrastructure Notificationsを使用して、アラームが起動されたときに関数をトリガーします。
注意事項
- 可用性
Oracleは、クラウド・ネイティブで完全に管理されている機能、監視および通知サービスの高可用性を保証します。Oracle Functionsは、すべての着信リクエストを処理するように水平方向に自動的かつシームレスにスケーリングします。
- 管理性
このアーキテクチャでは、Pythonを使用して関数ロジックを記述します。インフラストラクチャは、Terraformを使用してプロビジョニングされます。
- セキュリティ
ポリシーを使用して、会社が所有するOracle Cloud Infrastructureリソースにアクセスできるユーザーとそのアクセス方法を制限します。
オブジェクト・ストレージの場合、暗号化はデフォルトで有効になっており、オフにできません。
Oracle Functionsにデプロイされたファンクションへのすべてのアクセスは、Oracle Cloud Infrastructure Identity and Access Management (IAM)を介して制御されます。IAMでは、ファンクション管理権限とファンクション起動権限の両方を特定のユーザーおよびユーザー・グループに割り当てることができます。
- コスト
関数の実行中に使用されるリソースのみを支払います。
デプロイ
このリファレンス・アーキテクチャのTerraformおよびファンクション・コードは、GitHubで使用できます。
GitHubリポジトリには、この参照アーキテクチャのインフラストラクチャを作成するためのTerraformコードが含まれています。GitHubには、通知およびルール・セットに基づく意思決定ロジックを提供する関数コードも含まれています。
- GitHubに移動します。
- リポジトリをローカル・コンピュータにクローニングまたはダウンロードします。
README
ドキュメントの指示に従います。