インスタンスの自動スケーリング
Red Hat OpenStack Platform での自動スケーリングの設定
概要
第1章 自動スケーリングコンポーネントの概要 リンクのコピーリンクがクリップボードにコピーされました!
テレメトリーコンポーネントを使用して、CPU、ストレージ、メモリー使用量など、Red Hat OpenStack Platform (RHOSP) 環境に関するデータを収集します。ワークロードの需要とリソースの可用性に応じて、インスタンスを起動およびスケーリングできます。オーケストレーションサービス (ヒート) テンプレートでインスタンスのスケーリングを制御するテレメトリーデータの上限と下限を定義できます。
次のテレメトリーコンポーネントを使用して、インスタンスの自動スケーリングを制御します。
- データ収集: テレメトリーは、データ収集サービス (Ceilometer) を使用して、メトリクスとイベントデータを収集します。
- ストレージ: テレメトリーは、メトリクスデータを時系列データベースサービス (gnocchi) に保存します。
- アラーム: テレメトリーは、Alarming サービス (aodh) を使用して、Ceilometer によって収集されたメトリクスまたはイベントデータに対するルールに基づき、アクションをトリガーします。
1.1. 自動スケーリング用のデータ収集サービス (Ceilometer) リンクのコピーリンクがクリップボードにコピーされました!
Ceilometer を使用して、Red Hat OpenStack Platform (RHOSP) コンポーネントの測定およびイベント情報に関するデータを収集できます。
Ceilometer サービスは、3 つのエージェントを使用して、RHOSP コンポーネントからデータを収集します。
- コンピュートエージェント (ceilometer-agent-compute): 各コンピュートノードで実行され、リソース使用統計をポーリングします。
- 中央エージェント (ceilometer-agent-central): コントローラーノードで実行され、コンピュートノードによって提供されないリソースのリソース使用統計をポーリングします。
- 通知エージェント (ceilometer-agent-notification): コントローラーノードで実行され、メッセージキューからのメッセージを使用して、イベントおよび測定データを構築します。
Ceilometer エージェントは、パブリッシャーを使用して、時系列データベースサービス (gnocchi) などの対応エンドポイントにデータを送信します。
関連情報
- 運用測定 ガイドの Ceilometer。
1.1.1. パブリッシャー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenStack Platform (RHOSP) では、複数の転送方法を使用して、収集したデータをストレージまたは Service Telemetry Framework (STF) などの外部システムに転送できます。
gnocchi パブリッシャーを有効にすると、測定およびリソース情報が時系列データとして保存されます。
1.2. 自動スケーリング用の時系列データベースサービス (gnocchi) リンクのコピーリンクがクリップボードにコピーされました!
Gnocchi は、SQL でメトリクスを保存するために使用できる時系列データベースです。Alarming サービス (aodh) と Orchestration サービス (heat) は、自動スケーリングのために、gnocchi に保存されたデータを使用します。
関連情報
1.3. Alarming サービス (aodh) リンクのコピーリンクがクリップボードにコピーされました!
Ceilometer によって収集され、gnocchi に保存されたメトリクスデータに対するルールに基づいて、アクションをトリガーするように、Alarming サービス (aodh) を設定できます。アラームは以下の状態のいずれかになります。
- Ok: メトリクスまたはイベントは、許容可能な状態です。
-
Firing: メトリクスまたはイベントは、定義された
Ok状態から外れています。 - insufficient data: アラームの状態は不明です。たとえば、要求された粒度のデータがない場合や、チェックがまだ実行されていない場合などです。
1.4. 自動スケーリング用のオーケストレーションサービス (heat) リンクのコピーリンクがクリップボードにコピーされました!
Director は、オーケストレーションサービス (heat) テンプレートをオーバークラウドデプロイメントのテンプレート形式として使用します。通常、heat テンプレートは YAML 形式で表現されます。テンプレートの目的は、heat が作成するリソースのコレクションであるスタックを定義および作成し、リソースを設定することです。リソースとは、コンピュートリソース、ネットワーク設定、セキュリティーグループ、スケーリングルール、カスタムリソースなどの Red Hat OpenStack Platform (RHOSP) のオブジェクトを指します。
第2章 自動スケーリングのためのオーバークラウドの設定とデプロイ リンクのコピーリンクがクリップボードにコピーされました!
自動スケーリングを有効にするオーバークラウド上のサービスのテンプレートを設定する必要があります。
手順
- 自動スケーリング用にオーバークラウドをデプロイする前に、自動スケーリングサービス用の環境テンプレートとリソースレジストリーを作成します。詳細は、「自動スケーリングのためのオーバークラウドの設定」 を参照してください。
- オーバークラウドをデプロイする。詳細は、「自動スケーリングのためのオーバークラウドのデプロイ」 を参照してください。
2.1. 自動スケーリングのためのオーバークラウドの設定 リンクのコピーリンクがクリップボードにコピーされました!
自動スケーリングを提供するサービスをデプロイするために必要な環境テンプレートとリソースレジストリーを作成します。
手順
-
アンダークラウドホストに
stackユーザーとしてログインします。 自動スケーリング設定ファイル用のディレクトリーを作成します。
mkdir -p $HOME/templates/autoscaling/
$ mkdir -p $HOME/templates/autoscaling/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自動スケーリングのためにサービスが必要とする定義のリソースレジストリーファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自動スケーリングに必要なサービスを設定する環境テンプレートを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Ceph Storage を時系列データベースサービスのデータストレージバックエンドとして使用する場合は、以下のパラメーターを
parameters-autoscaling.yamlファイルに追加します。parameter_defaults: GnocchiRbdPoolName: 'metrics' GnocchiBackend: 'rbd'
parameter_defaults: GnocchiRbdPoolName: 'metrics' GnocchiBackend: 'rbd'Copy to Clipboard Copied! Toggle word wrap Toggle overflow メトリクスを保存する前に、定義済みのアーカイブポリシー
genericを作成する必要があります。このアーカイブポリシーは、デプロイ後に定義します。詳細は、「自動スケーリング用の汎用アーカイブポリシーの作成」 を参照してください。-
polling_intervalパラメーターを、たとえば 60 秒に設定します。polling_intervalパラメーターの値は、アーカイブポリシーの作成時に定義した gnocchi 粒度の値に一致する必要があります。詳細は、「自動スケーリング用の汎用アーカイブポリシーの作成」 を参照してください。 - オーバークラウドをデプロイする。詳細は、「自動スケーリングのためのオーバークラウドのデプロイ」 を参照してください。
2.2. 自動スケーリングのためのオーバークラウドのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
director を使用するか、スタンドアロン環境を使用して、自動スケーリング用にオーバークラウドをデプロイできます。
前提条件
- 自動スケーリング機能を提供するサービスをデプロイするための環境テンプレートを作成している。詳細は、「自動スケーリングのためのオーバークラウドの設定」 を参照してください。
2.2.1. director を使用して自動スケーリング用のオーバークラウドをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
director を使用して、オーバークラウドをデプロイします。スタンドアロン環境を使用している場合は、「スタンドアロン環境で自動スケーリング用のオーバークラウドをデプロイする」 を参照してください。
前提条件
- デプロイされたアンダークラウド。詳細は、アンダークラウドに director をインストールする を参照してください。
手順
-
アンダークラウドに
stackユーザーとしてログインします。 stackrcアンダークラウド認証情報ファイルを入手します。source ~/stackrc
[stack@director ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 自動スケーリング環境ファイルを他の環境ファイルとともにスタックに追加し、オーバークラウドをデプロイします。
openstack overcloud deploy --templates \ -e [your environment files] \ -e $HOME/templates/autoscaling/parameters-autoscaling.yaml \ -e $HOME/templates/autoscaling/resources-autoscaling.yaml
(undercloud)$ openstack overcloud deploy --templates \ -e [your environment files] \ -e $HOME/templates/autoscaling/parameters-autoscaling.yaml \ -e $HOME/templates/autoscaling/resources-autoscaling.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.2.2. スタンドアロン環境で自動スケーリング用のオーバークラウドをデプロイする リンクのコピーリンクがクリップボードにコピーされました!
実稼働前環境で環境ファイルをテストするには、スタンドアロンデプロイメントを使用して、自動スケーリングに必要なサービスを含むオーバークラウドをデプロイします。
この手順では、実稼働環境に合わせて変更する必要がある値とコマンドの例を使用します。
director を使用して、自動スケーリング用のオーバークラウドをデプロイする場合は、「director を使用して自動スケーリング用のオーバークラウドをデプロイする」 を参照してください。
前提条件
- オールインワンの RHOSP 環境が python3-tripleoclient でステージングされている。詳細は、オールインワンの Red Hat OpenStack Platform 環境のインストール を参照してください。
- オールインワンの RHOSP 環境が、基本設定でステージングされている。詳細は、オールインワンの Red Hat OpenStack Platform 環境の設定 を参照してください。
手順
オーバークラウドのデプロイメントを管理するユーザー (例:
stackユーザー) に変更します。su - stack
[root@standalone ~]# su - stackCopy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドデプロイメントの環境変数
$IP、$NETMASK、および$VIPを置換または設定します。export IP=192.168.25.2 export VIP=192.168.25.3 export NETMASK=24
$ export IP=192.168.25.2 $ export VIP=192.168.25.3 $ export NETMASK=24Copy to Clipboard Copied! Toggle word wrap Toggle overflow オーバークラウドをデプロイして、リソースとパラメーターファイルをテストおよび検証します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OS_CLOUD環境変数をエクスポートします。export OS_CLOUD=standalone
$ export OS_CLOUD=standaloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
- Director のインストールと使用 ガイド。
- スタンドアロン導入 ガイド。
2.3. 自動スケーリングのためのオーバークラウドデプロイメントの検証 リンクのコピーリンクがクリップボードにコピーされました!
自動スケーリングサービスがデプロイされ、有効になっていることを確認します。検証の出力はスタンドアロン環境からのものですが、director ベースの環境でも同様の出力が得られます。
前提条件
- スタンドアロンまたは director を使用して、既存のオーバークラウドに自動スケーリングサービスをデプロイしている。詳細は、「自動スケーリングのためのオーバークラウドのデプロイ」 を参照してください。
手順
-
stackユーザーとして環境にログインします。 スタンドアロン環境の場合は、
OS_CLOUD環境変数を設定します。export OS_CLOUD=standalone
[stack@standalone ~]$ export OS_CLOUD=standaloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow director 環境の場合は、
stackrcアンダークラウド認証情報ファイルを入手します。source ~/stackrc
[stack@undercloud ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
デプロイが成功したことを確認し、自動スケーリング用のサービス API エンドポイントが利用可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービスがオーバークラウドで実行されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 時系列データベースサービスが利用可能であることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第3章 heat サービスを使用した自動スケーリング リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドで自動スケーリングを提供するために必要なサービスをデプロイしたら、オーケストレーションサービス (heat) が自動スケーリング用のインスタンスを管理できるように、オーバークラウド環境を設定する必要があります。
前提条件
- デプロイされたオーバークラウド。詳細は、「自動スケーリングのためのオーバークラウドのデプロイ」 を参照してください。
手順
3.1. 自動スケーリング用の汎用アーカイブポリシーの作成 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドに自動スケーリング用のサービスをデプロイしたら、オーケストレーションサービス (heat) が自動スケーリング用のインスタンスを管理できるように、オーバークラウド環境を設定する必要があります。
前提条件
- 自動スケーリングサービスを備えたオーバークラウドをデプロイしている。詳細は、「自動スケーリングのためのオーバークラウドの設定」 を参照してください。
手順
-
stackユーザーとして環境にログインします。 スタンドアロン環境の場合は、
OS_CLOUD環境変数を設定します。export OS_CLOUD=standalone
[stack@standalone ~]$ export OS_CLOUD=standaloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow director 環境の場合は、
stackrcファイルを入手します。source ~/stackrc
[stack@undercloud ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow $HOME/templates/autoscaling/parameters-autoscaling.yamlで定義されたアーカイブポリシーを作成します。openstack metric archive-policy create generic \ --back-window 0 \ --definition timespan:'4:00:00',granularity:'0:01:00',points:240 \ --aggregation-method 'rate:mean' \ --aggregation-method 'mean'
$ openstack metric archive-policy create generic \ --back-window 0 \ --definition timespan:'4:00:00',granularity:'0:01:00',points:240 \ --aggregation-method 'rate:mean' \ --aggregation-method 'mean'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
アーカイブポリシーが作成されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.2. インスタンスを自動的にスケーリングするための heat テンプレートの設定 リンクのコピーリンクがクリップボードにコピーされました!
オーケストレーションサービス (heat) テンプレートを設定して、インスタンスを作成し、トリガー時に、インスタンスを作成およびスケーリングするアラームを設定できます。
この手順では、環境に合わせて変更する必要がある値の例を使用します。
前提条件
- 自動スケーリングサービスを使用して、オーバークラウドをデプロイしている。詳細は、「自動スケーリングのためのオーバークラウドのデプロイ」 を参照してください。
- テレメトリーストレージを自動スケーリングするためのアーカイブポリシーを使用して、オーバークラウドを設定している。詳細は、「自動スケーリング用の汎用アーカイブポリシーの作成」 を参照してください。
手順
stackユーザーとして環境にログインします。source ~/stackrc
$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 自動スケーリンググループのインスタンス設定を保持するディレクトリーを作成します。
mkdir -p $HOME/templates/autoscaling/vnf/
$ mkdir -p $HOME/templates/autoscaling/vnf/Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
$HOME/templates/autoscaling/vnf/instance.yamlなどのインスタンス設定テンプレートを作成します。 次の設定を
instance.yamlファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
parametersパラメーターは、この新しいリソースのカスタムパラメーターを定義します。 -
resourcesパラメーターのvnfサブパラメーターは、OS::Heat::AutoScalingGroupで参照されるカスタムサブリソースの名前を定義します (例:OS::Nova::Server::VNF)。
-
heat テンプレートで参照するリソースを作成します。
$ cat <<EOF > $HOME/templates/autoscaling/vnf/resources.yaml resource_registry: "OS::Nova::Server::VNF": $HOME/templates/autoscaling/vnf/instance.yaml EOF
$ cat <<EOF > $HOME/templates/autoscaling/vnf/resources.yaml resource_registry: "OS::Nova::Server::VNF": $HOME/templates/autoscaling/vnf/instance.yaml EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスのスケーリングを制御するための heat のデプロイメントテンプレートを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記スタックの出力は、情報提供用であり、ScalingPolicy または AutoScalingGroup では参照されません。出力を表示するには、
openstack stack show <stack_name>コマンドを使用します。
3.3. 自動スケーリングのためのスタンドアロンデプロイの準備 リンクのコピーリンクがクリップボードにコピーされました!
実稼働前環境で自動スケーリングされたインスタンスのスタックのデプロイメントをテストするには、スタンドアロンデプロイメントを使用して、スタックをデプロイします。この手順を使用して、スタンドアロン環境でデプロイメントをテストできます。実稼働環境では、デプロイメントコマンドが異なります。
手順
-
stackユーザーとして環境にログインします。 OS_CLOUD環境変数を設定します。export OS_CLOUD=standalone
[stack@standalone ~]$ export OS_CLOUD=standaloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートおよびパブリックネットワークインターフェイスが接続された Fedora 36 クラウドイメージを使用する、シミュレーションされた VNF ワークロードのデプロイメントを許可するようにクラウドを設定します。この例は、スタンドアロンデプロイメントを使用する作業設定です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow フレーバーを作成します。
openstack flavor create --ram 2048 --disk 10 --vcpu 2 --public m1.small
$ openstack flavor create --ram 2048 --disk 10 --vcpu 2 --public m1.smallCopy to Clipboard Copied! Toggle word wrap Toggle overflow Fedora 36 x86_64 クラウドイメージをダウンロードおよびインポートします。
curl -L 'https://download.fedoraproject.org/pub/fedora/linux/releases/36/Cloud/x86_64/images/Fedora-Cloud-Base-36-1.5.x86_64.qcow2' -o $HOME/fedora36.qcow2
$ curl -L 'https://download.fedoraproject.org/pub/fedora/linux/releases/36/Cloud/x86_64/images/Fedora-Cloud-Base-36-1.5.x86_64.qcow2' -o $HOME/fedora36.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack image create fedora36 --container-format bare --disk-format qcow2 --public --file $HOME/fedora36.qcow2
$ openstack image create fedora36 --container-format bare --disk-format qcow2 --public --file $HOME/fedora36.qcow2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 公開鍵を生成およびインポートします。
ssh-keygen -f $HOME/.ssh/id_rsa -q -N "" -t rsa -b 2048
$ ssh-keygen -f $HOME/.ssh/id_rsa -q -N "" -t rsa -b 2048Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack keypair create --public-key $HOME/.ssh/id_rsa.pub default
$ openstack keypair create --public-key $HOME/.ssh/id_rsa.pub defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow SSH、ICMP、および DNS プロトコルを許可する
basicセキュリティーグループを作成します。openstack security group create basic
$ openstack security group create basicCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0
$ openstack security group rule create basic --protocol tcp --dst-port 22:22 --remote-ip 0.0.0.0/0Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack security group rule create --protocol icmp basic
$ openstack security group rule create --protocol icmp basicCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack security group rule create --protocol udp --dst-port 53:53 basic
$ openstack security group rule create --protocol udp --dst-port 53:53 basicCopy to Clipboard Copied! Toggle word wrap Toggle overflow 外部ネットワーク (パブリック) を作成します。
openstack network create --external --provider-physical-network datacentre --provider-network-type flat public
$ openstack network create --external --provider-physical-network datacentre --provider-network-type flat publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow プライベートネットワークを作成します。
openstack network create --internal private
$ openstack network create --internal privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack subnet create private-net \ --subnet-range $PRIVATE_NETWORK_CIDR \ --network private
$ openstack subnet create private-net \ --subnet-range $PRIVATE_NETWORK_CIDR \ --network privateCopy to Clipboard Copied! Toggle word wrap Toggle overflow ルーターを作成します。
openstack router create vrouter
$ openstack router create vrouterCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack router set vrouter --external-gateway public
$ openstack router set vrouter --external-gateway publicCopy to Clipboard Copied! Toggle word wrap Toggle overflow openstack router add subnet vrouter private-net
$ openstack router add subnet vrouter private-netCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
- スタンドアロン導入 ガイド。
3.4. 自動スケーリング用のスタックデプロイメントの作成 リンクのコピーリンクがクリップボードにコピーされました!
例として操作した VNF 自動スケーリングのスタックデプロイメントを作成します。
手順
スタックを作成します。
openstack stack create \ -t $HOME/templates/autoscaling/vnf/template.yaml \ -e $HOME/templates/autoscaling/vnf/resources.yaml \ vnf
$ openstack stack create \ -t $HOME/templates/autoscaling/vnf/template.yaml \ -e $HOME/templates/autoscaling/vnf/resources.yaml \ vnfCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
スタックが正常に作成されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アラーム、スケーリングポリシー、自動スケーリンググループを含むスタックリソースが作成されたことを確認します。
export STACK_ID=$(openstack stack show vnf -c id -f value)
$ export STACK_ID=$(openstack stack show vnf -c id -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタックの作成によってインスタンスが起動されたことを確認します。
openstack server list --long | grep $STACK_ID | 62e1b27c-8d9d-44a5-a0f0-80e7e6d437c7 | vn-dvaxcqb-6bqh2qd2fpif-hicmkm5dzjug-vnf-ywrydc5wqjjc | ACTIVE | None | Running | private=192.168.100.61, 192.168.25.99 | fedora36 | a6aa7b11-1b99-4c62-a43b-d0b7c77f4b72 | m1.small | 5cd46fec-50c2-43d5-89e8-ed3fa7660852 | nova | standalone-80.localdomain | metering.server_group='cb082cbd-535e-4779-84b0-98925e103f5e' |
$ openstack server list --long | grep $STACK_ID | 62e1b27c-8d9d-44a5-a0f0-80e7e6d437c7 | vn-dvaxcqb-6bqh2qd2fpif-hicmkm5dzjug-vnf-ywrydc5wqjjc | ACTIVE | None | Running | private=192.168.100.61, 192.168.25.99 | fedora36 | a6aa7b11-1b99-4c62-a43b-d0b7c77f4b72 | m1.small | 5cd46fec-50c2-43d5-89e8-ed3fa7660852 | nova | standalone-80.localdomain | metering.server_group='cb082cbd-535e-4779-84b0-98925e103f5e' |Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタックのアラームが作成されたことを確認します。
アラーム ID を一覧表示します。アラームの状態は、一定期間、
insufficient data状態になることがあります。最小期間は、データ収集とデータストレージの粒度設定のポーリング間隔です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタックのリソースを一覧表示し、
cpu_alarm_highおよびcpu_alarm_lowリソースのphysical_resource_id値をメモします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow physical_resource_idの値は、openstack alarm listコマンドの出力のalarm_idに一致する必要があります。
スタックのメトリクスリソースが存在することを確認します。
server_groupクエリーの値をスタック ID に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタックを介して作成されたインスタンスリソースの測定値が存在することを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 自動スケーリングのテストとトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
オーケストレーションサービス (heat) を使用して、しきい値の定義に基づいて、インスタンスを自動的にスケールアップおよびスケールダウンします。環境のトラブルシューティングを行うには、ログファイルと履歴レコードでエラーを探します。
4.1. インスタンスの自動スケールアップのテスト リンクのコピーリンクがクリップボードにコピーされました!
オーケストレーションサービス (heat) を使用して、cpu_alarm_high しきい値の定義に基づいて、インスタンスを自動的にスケーリングできます。CPU 使用率が threshold パラメーターで定義された値に達すると、負荷を分散するために、別のインスタンスが起動します。template.yaml ファイルの threshold 値は、80% に設定されます。
手順
-
stackユーザーとしてホスト環境にログインします。 スタンドアロン環境の場合は、
OS_CLOUD環境変数を設定します。export OS_CLOUD=standalone
[stack@standalone ~]$ export OS_CLOUD=standaloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow director 環境の場合は、
stackrcファイルを入手します。source ~/stackrc
[stack@undercloud ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスにログインします。
ssh -i ~/mykey.pem cirros@192.168.122.8
$ ssh -i ~/mykey.pem cirros@192.168.122.8Copy to Clipboard Copied! Toggle word wrap Toggle overflow 複数の
ddコマンドを実行して、負荷を生成します。sudo dd if=/dev/zero of=/dev/null & sudo dd if=/dev/zero of=/dev/null & sudo dd if=/dev/zero of=/dev/null &
[instance ~]$ sudo dd if=/dev/zero of=/dev/null & [instance ~]$ sudo dd if=/dev/zero of=/dev/null & [instance ~]$ sudo dd if=/dev/zero of=/dev/null &Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 実行中のインスタンスを終了し、ホストに戻ります。
ddコマンドを実行すると、インスタンスで 100% の CPU 使用率を期待できます。アラームがトリガーされていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 約 60 秒後、オーケストレーションは、別のインスタンスを開始し、グループに追加します。インスタンスが作成されたことを確認するには、次のコマンドを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow しばらくしてから、オーケストレーションサービスが 3 つのインスタンスに自動スケーリングされたことを確認します。設定は、最大 3 つのインスタンスに設定されます。3 つのインスタンスがあることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2. インスタンスの自動スケールダウンのテスト リンクのコピーリンクがクリップボードにコピーされました!
オーケストレーションサービス (heat) を使用して、cpu_alarm_low しきい値に基づいて、インスタンスを自動的にスケールダウンできます。この例では、CPU の使用率が 5% 未満の場合に、インスタンスはスケールダウンされます。
手順
ワークロードインスタンス内から、実行中の
ddプロセスを終了し、オーケストレーションがインスタンスのスケールダウンを開始することを確認します。killall dd
$ killall ddCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
stackユーザーとしてホスト環境にログインします。 スタンドアロン環境の場合は、
OS_CLOUD環境変数を設定します。export OS_CLOUD=standalone
[stack@standalone ~]$ export OS_CLOUD=standaloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow director 環境の場合は、
stackrcファイルを入手します。source ~/stackrc
[stack@undercloud ~]$ source ~/stackrcCopy 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に設定されています。
4.3. 自動スケーリングのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
環境が適切に機能していない場合は、ログファイルと履歴レコードでエラーを確認できます。
手順
-
stackユーザーとしてホスト環境にログインします。 スタンドアロン環境の場合は、
OS_CLOUD環境変数を設定します。export OS_CLOUD=standalone
[stack@standalone ~]$ export OS_CLOUD=standaloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow director 環境の場合は、
stackrcファイルを入手します。source ~/stackrc
[stack@undercloud ~]$ source ~/stackrcCopy to Clipboard Copied! Toggle word wrap Toggle overflow 状態遷移の情報を取得するには、スタックイベントレコードをリスト表示します。
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
4.4. rate:mean 集計を使用する場合の自動スケーリングのしきい値に CPU テレメトリー値を使用する リンクのコピーリンクがクリップボードにコピーされました!
OS::Heat::Autoscaling ヒートオーケストレーションテンプレート (HOT) を使用し、CPU のしきい値を設定すると、値は CPU 時間のナノ秒単位で表されます。これは、インスタンスのワークロードに割り当てられた仮想 CPU の数に基づく動的な値です。このリファレンスガイドでは、Gnocchi の rate:mean 集計メソッドを使用する場合に、CPU ナノ秒値をパーセンテージで計算および表現する方法を説明します。
4.4.1. CPU テレメトリー値をパーセンテージとして計算する リンクのコピーリンクがクリップボードにコピーされました!
CPU テレメトリーは、ナノ秒単位の CPU 使用率として Gnocchi (OpenStack 時系列データストア) に保存されます。CPU テレメトリーを使用して、自動スケーリングのしきい値を定義する場合は、CPU 使用率のパーセンテージで値を表すと便利です。しきい値を定義する場合は、その方が自然です。自動スケーリンググループの一部として使用されるスケーリングポリシーを定義する場合は、パーセンテージとして定義された目的のしきい値を取得し、ポリシー定義で使用される必要なしきい値をナノ秒単位で計算できます。
| 値 (ナノ秒) | 粒度 (秒) | パーセンテージ |
|---|---|---|
| 60000000000 | 60 | 100 |
| 54000000000 | 60 | 90 |
| 48000000000 | 60 | 80 |
| 42000000000 | 60 | 70 |
| 36000000000 | 60 | 60 |
| 30000000000 | 60 | 50 |
| 24000000000 | 60 | 40 |
| 18000000000 | 60 | 30 |
| 12000000000 | 60 | 20 |
| 6000000000 | 60 | 10 |
4.4.2. インスタンスワークロードの vCPU をパーセンテージで表示する リンクのコピーリンクがクリップボードにコピーされました!
openstack metric aggregates コマンドを使用して、gnocchi に保存された CPU テレメトリーデータをインスタンスのナノ秒値ではなく、パーセンテージで表示できます。
前提条件
- 自動スケーリンググループリソースを使用して、heat スタックを作成し、インスタンスワークロードを生成している。
手順
- クラウド管理者として OpenStack 環境にログインします。
自動スケーリンググループの heat スタックの ID を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタック ID の値を環境変数に設定します。
export STACK_ID=$(openstack stack show vnf -c id -f value)
$ export STACK_ID=$(openstack stack show vnf -c id -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースタイプインスタンス (サーバー ID) ごとの集計としてメトリクスを返します。値はパーセンテージとして計算されます。集計は、CPU 時間のナノ秒単位の値として返されます。その数値を 1000000000 で割って、秒単位の値を取得します。次に、値を粒度 (この例では 60 秒) で割ります。その値は、100 を掛けて、パーセンテージに変換されます。最後に、インスタンスに割り当てられたフレーバーによって提供される vCPU の数で合計値を割ります。この例では、2 vCPU の値であり、CPU 時間のパーセンテージとして表される値を提供します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.3. インスタンスワークロードの使用可能なテレメトリーを取得する リンクのコピーリンクがクリップボードにコピーされました!
インスタンスワークロードの使用可能なテレメトリーを取得し、vCPU 使用率をパーセンテージで表します。
前提条件
- 自動スケーリンググループリソースを使用して、heat スタックを作成し、インスタンスワークロードを生成している。
手順
- クラウド管理者として OpenStack 環境にログインします。
自動スケーリンググループの heat スタックの ID を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタック ID の値を環境変数に設定します。
export STACK_ID=$(openstack stack show vnf -c id -f value)
$ export STACK_ID=$(openstack stack show vnf -c id -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow データを返すワークロードインスタンスの ID を取得します。サーバーリストの長い形式を使用し、自動スケーリンググループの一部であるインスタンスをフィルタリングします。
openstack server list --long --fit-width | grep "metering.server_group='$STACK_ID'" | bc1811de-48ed-44c1-ae22-c01f36d6cb02 | vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e | ACTIVE | None | Running | private=192.168.100.139, 192.168.25.179 | fedora36 | d21f1aaa-0077-4313-8a46-266c39b705c1 | m1.small | 692533fe-0912-417e-b706-5d085449db53 | nova | standalone.localdomain | metering.server_group='e0a15cee-34d1-418a-ac79-74ad07585730' |
$ openstack server list --long --fit-width | grep "metering.server_group='$STACK_ID'" | bc1811de-48ed-44c1-ae22-c01f36d6cb02 | vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e | ACTIVE | None | Running | private=192.168.100.139, 192.168.25.179 | fedora36 | d21f1aaa-0077-4313-8a46-266c39b705c1 | m1.small | 692533fe-0912-417e-b706-5d085449db53 | nova | standalone.localdomain | metering.server_group='e0a15cee-34d1-418a-ac79-74ad07585730' |Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返されたインスタンスワークロード名のいずれかのインスタンス ID を設定します。
INSTANCE_NAME='vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e' ; export INSTANCE_ID=$(openstack server list --name $INSTANCE_NAME -c ID -f value)
$ INSTANCE_NAME='vn-xlfb4jb-yhbq6fkk2kec-qsu2lr47zigs-vnf-y27wuo25ce4e' ; export INSTANCE_ID=$(openstack server list --name $INSTANCE_NAME -c ID -f value)Copy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスリソース ID のメトリクスが保存されていることを確認します。メトリクスが利用できない場合は、インスタンスが作成されてから、十分な時間が経過していない可能性があります。十分な時間が経過したら、データ収集サービスのログを
/var/log/containers/ceilometer/で、時系列データベースサービス gnocchi のログを/var/log/containers/gnocchi/で確認できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースメトリクスに使用可能な測定値があることを確認し、
openstack metric aggregatesコマンドを実行する際に使用する粒度の値をメモします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow インスタンスワークロード用に設定されたフレーバーを確認して、ワークロードインスタンスに適用される vCPU コアの数を取得します。
openstack server show $INSTANCE_ID -cflavor -f value m1.small (692533fe-0912-417e-b706-5d085449db53) openstack flavor show 692533fe-0912-417e-b706-5d085449db53 -c vcpus -f value 2
$ openstack server show $INSTANCE_ID -cflavor -f value m1.small (692533fe-0912-417e-b706-5d085449db53) $ openstack flavor show 692533fe-0912-417e-b706-5d085449db53 -c vcpus -f value 2Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースタイプインスタンス (サーバー ID) ごとの集計としてメトリクスを返します。値はパーセンテージとして計算されます。集計は、CPU 時間のナノ秒単位の値として返されます。その数値を 1000000000 で割って、秒単位の値を取得します。次に、値を粒度で割ります。この例では、60 秒です (以前に
openstack metric measure showコマンドで取得)。その値は、100 を掛けて、パーセンテージに変換されます。最後に、インスタンスに割り当てられたフレーバーによって提供される vCPU の数で合計値を割ります。この例では、2 vCPU の値であり、CPU 時間のパーセンテージとして表される値を提供します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow