インスタンスの自動スケーリング
Red Hat OpenStack Platform での自動スケーリングの設定
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに対するご意見をお聞かせください。ドキュメントの改善点があればお知らせください。
ドキュメントへのダイレクトフィードバック (DDF) 機能の使用 (英語版のみ)
特定の文章、段落、またはコードブロックに対して直接コメントを送付するには、DDF の Add Feedback 機能を使用してください。なお、この機能は英語版のドキュメントでのみご利用いただけます。
- Multi-page HTML 形式でドキュメントを表示します。
- ドキュメントの右上隅に Feedback ボタンが表示されていることを確認してください。
- コメントするテキスト部分をハイライト表示します。
- Add Feedback をクリックします。
- Add Feedback フィールドにコメントを入力します。
- オプション: ドキュメントチームが問題の詳細を確認する際に使用できるメールアドレスを記入してください。
- Submit をクリックします。
第1章 コンピュートインスタンスの自動スケーリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
高いシステムの使用状況に応じてコンピュートインスタンスを自動的にスケールアウトする方法について説明します。CPU やメモリー使用量などの要素を考慮する事前定義済みのルールを使用することで、必要に応じて自動的に追加のインスタンスを追加/削除するように Orchestration(heat) を設定できます。
1.1. 自動スケーリングアーキテクチャーの概要 リンクのコピーリンクがクリップボードにコピーされました!
自動スケーリングを提供するコアコンポーネントは Orchestration (heat) です。Orchestration を使用すると、人間が判読可能な YAML テンプレートを使用してルールを定義することができます。これらのルールは、Telemetry データに基づいてシステムの負荷を評価するのに適用され、スタックにインスタンスをさらに追加する必要があるかどうかを判断します。負荷が減ると、オーケストレーションは未使用のインスタンスを再び自動的に削除できます。
Telemetry を使用して Red Hat OpenStack Platform (RHOSP) 環境のパフォーマンスを監視し、インスタンスおよび物理ホストの CPU、ストレージ、およびメモリー使用率に関するデータを収集します。オーケストレーションテンプレートは Telemetry データを検査し、事前定義のアクションを開始するかどうかを評価します。
1.1.1. 自動スケーリングに関する主要な用語 リンクのコピーリンクがクリップボードにコピーされました!
- スタック: スタックは、アプリケーションの操作に必要なすべてのリソースを表します。1 つのインスタンスとそのリソースではシンプルで、複数階層アプリケーションを設定する複数のインスタンスとすべてのリソースの依存関係の場合は複雑になります。
テンプレート: Heat が実行する一連のタスクを定義する YAML スクリプト。たとえば、特定の機能に個別のテンプレートを使用することが推奨されます。
- テンプレートファイル: Telemetry が応答するしきい値を定義し、自動スケーリンググループを定義します。
- 環境ファイル: 使用するフレーバーおよびイメージ、仮想ネットワークの設定方法、インストールするソフトウェアなど、環境のビルド情報を定義します。
1.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 また、Orchestration は、
cpu_alarm_highおよびcpu_alarm_lowで定義されているように、スケールアップまたはスケールダウンイベントをトリガーする 2 つの CPU アラームも作成します。トリガーが存在することを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.3. インスタンスの自動スケールアップのテスト リンクのコピーリンクがクリップボードにコピーされました!
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 インスタンスでは 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 つのインスタンスに設定されているので、さらにスケーリングすることはできません (
scaleup_groupの定義:max_size)。インスタンスが 3 つあることを確認するには、以下のコマンドを入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. インスタンスを自動スケールダウン リンクのコピーリンクがクリップボードにコピーされました!
Orchestration を使用して、cpu_alarm_low しきい値に基づいてインスタンスを自動的にスケールダウンできます。この例では、CPU の使用率が 5% 未満の場合に、インスタンスはスケールダウンされます。
手順
実行中の
ddプロセスを終了して、Orchestration がインスタンスのスケールダウンを開始するのを確認します。killall dd
$ killall ddCopy to Clipboard Copied! Toggle word wrap Toggle overflow ddプロセスを停止すると、cpu_alarm_low eventアラームがトリガーされます。これにより、オーケストレーションは自動的にスケールダウンを開始し、インスタンスを削除します。対応するアラームがトリガーされていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 数分後に、オーケストレーションは、
scaleup_group定義のmin_sizeパラメーターで定義される最小値までインスタンスの数を継続的に削減します。このシナリオでは、min_sizeパラメーターは1に設定されています。
1.5. 自動スケーリングのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
環境が適切に機能していない場合は、ログファイルと履歴レコードでエラーを確認できます。
手順
状態遷移についての情報を取得するには、スタックイベントレコードをリスト表示します。
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