TOPサーバ構築・運用> 仮想マシンの停止




RHEL5+Xen
Red Hat Enterprise Linux 5の仮想化

第4回:virshコマンドで仮想化を管理する!

著者:日本ヒューレット・パッカード  平 初   2007/7/31
前のページ  1  2  3  次のページ
仮想マシンの停止

   仮想マシンを停止させるには、virsh shutdownコマンドかvirsh destroyコマンドを実行します。前者は仮想マシンに対してシャットダウン要求を行います。後者は仮想マシンの処理を待たずに強制的に終了します。通常は前者のvirsh shutdownコマンドを使ったほうがよいでしょう。
# virsh shutdown rhel5


仮想マシンの起動のタイムアウト

   実際の運用時には起動しなかった時のフローを考えなければなりません。UPSと連携した自動起動を実現したい時などは簡単なスクリプトの作成が必要になる場合があります。今回紹介したvirshコマンドを使って仮想マシンの起動にタイムアウトを実装する必要があります。

   このような場合「仮想マシンを起動し、ネットワークの疎通が取れるまで待つ。起動が10分(600秒)以内に行われなかった場合はタイムアウトとする」という運用要件が定義されることでしょう。これはvirshコマンドとpingコマンド、dateコマンドをうまく組み合わせることで実現することができます(スクリプト1)。

スクリプト1 sample1.sh
#!/bin/bash

VMNAME=rhel5
IPADDRESS=192.168.0.100
VMFILE=/etc/xen/rhel5.xml
TIMEOUT=600
STATE=1

virsh create $VMFILE > /dev/null 2>&1
rc=$?
[ $rc -ne 0 ] && exit $STATE

before=$(date +%s)
now=$(date +%s)

while [ $((now - before)) -le $TIMEOUT ]
do
  ping -c 1 $IPADDRESS > /dev/null 2>&1
  rc=$?
  if [ $rc -eq 0 ]; then
    STATE=0
    break
  fi

  now=$(date +%s)
done

exit $STATE


   このスクリプトのポイントとしてはpingコマンドを失敗した場合に0以外の戻り値を返すという点です。dateコマンドで算出した時間の差を使い600秒間処理を繰り返します。


仮想マシンを順番に起動する

   仮想マシン上にデータベースサーバとWebサーバがある場合、Webサーバが先に立ち上がってしまうとデータベースエラーになることがあります。よって仮想マシンを順番に起動する必要があります。

   このような場合、「仮想マシンを起動し、ネットワークの疎通が取れるまで待ち、次の仮想マシンを起動する。起動が10分(600秒)以内に行われなかった場合はタイムアウトとする」という運用要件が定義されることでしょう。

   スクリプト1を少し改造し、virshコマンドをもう1つ追加することでうまく実現することができます(スクリプト2)。

スクリプト2 sample2.sh
#!/bin/bash

VMNAME1=dbserver
IPADDRESS1=192.168.0.101
VMFILE1=/etc/xen/dbserver.xml
VMNAME2=webserver
IPADDRESS2=192.168.0.102
VMFILE2=/etc/xen/webserver.xml
TIMEOUT=600
STATE=1

virsh create $VMFILE1 > /dev/null 2>&1
rc=$?
[ $rc -ne 0 ] && exit $STATE

before=$(date +%s)
now=$(date +%s)

while [ $((now - before)) -le $TIMEOUT ]
do
  ping -c 1 $IPADDRESS1 > /dev/null 2>&1
  rc=$?
  if [ $rc -eq 0 ]; then
    STATE=0
    break
  fi

  now=$(date +%s)
done

[ $STATE -ne 0 ] && exit $STATE

virsh create $VMFILE2 > /dev/null 2>&1
STATE=$?

exit $STATE


   さらにこのスクリプトを改造することで、起動に失敗した際にメールでエラーを報告するというスクリプトを作成することもできます。

前のページ  1  2  3  次のページ


日本ヒューレット・パッカード株式会社 平 初
著者プロフィール
日本ヒューレット・パッカード株式会社  平 初
テクニカルセールスサポート統括本部 ESSビジネス推進本部
Bladeビジネス推進部 BladeSystem SWAT
仮想化技術を啓蒙するため、2006年に日本ヒューレット・パッカードへ転職。いつもはHP BladeSystem c-Classおよび仮想化技術を含む提案支援を主に扱っている。セミナーや客先訪問で忙しい毎日を送っている。


INDEX
第4回:virshコマンドで仮想化を管理する!
  xmコマンドとvirshコマンド
仮想マシンの停止
  仮想マシンの終了と強制終了