インスタンスの自動スケーリング
Red Hat OpenStack Platform での自動スケーリングの設定
概要
第1章 コンピュートインスタンスの自動スケーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
高いシステムの使用状況に応じてコンピュートインスタンスを自動的にスケールアウトできます。CPU やメモリー使用などの要素を考慮した事前定義のルールを使用することで、必要に応じて追加のインスタンスを自動的に追加および削除するようにオーケストレーション (Heat) を設定できます。
1.1. 自動スケーリングアーキテクチャーの概要 リンクのコピーリンクがクリップボードにコピーされました!
1.1.1. オーケストレーション リンクのコピーリンクがクリップボードにコピーされました!
自動スケーリングを提供するコアコンポーネントは Orchestration (heat) です。Orchestration を使用すると、人間が判読可能な YAML テンプレートを使用してルールを定義することができます。これらのルールは、Telemetry データに基づいてシステムの負荷を評価するのに適用され、スタックにインスタンスをさらに追加する必要があるかどうかを判断します。負荷が減ると、オーケストレーションは未使用のインスタンスを再び自動的に削除できます。
1.1.2. Telemetry リンクのコピーリンクがクリップボードにコピーされました!
Telemetry を使用して Red Hat OpenStack Platform 環境のパフォーマンスを監視し、インスタンスと物理ホストの CPU、ストレージ、およびメモリー使用に関するデータを収集できます。オーケストレーションテンプレートは Telemetry データを検査し、事前定義のアクションを開始するかどうかを評価します。
1.1.3. 主要な用語 リンクのコピーリンクがクリップボードにコピーされました!
- スタック - スタックは、アプリケーションを操作するために必要なすべてのリソースを表します。1 つのインスタンスとそのリソースではシンプルで、複数階層アプリケーションを設定する複数のインスタンスとすべてのリソースの依存関係の場合は複雑になります。
テンプレート - Heat が実行する一連のタスクを定義する YAML スクリプト。たとえば、特定の機能に個別のテンプレートを使用することが推奨されます。
- テンプレートファイル - ここで、Telemetry が応答する必要があるしきい値を定義し、自動スケーリンググループを定義します。
- 環境ファイル - 環境のビルド情報 (使用するフレーバーとイメージ、仮想ネットワークの設定方法、インストールするソフトウェア) を定義します。
1.2. 例: CPU の使用状況に基づく自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
この例では、オーケストレーションは Telemetry データを検査し、CPU の高い使用率に対応してインスタンスの数を自動的に増やします。必要なルールとその後の設定を定義するために、スタックテンプレートと環境テンプレートが作成されます。この例では、ネットワークなどの既存のリソースを利用し、独自の環境では異なる可能性が高い名前を使用しています。
インスタンスのフレーバー、ネットワーク設定、イメージタイプを記述した環境テンプレートを作成し、テンプレートの
/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 しきい値と追加するインスタンス数を記述します。インスタンスグループも作成し、このテンプレートに参加できるインスタンスの最小数および最大数を定義します。
注記granularityパラメーターは、gnocchicpu_utilメトリックの粒度に従って設定する必要があります。詳細については、この ソリューション記事 を参照してください。~/stacks/example1/template.yamlに以下の値を保存します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の OpenStack コマンドを実行して、環境を構築し、インスタンスをデプロイします。
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_alarm_highおよびcpu_alarm_lowで定義されているように、スケールアップまたはスケールダウンイベントをトリガーするために使用される 2 つの CPU アラームも作成します。トリガーが存在することを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.1. インスタンスの自動スケールアップのテスト リンクのコピーリンクがクリップボードにコピーされました!
Orchestration は、cpu_alarm_high しきい値の定義に基づいて、インスタンスを自動的にスケーリングできます。CPU 使用率が threshold パラメーターで定義された値に達すると、負荷を分散するために別のインスタンスが開始されます。上記の template.yaml ファイルの threshold は 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 ddコマンドを実行すると、cirros インスタンスで 100% の CPU 使用率が期待できます。アラームがトリガーされていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow しばらくすると (約 60 秒)、Orchestration は別のインスタンスを開始し、それをグループに追加します。これは、
nova listコマンドで確認できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow さらに少し経過したら、Orchestration が 3 つのインスタンスに再度自動的にスケーリングしていることを確認します。設定は最大で 3 つのインスタンスに設定されているため、これ以上スケールアップすることはありません (
scaleup_group定義:max_size)。繰り返しますが、上記のコマンドで確認できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2.2. インスタンスの自動スケールダウン リンクのコピーリンクがクリップボードにコピーされました!
オーケストレーションは、cpu_alarm_low しきい値に基づいてインスタンスを自動的にスケールダウンすることもできます。この例では、CPU 使用率が 5% を下回るとインスタンスが縮小されます。
実行中の
ddプロセスを終了して、Orchestration がインスタンスのスケールダウンを開始するのを確認します。killall dd
$ killall ddCopy to Clipboard Copied! Toggle word wrap Toggle overflow ddプロセスを停止すると、cpu_alarm_low eventがトリガーされます。これにより、Orchestration は自動的にスケールダウンを開始し、インスタンスを削除します。対応するアラームがトリガーされたことを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 5 分後、Orchestration はインスタンスの数を
scaleup_group定義のmin_sizeパラメーターで定義された最小値まで継続的に減らします。このシナリオでは、min_sizeパラメーターは1に設定されています。
1.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