インスタンスの自動スケーリング
Red Hat OpenStack Platform での自動スケーリングの設定
概要
第1章 本ガイドについて リンクのコピーリンクがクリップボードにコピーされました!
現在 Red Hat では、本リリース用の本ガイドに記載されている情報および手順の見直しを行っています。
本書は、製品ドキュメント から利用可能な Red Hat OpenStack Platform 12 のドキュメントをベースにしています。
現在の Red Hat OpenStack Platform リリース用にサポートが必要な場合は、Red Hat サポートにお問い合わせください。
第2章 コンピュートインスタンスの自動スケーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
大きなシステムの使用に応じて、コンピュートインスタンスを自動的にスケールアウトします。CPU やメモリーの使用などの要因を考慮し、必要に応じてインスタンスを自動的に追加(heat)できるように、事前定義済みのルールを追加することができます。
2.1. 自動スケーリングアーキテクチャーの概要 リンクのコピーリンクがクリップボードにコピーされました!
2.1.1. オーケストレーション リンクのコピーリンクがクリップボードにコピーされました!
自動スケーリングを提供するコアコンポーネントは Orchestration(heat)です。Orchestration を使用して、人間が判読可能な YAML テンプレートを使ってルールを定義します。これらのルールは、Telemetry データに基づいてシステムの負荷を評価するために適用され、スタックにインスタンスを追加する必要があるかどうかを確認します。負荷が減ると、オーケストレーションは未使用のインスタンスを再び自動的に削除できます。
2.1.2. テレメトリー リンクのコピーリンクがクリップボードにコピーされました!
Telemetry は、Red Hat OpenStack Platform 環境のパフォーマンスを監視し、インスタンスおよび物理ホストの CPU、ストレージ、およびメモリー使用率のデータを収集します。オーケストレーションテンプレートは Telemetry データを検査し、事前定義のアクションを開始するかどうかを評価します。
2.1.3. 主要な用語 リンクのコピーリンクがクリップボードにコピーされました!
- stack
- アプリケーションの操作に必要なリソースのコレクション。スタックは、単一インスタンスとそのリソースとしてシンプルなものであったり、複数層のアプリケーションを構成するリソースの全依存関係を持つ複数のインスタンスとして複雑な場合があります。
- テンプレート
heat が実行する一連のタスクを定義する YAML スクリプト。たとえば、特定の機能に個別のテンプレートを使用することが推奨されます。
- テンプレートファイル: Telemetry が応答するしきい値を定義し、自動スケーリンググループを定義します。
- 環境ファイル: 環境の構築情報(使用するフレーバーとイメージ、仮想ネットワークの設定方法、およびインストールするソフトウェア)を定義します。
2.2. 例:CPU の使用状況に基づく自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
この例では、Orchestrationは Telemetry データを検査し、CPU の高い使用率に対応してインスタンスの数を自動的に増やします。スタックテンプレートおよび環境テンプレートを作成して、ルールとサブ設定を定義します。以下の例では、ネットワークなどの既存のリソースを使用し、独自の環境内のリソースとは異なる名前を使用します。
cpu_util メトリックは非推奨となり、Red Hat OpenStack Platform から削除されました。
手順
インスタンスのフレーバー、ネットワーク設定、およびイメージ種別を記述する環境テンプレートを作成します。テンプレートを
/home/<user>/stacks/example1/cirros.yamlファイルに保存します。<user>変数を実際のユーザー名に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Orchestration リソースを
~/stacks/example1/environment.yamlに登録します。resource_registry: "OS::Nova::Server::Cirros": ~/stacks/example1/cirros.yamlresource_registry: "OS::Nova::Server::Cirros": ~/stacks/example1/cirros.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow スタックテンプレートを作成します。監視する CPU しきい値と、追加するインスタンス数を記述します。インスタンスグループも作成し、このテンプレートに参加できるインスタンスの最小数および最大数を定義します。
注記cpu_utilメトリックは非推奨となり、Red Hat OpenStack Platform から削除されました。同等の機能を取得するには、累積のcpuメトリックおよびrate:mean集約メソッドが含まれるアーカイブポリシーを使用します(例:ceilometer-high-rateおよびceilometer-low-rate)。CPU 使用率のアラームにcpuメトリクスを使用するには、しきい値を%から ns に変換する必要があります。式は ns = 1,000,000,000 x {granularity} x {percentage_in_decimal} です。たとえば、しきい値が 80% で粒度が1秒の場合、しきい値は 1,000,000,000 x 1 x 0.8 = 800,000,000.0 です。~/stacks/example1/template.yamlに以下の値を保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを入力して環境をビルドしてインスタンスをデプロイします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Orchestrationはスタックを作成し、
scaleup_group定義のmin_sizeパラメーターで定義されているように、定義された最小数の cirros インスタンスを起動します。インスタンスが正常に作成されたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow また、オーケストレーションは cpu_gitops_
high および cpu_gitopsアラームも作成します。トリガーが存在することを確認します。_low で定義されているように、スケールアップイベントまたはスケールダウンイベントをトリガーするのに使用される 2 つの cpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.1. インスタンスの自動スケーリングのテスト リンクのコピーリンクがクリップボードにコピーされました!
Orchestrationは、cpu_alarm_high しきい値の定義に基づいて、インスタンスを自動的にスケーリングできます。CPU が使用する値が threshold パラメーターで定義される値に達すると、別のインスタンスを起動して負荷分散を行います。上記の template.yaml ファイルの しきい 値は 80% に設定されます。
手順
インスタンスにログオンし、複数の
ddコマンドを実行してロードを生成します。ssh -i ~/mykey.pem cirros@192.168.122.8 sudo dd if=/dev/zero of=/dev/null & sudo dd if=/dev/zero of=/dev/null & sudo dd if=/dev/zero of=/dev/null &
$ ssh -i ~/mykey.pem cirros@192.168.122.8 $ sudo dd if=/dev/zero of=/dev/null & $ sudo dd if=/dev/zero of=/dev/null & $ sudo dd if=/dev/zero of=/dev/null &Copy to Clipboard Copied! Toggle word wrap Toggle overflow cirros インスタンスで CPU が 100% 使用されていることが予想されます。アラームがトリガーされていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 約 60 秒後に、Orchestrationは別のインスタンスを開始し、グループに追加します。これを確認するには、以下のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 短期間に、Orchestration がインスタンス 3 つに自動的にスケーリングされていることを確認します。この設定は最大 3 つのインスタンスに設定されるため、それ以上のインスタンスをスケーリングすることはできません。以下のコマンドを使用して、Orchestration が 3 つのインスタンスに再度スケーリングされたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. インスタンスの自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
オーケストレーションは、cpu_gitops_low のしきい値に基づいてインスタンスを自動的にスケールダウンできます。この例では、CPU 使用率が 5% 未満の場合、インスタンスはスケールダウンします。
手順
実行中の
ddプロセスを終了し、Orchestration が開始してインスタンスをスケールダウンします。killall dd
$ killall ddCopy to Clipboard Copied! Toggle word wrap Toggle overflow ddプロセスを停止すると、cpu_gitops_low イベントがトリガーされます。これにより、Orchestrationは自動的にスケールダウンを開始し、インスタンスを削除します。対応するアラームがトリガーされていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 数分後に、Orchestration は、
scaleup_group定義のmin_sizeパラメーターで定義されている最小値に、インスタンスの数を継続的に減らします。このシナリオでは、min_sizeパラメーターは1に設定されています。
2.2.3. 設定のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
環境が適切に機能していない場合は、ログファイルと履歴レコードでエラーを確認できます。
状態遷移に関する情報を表示するには、スタックイベントレコードを一覧表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アラーム履歴ログを読み取るには、以下を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のスタック用に heat が収集するスケールアウトまたはスケールダウン操作の記録を確認するには、
awkコマンドを使用してheat-engine.logを解析します。awk '/Stack UPDATE started/,/Stack CREATE completed successfully/ {print $0}' /var/log/containers/heat/heat-engine.log$ awk '/Stack UPDATE started/,/Stack CREATE completed successfully/ {print $0}' /var/log/containers/heat/heat-engine.logCopy to Clipboard Copied! Toggle word wrap Toggle overflow aodh関連の情報を表示するには、evaluator.logを調べます。grep -i alarm /var/log/containers/aodh/evaluator.log | grep -i transition
$ grep -i alarm /var/log/containers/aodh/evaluator.log | grep -i transitionCopy to Clipboard Copied! Toggle word wrap Toggle overflow