【OCI_11_02】オートスケーリングの検証(カスタム・イメージをベースにインスタンス構成を作成した場合)

 
この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

前回記事では、インスタンスをベースにインスタンス構成を作成してオートスケーリングを検証しました。インスタンスをベースにするとApacheなどのアプリなどが構成に含まれていませんでした。Apacheなどのアプリも含める場合は、カスタム・イメージをベースにインスタンス構成を作成する必要がありましたので、今回はそれを検証してみたいと思います。

   

ベースとなるインスタンスの作成

ベースとなるインスタンスとしてWEBサーバを作成し、それをもとにカスタム・イメージを作成します。
インスタンスは、ApacheのWEBページでホスト名やIPアドレスを動的に表示するよう設定しています。
インスタンスとカスタム・イメージの作成は、以下の記事を参考にしてください。

   

ネットワーク・セキュリティ・グループの作成と適用

今回の検証では、パブリック・サブネットのセキュリティ・リストの中身(イングレス、エグレス)は空にして利用していません。
セキュリティは、インスタンスにアタッチするネットワーク・セキュリティ・グループで制御します。
ここではネットワーク・セキュリティ・グループを作成し、必要なルールを設定して、インスタンスへアタッチしたいと思います。

※ネットワーク・セキュリティ・グループの作成と適用は、必須ではありません。検証では、セキュリティ・リストでも問題ありません。

   

ネットワーク・セキュリティ・グループの作成

左上ハンバーガーメニューから ネットワーキング > 仮想クラウド・ネットワーク を選択し、Webサーバーが存在するVCN名のリンクをクリックします。
「セキュリティ」タブを選択、ネットワーク・セキュリティ・グループの「ネットワーク・セキュリティ・グループの作成」をクリックします。

ネットワーク・セキュリティ・グループの作成画面で以下入力、選択します。

名前:任意名
コンパートメントに作成:自身の権限のあるコンパートメント
タグ:何もしない

セキュリティ・ルールの追加でセキュリティ・リストで控えたイングレス・ルール、エグレス・ルールと同じルールを設定して、右下の「作成」をクリックします。

ネットワーク・セキュリティ・グループが作成されました。

   

ネットワーク・セキュリティ・グループの適用

作成したネットワーク・セキュリティ・グループをインスタンスへ適用します。
WEBサーバ2台の両方で同じネットワーク・セキュリティ・グループを適用します。

左上ハンバーガーメニューから コンピュート > インスタンス を選択し、該当のインスタンスをクリックします。
「ネットワーキング」タブを選択、ネットワーク・セキュリティ・グループの「編集」をクリックします。

ネットワーク・セキュリティ・グループの編集画面で作成したネットワーク・セキュリティ・グループを選択し、右下の「変更の保存」をクリックします。

WEBサーバ2台へネットワーク・セキュリティ・グループが適用されました。

   

パブリック・サブネットのセキュリティ・リストの中身を空にする

パブリック・サブネットで利用しているセキュリティ・リストのイングレス・ルール、エグレス・ルールをすべて削除します。
これでパブリック・サブネットで利用しているセキュリティ・リストは、利用されてない状態になりました。

   

インスタンス構成の作成

ベースになるカスタム・イメージからインスタンス構成を作成します。
インスタンス構成は、オートスケーリング用インスタンスを起動する元になり、イメージ、シェイプ、sshキー情報、ブロックボリューム、ネットワーク情報などが定義されています。

左上ハンバーガーメニューから コンピュート > インスタンス構成 を選択し、インスタンス構成の作成 をクリックします。

インスタンス構成の作成画面で以下を入力、選択します。

名前:任意名
コンパートメントに作成:自身の権限のあるコンパートメント
インスタンスの作成先のコンパートメント:自身の権限のあるコンパートメント

配置の可用性ドメインは、デフォルトのままにします。

イメージとシェイプのイメージで「イメージの変更」をクリックします。
「イメージの選択」で「マイ・イメージ」を選択します。

画面を下へスクロールし、「カスタム・イメージ」を選択、事前に作成したカスタム・イメージを選択し、「イメージの選択」をクリックします。

カスタム・イメージが選択されました。

必要な場合、シェイプを変更します。
今回は変更するのでシェイプの変更から変更します。
VM.Standard3.Flex

セキュリティは、デフォルトのままで「次」をクリックします。

ネットワーキングは、以下入力、選択します。

VNIC名:空白(デフォルト)
プライマリ・ネットワーク:既存の仮想クラウド・ネットワークを選択
仮想クラウド・ネットワークコンパートメント:自身の権限のあるコンパートメント
仮想クラウド・ネットワーク:サブネットを作成したVCN
サブネットコンパートメント:自身の権限のあるコンパートメント
サブネット:事前に作成したパブリック・サブネット

プライマリVNIC IPアドレスは、以下入力、選択します。

「プライベートIPv4アドレス」は、「プライベートIPv4アドレスの自動割当て」を選択します。
「パブリックIPv4アドレスの自動割当て」は、デフォルトのままONにします。
「IPv6アドレス」は、デフォルトのままOFFにします。

拡張オプション を展開します。
今回の検証では、パブリック・サブネットのセキュリティ・リストの中身(イングレス、エグレス)は空にして利用していません。
セキュリティは、インスタンスにアタッチするネットワーク・セキュリティ・グループで制御したいので事前に作成しておいたネットワーク・セキュリティ・グループを選択します。
「ネットワーク・セキュリティ・グループを使用してトラフィックを制御」をONにして、事前に作成しておいたネットワーク・セキュリティ・グループを選択します。

「SSHキーの追加」は、「キー・ペアを自動で生成」を選択し、「秘密キーのダウンロード」、「公開キーのダウンロード」をクリックし、ダウンロードしておきます。
「次」をクリックします。

ブート・ボリュームは、公式ドキュメントに従って以下のとおり設定します。

「カスタム・ブート・ボリューム・サイズを指定します」は、デフォルトのままOFFとします。
「転送中暗号化の使用」は、デフォルトのままONとします。
「自分が管理するキーでこのボリュームを暗号化」は、デフォルトのままOFFとします。
「次」をクリックします。

確認画面で設定内容を確認し、「作成」をクリックします。
※表示が長いので割愛します

インスタンス構成が作成されました。

   

インスタンス・プールの作成

作成したインスタンス構成をもとに、インスタンス・プールを作成します。
インスタンス・プールを作成すると、インスタンス構成で設定したインスタンスがインスタンス・プールで設定した数だけ起動します。
サイズを「0」で作成し、あとでスケーリングしてこの数を増やしてみたいと思います。

左上ハンバーガーメニューから コンピュート > インスタンス構成 を選択し、作成したインスタンスの構成のリンクをクリックします。
右上の「アクション」> インスタンス・プールの作成 をクリックします。

インスタンス・プールの作成画面で以下を入力、選択し、「次」をクリックします。

名前:任意名
コンパートメントに作成:自身の権限のあるコンパートメント
インスタンス数:0 (※ここを1にするとインスタンス・プールを作成した時点で1台インスタンスが起動します)
インスタンス構成コンパートメント:自身の権限のあるコンパートメント
インスタンス構成:作成したインスタンス構成
インスタンス表示名フォーマッタ:何もしない(デフォルト)
インスタンス・ホスト名フォーマッタ:何もしない(デフォルト)
インスタンス構成詳細、タグも何もしない

プール配置の構成画面で以下を入力、選択し、「次」をクリックします。

可用性ドメイン:可用性ドメイン1(大阪リージョンは可用性ドメインが1つしかないため)
フォルト・ドメイン:何もしない(デフォルト)※任意のフォルト・ドメインを選択することもできます
仮想クラウド・ネットワークの選択コンパートメント:自身の権限のあるコンパートメント
仮想クラウド・ネットワークの選択:自身のVCNを選択
サブネットの選択コンパートメント:自身の権限のあるコンパートメント
サブネットの選択:インスタンスを展開したいサブネットを選択(今回はパブリック・サブネット)
ロード・バランサのアタッチ:OFF(デフォルト)

設定内容を確認し、右下の「送信」をクリックします。

インスタンス・プールが作成されました。

   

オートスケーリングの設定

作成したインスタンス・プールを元にオートスケーリングを作成します。
公式チュートリアルに習い、インスタンス・プール内の平均CPU使用率が70%を上回ったら1インスタンス増やす、30%未満になったら1インスタンス減らす、というポリシーを設定します。
スケーリングするインスタンス数は、最小1インスタンス、最大3インスタンスに設定します。

左上ハンバーガーメニューから コンピュート > インスタンス・プール を選択し、作成したインスタンス・プールのリンクをクリックします。
右上の「アクション」> 自動スケーリング構成の作成 をクリックします。

自動スケーリング構成の作成画面で以下を入力、選択し、「次」をクリックします。

名前:任意名
コンパートメントに作成:自身の権限のあるコンパートメント
インスタンス・プール:作成したインスタンス・プール

自動スケーリング・ポリシーの構成で以下を入力、選択します。

メトリックベースの自動スケーリング

続いて、以下を入力、選択します。
自動スケーリング・ポリシーの構成

自動スケーリング・ポリシー名:任意名
クールダウン(秒):300(デフォルト)
パフォーマンス・メトリック:CPU使用率

続いて、以下を入力、選択します。
スケールアウト・ルール

スケールアウト演算子:次より大きい(>)
しきい値パーセンテージのスケールアウト:70
追加するインスタンスの数:1

続いて、以下を入力、選択します。
スケールイン・ルール

スケールイン演算子:次より小さい(<)
しきい値パーセンテージのスケールアウト:30
削除するインスタンスの数:1

続いて、以下を入力、選択し、「次」をクリックします。
スケーリング制限

インスタンスの最小数:1
インスタンスの最大数:3
インスタンスの初期数:1

確認画面で内容を確認し、「作成」をクリックします。

自動スケーリング構成が作成できました。

   

インスタンスの確認

インスタンス画面でオートスケーリングで設定した「インスタンスの初期数」の1台が起動して「実行中」になりました。

パブリックIPアドレスを指定してブラウザから「http://パブリックIPアドレス」へ接続してみます。
WEBページが正常に表示されたことでインスタンスは、カスタム・イメージから正常に起動して動作していることが確認できました。

   

CPU負荷を上げてスケールアウトを確認する

オートスケーリングで起動してきたインスタンスにOS上からCPU負荷をかけてCPU使用率が閾値(ここでは70%)を上回るように設定し、インスタンスが1台増えることを確認します。

インスタンスへログインします。
stressパッケージを含むEPELリポジトリが有効になっているか確認します。
おそらく「disabled」となっているのでyum-config-managerコマンドでenabledにします。

sudo yum repolist all | grep -i epel

利用しているイメージのバージョンを確認し、有効化のためのコマンドを実行します。
あらためて有効化されたことを確認します。

sudo yum-config-manager –enable ol9_developer_EPEL
sudo yum repolist all | grep -i epel

stressパッケージをインストールします。「Complete!」が表示されればインストール完了です。

sudo yum -y install stress

stressコマンドでCPUに負荷をかけます。該当インスタンスは「VM.Standard3.Flex」のシェイプを利用しています。

stress -c 2 &

topコマンドで確認してみます。
公式チュートリアルとシェイプは違いますが、下記コマンドでCPU負荷が100%になりました。(※タイミングによって 100 でない時もあります)

top

作成したインスタンス・プールをクリック、「モニタリング」タブを選択、「CPU使用率」をCPU使用率が急上昇していることが確認できます。

上記状態で、クールダウン期間で指定した300秒が過ぎると、スケーリングします。
作成したインスタンス・プールをクリック、「詳細」タブを選択し、「アタッチされたインスタンス」を確認すると2台目のインスタンスが起動していました。

次にインスタンス・プールをクリック、「モニタリング」タブを選択し、「CPU使用率」を確認します。
2台の平均CPU使用率が、だいたい50%になっていることが確認できます。
もし、2台目のインスタンスでもCPU使用率を100%にすれば、2台の平均CPU使用率は100%となり、3台目のインスタンスが起動することになります。
今回は2台目までにしておきます。

1台目のインスタンスのCPU使用率:100%
2台目のインスタンスのCPU使用率:0%
2台の平均CPU使用率:50%

   

CPU負荷を下げてスケールインを確認する

次は、CPU使用率を下げてスケールインすることを確認します。
バックグラウンドで動いているすべての stress プロセスを一括停止する場合、pkill stressを実行します。

pkill stress

topコマンドで確認してみます。
CPU使用率は、0 % になりました。

top

この状態で、クールダウン期間で指定した300秒が過ぎると、スケーリングします。
作成したインスタンス・プールをクリック、「詳細」タブを選択し、「アタッチされたインスタンス」を確認するとインスタンスが1台「終了中」⇒「終了済」になっており、スケールインしていることが確認できます。

   

まとめ

画像はないのですが「自動スケーリング構成」を「無効化」しただけでは、オートスケーリングから起動したインスタンスはそのまま起動したままでした。
「インスタンス・プール」を「停止」すると起動していたインスタンスは「停止済」になりました。

   

以下、他の記事をまとめた一覧です。OCI以外にAWSもまとめています。

   

この記事を書いている人 - WRITER -
ブログ運営者のtkjzblogです。 仕事柄新しいシステムに触れることが多いです。 Windows、Linux(RHEL)がメインです。その他、VMwareやOffice365など仮想環境やクラウド環境も少しですが触れることがあります。 いろいろ忘れがちのため、このサイトへ情報を書き溜めていきたいと思います。 どうぞ、よろしくお願い致します。

Copyright© しっぱいはせいこうのもと , 2025 All Rights Reserved.