【メモ】CloudStack 3.0.x ホストの完全な切り離しと再接続

【メモ】CloudStack 3.0.x ホストの完全な切り離しと再接続 はてなブックマーク - 【メモ】CloudStack 3.0.x ホストの完全な切り離しと再接続


自分用のφ(..)メモメモ

◆ CloudStack でホストを切り離し、再接続をしたい

ホストの切り離しはマニュアルには書かれておらず、かつ、ちょっと自分がハマったので。

ネットワークを切り直したり、古いホスト(VMが稼働する環境)や CloudStack としての情報を完全に消したいときの手順。

環境は、CloudStack 3.0.2 。管理サーバは RHEL 5、ホストは CentOS 6 を KVM で使用している場合が対象。あくまで、KVM をホスト(CloudStack では、仮想マシンが稼働するマシン環境の事を、ホストと呼びます)として使用する場合のみ。他のハイパーバイザーを使用であれば、おそらく、この手順は使わなくてもよく、すべて GUI で完結するものと思います。

さて、KVM ホストの削除は、手順はシンプル。GUI 上でホストの切り離し→対象サーバ内での作業。

GUI では、

  1. ホスト情報を表示
  2. 【 保守モートの有効化 】をクリックして、メンテナンスモードに移行。
  3. 【 ホストの削除 】を実施。

◆ CloudStack 3.0.x のホストの切り離し手順

次に、対象サーバにログインしての作業です。

手順概要は、次の通りです。

  1. install.sh を使用して、kvm エージェント(cloud-agent)パッケージを削除
  2. qemu-kvm を削除
  3. libvirtd やネットワークブリッジの削除

install.sh を使う所まではマニュアルに記載されている通りです。ですが、qemu-kvm は cloudstack の専用リポジトリから持ってきたものですが、インストーラーによって削除されません。そのため、手動で消す必要があります。また、libvirtdの設定や、ネットワークブリッジの設定が追加されますが、これらも手動で消す必要があります。

以下、具体的な作業手順を追います。

kvm 用エージェントを展開したディレクトリに移動します。
例:

$ cd /usr/local/src/CloudStack-oss-3.0.2-1-rhel6.2

セットアップ時と同様に、インストーラ ./install.sh を実行します。

# ./install.sh
Setting up the temporary repository...
Cleaning Yum cache...
Loaded plugins: fastestmirror, security
Cleaning repos: base cloud-temp epel extras updates
8 metadata files removed
Welcome to the CloudStack Installer.  What would you like to do?

NOTE: For installing KVM agent, please setup EPEL<http://fedoraproject.org/wiki/EPEL> yum repo first;
 For installing CloudStack on RHEL6.x, please setup distribution yum repo either from ISO or from your registeration account.
 3.We detect you already have MySql server installed, you can bypass mysql install chapter in CloudStack installation guide.
 Or you can use E) to remove current mysql then re-run install.sh selecting D) to reinstall if you think existing MySql server has some trouble.
 For MySql downloaded from community, the script may not be able to detect it.

 M) Install the Management Server
 B) Install BareMetal Agent
 S) Install the Usage Monitor
 U) Upgrade the CloudStack packages installed on this computer
 R) Stop any running CloudStack services and remove the CloudStack packages from this computer
 E) Remove the MySQL server (will not remove the MySQL databases)
 Q) Quit

 >

このプロンプトでは【 R 】( Stop any running CloudStack services and remove the CloudStack packages installed on this computer = このコンピュータにインストールされている CloudStack サービスを停止し、パッケージを削除します)を実行します。

自動的に yum が走ります。

Dependencies Resolved

==========================================================================================
 Package                     Arch           Version             Repository           Size
==========================================================================================
Removing:
 cloud-agent                 x86_64         3.0.2-1.el6         @cloud-temp          20 k
 cloud-agent-libs            x86_64         3.0.2-1.el6         @cloud-temp         239 k
 cloud-agent-scripts         x86_64         3.0.2-1.el6         @cloud-temp          28 M
 cloud-core                  x86_64         3.0.2-1.el6         @cloud-temp         637 k
 cloud-daemonize             x86_64         3.0.2-1.el6         @cloud-temp          17 k
 cloud-deps                  x86_64         3.0.2-1.el6         @cloud-temp          23 M
 cloud-python                x86_64         3.0.2-1.el6         @cloud-temp         239 k
 cloud-utils                 x86_64         3.0.2-1.el6         @cloud-temp         1.3 M

Transaction Summary
==========================================================================================
Remove        8 Package(s)

Installed size: 53 M
Is this ok [y/N]: y

パッケージの削除確認では【 y 】を入力します。

Removed:
 cloud-agent.x86_64 0:3.0.2-1.el6              cloud-agent-libs.x86_64 0:3.0.2-1.el6
 cloud-agent-scripts.x86_64 0:3.0.2-1.el6      cloud-core.x86_64 0:3.0.2-1.el6
 cloud-daemonize.x86_64 0:3.0.2-1.el6          cloud-deps.x86_64 0:3.0.2-1.el6
 cloud-python.x86_64 0:3.0.2-1.el6             cloud-utils.x86_64 0:3.0.2-1.el6

Complete!
Done

このように表示されれば、特に問題ありません。

次は qemu-kvm パッケージの削除です。

# yum erase qemu-kvm

あとは、通常のパッケージ削除と同様に、確認箇所では【 y 】と入力します。

Loaded plugins: fastestmirror, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package qemu-kvm.x86_64 2:0.12.1.2-3.209.el6.4 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package          Arch           Version                        Repository           Size
==========================================================================================
Removing:
 qemu-kvm         x86_64         2:0.12.1.2-3.209.el6.4         @cloud-temp         3.9 M

Transaction Summary
==========================================================================================
Remove        1 Package(s)

Installed size: 3.9 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
 Erasing    : 2:qemu-kvm-0.12.1.2-3.209.el6.4.x86_64                                 1/1

Removed:
 qemu-kvm.x86_64 2:0.12.1.2-3.209.el6.4

Complete!

こちらも、削除して対処完了です。

※ ここで qemu-kvm を消しておかないと、再度 kvm ホストとしてエージェントをインストールしようとしても、libvirtd 関連のセットアップが自動で行われないようで、kvm-agent が起動できなくなってしまいます。あまり手間をかけないようにするため、qemu-kvm も削除しておくのが、確実と思います。

それから、virsh で、kvm のネットワーク設定を削除。

# virsh net-list
名前               状態     自動起動
-----------------------------------------
default              動作中  yes

もし、default が自動起動 “yes” であれば、次のようにして停止・無効にします。

# virsh net-destroy default
ネットワーク default は停止されました

動作確認。

# virsh net-list
名前               状態     自動起動
-----------------------------------------

何も出なければ、問題ありません。

次は、自動起動を無効にします。

# virsh net-autostart default --disable
ネットワーク default の自動起動設定が解除されました
# virsh net-list --all
名前               状態     自動起動
-----------------------------------------
default              停止状態 no

最後に libvirtd を停止しておきます。

# /etc/rc.d/init.d/libvirtd stop
libvirtd デーモンを停止中:                                 [  OK  ]
# /sbin/chkconfig libvirtd off

これで libvirt まわりは完了です。

(追記 2012/08/07)libvirt の削除も必要です
# yum erase libvirt
(追記ここまで)

あとは、ブリッジなど、ネットワーク情報を削除します。

※前提条件:私の場合は、 eth0 がブリッジ側のインターフェース、eth1 がローカル通信用のインターフェースです。環境に合わせて読み替えてください。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

ファイルを開いたら、【 BRIDGE=cloudbr0 】をコメントアウトまたは削除。

#BRIDGE=cloudbr0

次に、ブリッジ設定ファイルを移動または削除します(ファイルを残したままだと、再度 kvm-agent をセットアップするときに、ネットワークまわりが動作しないという不具合が起こります)。

# mv /etc/sysconfig/network-scripts/ifcfg-cloudbr0 /tmp/

最後に、関連ファイルやログを移動または削除します。

# mkdir /tmp/cloud-agent
# mv /etc/cloud /var/log/cloud /etc/libvirt /tmp/cloud-agent/

あとは、再起動して完了です。

参考:

Installing CloudStack – Apache CloudStack Documentation
http://docs.cloudstack.org/CloudStack_Documentation/Installing_CloudStack