Auto Scale の導入例
この ASAv の導入例:OCI Auto Scale ソリューションは、導入例の図に示されています。インターネット向けのロードバランサには、リスナーとターゲットグループの組み合わせを使用してポートが有効になっているパブリック IP アドレスがあります。
ポートベースの分岐は、ネットワークトラフィックに実装できます。この分岐は、NAT ルールによって実現できます。分岐の設定例については、以下のセクションで説明します。
この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
この ASAv の導入例:OCI Auto Scale ソリューションは、導入例の図に示されています。インターネット向けのロードバランサには、リスナーとターゲットグループの組み合わせを使用してポートが有効になっているパブリック IP アドレスがあります。
ポートベースの分岐は、ネットワークトラフィックに実装できます。この分岐は、NAT ルールによって実現できます。分岐の設定例については、以下のセクションで説明します。
ソリューションを導入するために必要な OCI の権限とポリシーは次のとおりです。
ユーザーおよびグループ
(注) |
ユーザーとグループを作成するには、OCI ユーザーまたはテナンシー管理者である必要があります。 |
Oracle Cloud Infrastructure のユーザーアカウントと、そのユーザーアカウントが属するグループを作成します。ユーザーアカウントを持つ関連グループが存在する場合は、作成する必要はありません。ユーザーとグループの作成手順については、「グループとユーザーの作成」を参照してください。
グループ ポリシー
ポリシーを作成したら、それをグループにマッピングする必要があります。ポリシーを作成するには、
に移動します。次のポリシーを作成して、目的のグループに追加します。グループ <Group_Name> がコンパートメント <Compartment_Name> でメトリックを使用することを許可します。
グループ <Group_Name> がコンパートメント <Compartment_Name> でアラームを管理することを許可します。
グループ <Group_Name> がコンパートメント <Compartment_Name> で ONS トピックを管理することを許可します。
グループ <Group_Name> がコンパートメント <Compartment_Name> でメトリックを検査することを許可します。
グループ <Group_Name> がコンパートメント <Compartment_Name> でメトリックを読み取ることを許可します。
グループ <Group_Name> がコンパートメント <Compartment_Name> でタグの名前空間を使用することを許可します。
グループ <Group_Name> がコンパートメント <Compartment_Name>でロググループを読み取ることを許可します。
グループ <Group_Name> がインスタンスプール コンパートメント <Compartment_Name> を使用することを許可します。
グループ <Group_Name> がテナントでクラウドシェルを使用することを許可します。
グループ <Group_Name> がテナントのオブジェクトストレージ名前空間を読み取ることを許可します
グループ <Group_Name> がテナント内のリポジトリを管理することを許可します。
(注) |
テナントレベルでポリシーを作成することもできます。ユーザーの責任と判断のもとで、すべての権限を自由に指定できます。 |
Oracle 関数の権限
Oracle 関数が別の Oracle Cloud Infrastructure リソースにアクセスできるようにするには、関数をダイナミックグループに含めてから、そのリソースへのダイナミック グループ アクセスを許可するポリシーを作成します。
ダイナミックグループの作成
ダイナミックグループを作成するには、
に移動します。ダイナミックグループの作成時に次のルールを指定します。
ALL {resource.type = 'fnfunc', resource.compartment.id = '<Your_Compartment_OCID>'}
ダイナミックグループの詳細については、次を参照してください。
ダイナミックグループのポリシーの作成
ポリシーを追加するには、
に移動します。次のポリシーをグループに追加します。Allow dynamic-group <Dynamic_Group_Name> to manage all-resources in compartment <Compartment_OCID>
ASAv:OCI Auto Scale ソリューションは、GitHub リポジトリ形式で配布されます。リポジトリからファイルをプルまたはダウンロードできます。
make.py ファイルは、複製されたリポジトリ内にあります。このプログラムは、Oracle 関数とテンプレートファイルを ZIP ファイルに圧縮します。それらをターゲットフォルダーにコピーします。これらのタスクを実行するには、Python 3 環境が設定されている必要があります。
(注) |
この Python スクリプトは Linux 環境でのみ使用できます。 |
次を設定する必要があります。
VCN
ASAv アプリケーションの要件に応じて VCN を作成します。インターネットへのルートが割り当てられたサブネットが 1 つ以上あるインターネットゲートウェイを備えた VPC を作成します。
VCN の作成については、「https://docs.oracle.com/en-us/iaas/Content/GSG/Tasks/creatingnetwork.htm」を参照してください。
アプリケーションサブネット
ASAv アプリケーションの要件に応じてサブネットを作成します。このユースケースに従ってソリューションを導入するには、ASAv インスタンスの運用に 3 つのサブネットが必要です。
サブネットの作成については、https://docs.oracle.com/en-us/iaas/Content/Network/Tasks/managingVCNs_topic-Overview_of_VCNs_and_Subnets.htm# を参照してください。
外部サブネット
サブネットには、インターネットゲートウェイへの「0.0.0.0/0」のルートが必要です。このサブネットには、Cisco ASAv の外部インターフェイスとインターネット向けロードバランサが含まれています。アウトバウンドトラフィック用に NAT ゲートウェイが追加されていることを確認します。
詳細については、次のマニュアルを参照してください。
内部サブネット
これは、NAT/インターネットゲートウェイの有無にかかわらず、アプリケーションサブネットに似ています。
(注) |
ASAv 正常性プローブの場合、ポート 80 を介してメタデータサーバー(169.254.169.254)に到達できます。 |
管理サブネット
管理サブネットは、ASAv への SSH 接続をサポートするようにパブリックにする必要があります。
セキュリティ グループ:ASAv インスタンスのネットワーク セキュリティ グループ
次の要件に対応した ASAv インスタンスのセキュリティグループを設定します。
Oracle 関数(同じ VCN 内)は、ASAv の管理アドレスへの SSH 接続を実行します。
管理ホストでは、 SSH を介した ASAv インスタンスヘのアクセスが必要になる場合があります。
ASAv はライセンスのために CSSM/Satellite サーバーとの通信を開始します。
オブジェクトストレージの名前空間
このオブジェクトストレージの名前空間は、configuration.txt ファイルを持つ静的 Web サイトをホストするために使用されます。configuration.txt ファイルの事前認証済みリクエストを作成する必要があります。この事前認証された URL は、テンプレートの展開時に使用されます。
(注) |
アップロードされた次の設定に、HTTP URL を介して ASAv インスタンスからアクセスできることを確認します。 ASAv を起動すると、 このコマンドにより、ASAv の起動を configuration.txt ファイルで設定できるようになります。 |
configuration.txt ファイルのアップロード
ASAv 構成ファイルの事前認証済みリクエスト URL を作成するには、次の手順を実行します。
の順にクリックします。
[アップロード(Upload)] をクリックします。
構成ファイルがアップロードされたら、下の図に示すように、[事前認証済みリクエストの作成(Create Pre-Authenticated Request)] を選択します。
(注) |
これで、オラクル関数から構成ファイルにアクセスできるようになります。 |
インバウンドトラフィック
オブジェクト、ライセンス、NAT ルール、およびアクセスポリシーの設定で説明されているように、configuration.txt 内の <Application VM IP> アドレスが正しいことを確認します。
アウトバウンドトラフィック
オブジェクト、ライセンス、NAT ルール、およびアクセスポリシーの設定で説明されているように、configuration.txt 内の <External Server IP> アドレスが正しいことを確認します。
外部 VCN に 1 つの NAT ゲートウェイがあることを確認します。
次の図の例に示すように、 NAT ゲートウェイを経由する外部 VCN のルートテーブル内の同じ <External Server IP> アドレスを追加してください。
(注) |
この手順の詳細については、「Vault とシークレットの作成」を参照してください。 |
ASAv のパスワードは、自動スケーリング中に使用されるすべての ASAv インスタンスを設定するために使用されます。また、ASAv インスタンスの CPU 使用率データを取得するために使用されます。
したがって、パスワードを時々保存して処理する必要があります。頻繁な変更と脆弱性のため、プレーンテキスト形式での「パスワードの編集や保存はできません。パスワードには、暗号化された形式のみを使用する必要があります。
暗号化された形式のパスワードを取得するには、次の手順を実行します。
ステップ 1 |
Vault を作成します。 OCI Vault は、マスター暗号化キーを安全に作成および保存するサービスと、それらを使用する際に暗号化および復号化する方法を提供します。したがって、Vault は、自動スケールソリューションの残りの部分と同じコンパートメントに作成する必要があります(まだ作成していない場合)。 。 に移動します。 |
ステップ 2 |
マスター暗号化キーを作成します。 プレーンテキストのパスワードを暗号化するには、マスター暗号化キーが 1 つ必要です。 に移動します。 任意のビット長で、指定されたアルゴリズムのいずれかから任意のキーを選択します。
|
ステップ 3 |
暗号化されたパスワードを作成します。
|
アプリケーションが展開されているか、アプリケーションの展開プランが利用可能であるかを確認します。
ステップ 1 |
展開する前に、次の入力パラメータを収集します。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 2 |
ロードバランサの正常性プローブとアクセスポリシーのオブジェクト、ライセンス、NAT ルールを設定します。
これらの正常性プローブ接続およびデータプレーンがアクセスポリシーで許可されている必要があります。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 3 |
設定の詳細を使用して configuration.txt ファイルを更新します。 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 4 |
ユーザーが作成したオブジェクト ストレージ スペースに configuration.txt ファイルをアップロードし、アップロードしたファイルの事前認証リクエストを作成します。
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ステップ 5 |
ZIP ファイルを作成します。 make.py ファイルは、複製されたリポジトリ内にあります。
|
展開の前提条件となる手順を完了したら、OCI スタックの作成を開始します。手動展開を実行するか、(クラウドシェルを使用した展開)を実行できます。該当するバージョン用の展開スクリプトとテンプレートは、GitHub リポジトリから入手できます。
エンドツーエンドの Auto Scale ソリューションの展開は、次の 3 つの手順で構成されます。Terraform Template-1 スタックの展開、Oracle 関数の展開、次いで Terraform Template-2 の展開
ステップ 1 |
OCI ポータルにログインします。 地域は、画面の右上隅に表示されます。目的の地域内に存在していることを確認してください。 |
||
ステップ 2 |
の順に選択します。 [マイ設定(My Configuration)] を選択し、次の図に示すように、対象フォルダ内にある Terraform template1.zip ファイルを Terraform の設定ソースとして選択します。 |
||
ステップ 3 |
[トランスフォームバージョン(Transform version)] ドロップダウンリストで、0.13.x または 0.14.x を選択します。 |
||
ステップ 4 |
次の手順では、入力パラメータの収集で収集した詳細情報をすべて入力します。
|
||
ステップ 5 |
次の手順で を選択します。正常に展開されたら、Oracle 関数の展開に進みます。 |
(注) |
この手順は、Terraform Template-1 の導入が成功した後にのみ実行する必要があります。 |
OCI では、Oracle 関数は Docker イメージとしてアップロードされ、OCI コンテナレジストリに保存されます。Oracle 関数は、導入時に OCI アプリケーション(Terraform Template-1 で作成)の 1 つにプッシュする必要があります。
ステップ 1 |
OCI のクラウドシェルを開きます。 |
||||||||||||||
ステップ 2 |
deploy_oracle_functions_cloudshell.py と Oracle-Functions.zip をアップロードします。 クラウドシェルのハンバーガーメニューから [アップロード(Upload)] を選択します。 |
||||||||||||||
ステップ 3 |
ls コマンドを使用してファイルを確認します。 |
||||||||||||||
ステップ 4 |
スクリプトを実行するには、次の引数を渡します。
|
||||||||||||||
ステップ 5 |
有効な入力引数を渡して、 |
Template-2 は、アラーム、関数を呼び出すための ONS トピックなど、アラーム作成に関連するリソースを展開します。Template-2 の展開は、Terraform Template-1 の展開に似ています。
ステップ 1 |
OCI ポータルにログインします。 地域は、画面の右上隅に表示されます。目的の地域内に存在していることを確認してください。 |
ステップ 2 |
の順に選択します。 Terraform 設定のソースとして、ターゲットフォルダにある Terraform template template2.zip を選択します。 |
ステップ 3 |
次のステップで、 をクリックします。 |
展開のオーバーヘッドを回避するために、簡単なエンドツーエンドの展開スクリプトを呼び出して、自動スケールソリューション(terraform template1、template2、および Oracle 関数)を展開できます。
ステップ 1 |
対象フォルダ内にある asav_autoscale_deploy.zip ファイルをクラウドシェルにアップロードして、ファイルを抽出します。 |
ステップ 2 |
|
ステップ 3 |
Auto Scale ソリューションの導入を開始するには、クラウドシェルで ソリューションの展開が完了するまでに約 10 ~ 15 分かかります。 |
すべてのリソースが展開され、Oracle 関数がアラームとイベントに接続されているかどうかを検証します。デフォルトでは、インスタンスプールのインスタンスの最小数と最大数はゼロです。OCI UI でインスタンスプールを編集して、必要な最小数と最大数に設定できます。これにより、新しい ASAv インスタンスがトリガーされます。
1 つのインスタンスのみを起動してワークフローを確認し、そのインスタンスが期待どおりに動作しているかどうかを検証することを推奨します。この検証をポストすると、ASAv の実際の要件を展開できます。
(注) |
OCI スケーリングポリシーによる削除を回避するために、最小数の ASAv インスタンスをスケールイン保護として指定します。 |
Auto Scale スタックのアップグレード
このリリースではアップグレードはサポートされていません。スタックを再導入する必要があります。
ASAv VM のアップグレード
このリリースでは、ASAv VM のアップグレードはサポートされていません。必要な ASAv イメージを使用してスタックを再導入する必要があります。
インスタンスプール
インスタンスプール内のインスタンスの最小数と最大数を変更するには、次の手順を実行します。
をクリックします。
min_instance_count と max_instance_count をそれぞれ変更します。
インスタンスの削除/終了は、スケールインと同等ではありません。インスタンスプール内のいずれかのインスタンスがスケールインアクションではなく外部アクションのために削除/終了された場合、インスタンスプールは自動的に新しいインスタンスを開始して回復します。
Max_instance _count では、スケールアウトアクションのしきい値制限を定義しますが、UI を介してインスタンスプールのインスタンス数を変更することでしきい値を上回ることができます。UI のインスタンス数が、OCI アプリケーションで設定された max_instance_count 未満であることを確認します。それ以外の場合は、適切なしきい値に増やします。
アプリケーションから直接インスタンスプール内のインスタンスの数を減らしても、プログラムで設定されたクリーンアップアクションは実行されません。両方のロードバランサからバックエンドがドレインおよび削除されないため、ASAv に供与されているライセンスは失われます。
何らかの理由で、ASAv インスタンスに異常があり応答せず、一定期間 SSH 経由で到達できない場合、インスタンスがインスタンスプールから強制的に削除され、ライセンスが失われる可能性があります。
Oracle 関数
Oracle 関数は、実際には Docker イメージです。Docker イメージは、OCI コンテナレジストリのルートディレクトリに保存されます。Docker イメージは削除しないでください。Auto Scale ソリューションで使用される関数も削除されます。
Terraform Template-1 によって作成された OCI アプリケーションには、Oracle 関数が正しく動作するために必要な重要な環境変数が含まれています。必須でない限り、これらの環境変数の値もフォーマットも変更しないでください。加えられた変更は、新しいインスタンスにのみ反映されます。
OCI でインスタンスプールにロードバランサを関連付ける場合、ASAv で管理インターフェースとして設定されたプライマリインターフェースを使用した方法のみサポートされています。したがって、内部インターフェイスは内部ロード バランサのバックエンドセットに紐づけられます。外部インターフェイスは、外部ロードバランサのバックエンドセットに紐づけられます。これらの IP はバックエンドセットに自動的に追加されたり、削除されたりしません。Auto Scale ソリューションでは、これら両方のタスクをプログラムで処理します。ただし、外部アクション、メンテナンス、トラブルシューティングの場合は、手動で実行する必要性が生じることがあります。
要件に応じて、リスナーとバックエンドセットを使用して、ロードバランサーで追加のポートを開くことができます。今後のインスタンス IP はバックエンドセットに自動的に追加されますが、既存のインスタンス IP は手動で追加する必要があります。
ロードバランサでのリスナーの追加
ロードバランサでポートをリスナーとして追加するには、
に移動します。バックエンドをバックエンドセットに登録
ASAv インスタンスをロードバランサに登録するには、ASAv インスタンスの外部インターフェイス IP を外部ロードバランサのバックエンドセットでバックエンドとして設定する必要があります。内部インターフェイス IP は、内部ロードバランサーのバックエンドセットでバックエンドとして設定する必要があります。使用しているポートがリスナーに追加されていることを確認してください。
Terraform を使用して導入されたスタックは、OCI の Resource Manager を使用して、同じ方法で削除できます。スタックを削除すると、そのスタックによって作成されたすべてのリソースが削除され、これらのリソースに関連付けられているすべての情報が完全に削除されます。
(注) |
スタックを削除する場合は、インスタンスプールのインスタンスの最小数を 0 にして、インスタンスが終了するまで待つことを推奨します。そうすることで、すべてのインスタンスの削除が容易になり、インスタンスが残りません。 |
エンドツーエンドの Auto Scale ソリューションの削除は、次の 3 つの手順で構成されます。Terraform Template-2 スタックの削除、Oracle 関数の削除、次いで Terraform Template-1 スタックの削除
自動スケール設定を削除するには、最初に Terraform Template-2 スタックを削除する必要があります。
ステップ 1 |
OCI ポータルにログインします。 地域は、画面の右上隅に表示されます。目的の地域内に存在していることを確認してください。 |
ステップ 2 |
の順に選択します。 |
ステップ 3 |
Terraform Template-2 によって作成されたスタックを選択し、次の図に示すように [Terraformアクション(Terraform Actions)] ドロップダウンメニューで [破棄(Destroy)] を選択します。 破棄ジョブが作成されます。リソースが順次削除されるまで時間がかかります。破棄ジョブが完了したら、下の図に示すようにスタックを削除できます。 |
ステップ 4 |
Oracle 関数の削除に進みます。 |
Oracle 関数の展開は Terraform Template スタック展開の一部としてではなく、クラウドシェルを使用して個別にアップロードします。したがって、削除も Terraform スタックの削除ではサポートされていません。Terraform Template-1 によって作成された OCI アプリケーション内のすべての Oracle 関数を削除する必要があります。
ステップ 1 |
OCI ポータルにログインします。 地域は、画面の右上隅に表示されます。目的の地域内に存在していることを確認してください。 |
ステップ 2 |
の順に選択します。Template-1 スタックで作成されたアプリケーション名を選択します。 |
ステップ 3 |
このアプリケーション内で各機能にアクセスして削除します。 |
(注) |
Template-1 スタックの削除は、すべての Oracle 関数を削除した後にのみ成功します。 |
Terraform Template-2 の削除と同じです。
ステップ 1 |
OCI ポータルにログインします。 地域は、画面の右上隅に表示されます。目的の地域内に存在していることを確認してください。 |
ステップ 2 |
の順に選択します。 |
ステップ 3 |
Terraform Template-2 によって作成されたスタックを選択し、[Terraformアクション(Terraform Actions)] ドロップダウンメニューで [破棄(Destroy)] を選択します。破棄ジョブが作成されます。リソースが順次削除されるまで時間がかかります。 |
ステップ 4 |
破棄ジョブが完了したら、下の図に示すように、[その他の操作(More Actions)] ドロップダウンメニューからスタックを削除できます。 Terraform Template-1 スタックの削除が成功したら、すべてのリソースが削除され、残存しているリソースがないことを確認する必要があります。 |
スクリプトを使用してスタックやオラクル関数を削除するには、 コマンドシェルで python3 oci_asav_autoscale_teardown.py
コマンドを実行します。スタックが手動で展開されている場合は、stack1 と stack2 のスタック ID を更新し、teardown_parameters.json ファイルのアプリケーション ID を更新します。