7.5.2 仮想サーバのスケールイン

運用を開始したところ,リクエストに対して仮想サーバの数が多過ぎると判断できる場合には,システムのサイジングをし直し,起動する仮想サーバの数を減らして不要な仮想サーバを削除します。これをスケールインといいます。

ここでは,業務A(管理ユニット「unit_a」)について,システムのサイジングをし直した結果,2台の仮想サーバをスケールインする手順について説明します。業務Aでは,仮想サーバ2台に対して1台の予備を配置(合計で6台を配置)し,そのうち4台の仮想サーバを起動して運用しています。ここで説明する作業は仮想サーバ運用管理ホストで実施します。

<この項の構成>
(1) 仮想サーバの停止
(2) 管理ユニットからの仮想サーバの削除

(1) 仮想サーバの停止

スケールインする稼働中の仮想サーバを決定して,停止します。手順を次に示します。

  1. vmx_list_virtualserver_statusコマンドを実行して,稼働中の管理ユニットの情報を取得します。
    コマンドの実行例を次に示します。
    vmx_list_virtualserver_status -unit unit_a
  2. 手順1.で取得した情報を基にスケールインする仮想サーバを2台決めて,スケールインします。
    コマンド実行時には,-vsオプションにスケールインする仮想サーバを指定してください。
    ここでは,取得した情報から仮想サーバ名「VMX192168002103」および「VMX192168002104」をスケールインすることとします。コマンドの実行例を次に示します。
    vmx_scalein_unit -vs VMX192168002103
    vmx_scalein_unit -vs VMX192168002104

(2) 管理ユニットからの仮想サーバの削除

管理ユニットに適用されている運用ルールを変更して,管理ユニットから仮想サーバを削除します。この操作は,削除する仮想サーバが停止している状態で実施してください。

業務A(管理ユニット「unit_a」)では,仮想サーバ2台に対して1台の予備を配置して運用しています。このため,管理対象マシンにデプロイしている停止中の仮想サーバ1台も,起動しないように削除します。ここでは,合計で3台の仮想サーバを削除します。手順を次に示します。

  1. vmx_export_ruleコマンドを使用して,管理ユニット「unit_a」で使用している管理ユニット運用ルールを取得します。
    コマンド実行時には,-unitオプションに管理ユニット名,-oオプションに管理ユニット運用ルールのファイルを格納するパスを指定してください。
    ここでは,管理ユニット運用ルールのファイルを格納するパスを「C:¥work¥rule_a.properties」とします。コマンドの実行例を次に示します。
    vmx_export_rule -unit unit_a -o C:¥work¥rule_a.properties
  2. 取得した管理ユニット運用ルールを編集します。
    管理ユニット運用ルールのファイルに次の内容を反映します。
    • 管理対象マシンを3台(hv4,hv5,hv6)減らし,3台にする
      unit.rule.machine_namesプロパティの値を「hv1,hv2,hv3」にします。
    • 一括起動する仮想サーバを2台減らし,2台にする
      unit.rule.start.numプロパティの値を「2」にします。
    編集後のプロパティを次に示します。
    unit.rule.machine_names=hv1,hv2,hv3
    unit.rule.start.num=2
  3. vmx_update_unitコマンドを使用して,管理ユニット運用ルールを更新します。
    コマンド実行時には,-unitオプションに管理ユニット名を,-ruleオプションに手順2.で編集した管理ユニット運用ルールのファイルのパスを指定してください。
    ここでは,管理ユニット運用ルールのファイルのパスを手順1.で取得したパスと同じとします。コマンドの実行例を次に示します。
    vmx_update_unit -unit unit_a -rule C:¥work¥rule_a.properties
  4. 不要な仮想サーバを削除します。
    コマンド実行時には,-unitオプションに管理ユニット名を指定してください。
    管理ユニットをデプロイすると,編集後の管理ユニット運用ルールが適用され,3台の仮想サーバが削除されます。コマンドの実行例を次に示します。
    vmx_deploy_unit -unit unit_a