bondingで負荷分散&冗長化したホストマシン上にKVMで仮想マシンを構築する

ホストマシン(CentOS5.5)のネットワークを冗長化させて、
かつ負荷分散も可能にしたmode blance-albを利用してbondingで
NIC2枚を束ねます。


次にbondingされたNICにBridgeを設定してKVMとホストのNIC
Bridge経由でネットワークに接続出来るようにします。


ネットワークの設定後にssh経由でMacからvirt-manager
遠隔からGUIでゲストOSをセットアプします。


まずホストのネットワークを下記の設定ファイルのように設定します。
※192.168.12.0/24のネットワーク上で設定を行ないます。


/etc/modprobe.conf

alias eth0 e1000e
alias eth1 e1000e
alias scsi_hostadapter ata_piix

# add bonding
alias bond0 bonding

/etc/sysconfig/network

NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=gt110b01.local

/etc/sysconfig/network-scripts/ifcfg-br0

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
DELAY=0
BOOTPROTO=none
IPADDR=192.168.12.10
NETMASK=255.255.255.0
NETWORK=192.168.12.0
BROADCAST=192.168.12.255
GATEWAY=192.168.12.1

/etc/sysconfig/network-scripts/ifcfg-bond0
※bondingのmodeは今回はblance-albを使用してます。
 筆者環境ではactive/backup、blance-tlb、blance-albを試してます。

DEVICE=bond0
ONBOOT=yes
BONDING_OPTS="mode=6 miimon=100 updelay=5000"
BRIDGE=br0

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

# Intel Corporation 82574L Gigabit Network Connection
DEVICE=eth0
HWADDR=xx:xx:xx:xx:xx:xx
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

/etc/sysconfig/network-scripts/ifcfg-eth1

# Intel Corporation 82574L Gigabit Network Connection
DEVICE=eth1
HWADDR=xx:xx:xx:xx:xx:xx
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

/etc/sysconfig/iptables
iptablesの設定に1行足してbr0を通過できるようにします。

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -i br0 -j ACCEPT
 →この行を追加
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT


上記の設定でiptablesNICが設定出来ているのでホストのネットワークを再起動します。

# /etc/init.d/iptables restrat
# /etc/init.d/network restart


ホストのマシンが他のマシンから接続出来るか確認します。

% ping 192.168.12.10    
PING 192.168.12.10 (192.168.12.10): 56 data bytes
64 bytes from 192.168.12.10: icmp_seq=0 ttl=64 time=0.531 ms
% ssh root@192.168.12.10
root@192.168.12.10's password: 
Last login: Mon Sep 20 16:39:12 2010 from 192.168.12.5


次にホスト上にvirt-managerで新規仮想マシンを作っていきます。
今回はMacからsshでXを転送させてリモートで操作をします。
CentOS側の/etc/ssh/sshd_configのX11Forwardingの項目が
yesになっていれば下記のように起動が可能です。

% ssh -X bose999@192.168.12.10
$ su -
# virt-manager &


これで下記のようにMacのデスクトップにvirt-managerが立ち上がります。
※この操作をする前にMac上でMacX11.appを起動しとくのがいいかも。


「進む」ボタンをクリック


仮想マシンの名前を入力して「進む」ボタンをクリック
仮想マシンの管理上の名前です。


作成する仮想マシンの設定をします。
今回はx86_64のCentOS5.5をインストールするので下記の画面の設定で
「進む」ボタンをクリック


今回はx86_64のCentOS5.5をインストールするので下記の画面の設定で
「進む」ボタンをクリック


今回はホストマシンのDVDドライブのメディアからインストールするので
下記の画面の設定で「進む」ボタンをクリック


仮想マシンのディスクイメージの設定をします。
管理する上で都合の良い場所を選択して、
必要なディスク容量を割り当てて「進む」ボタンをクリック
※Allocate entire vitual disk nowにチェックを入れておくと
 最初から仮想マシン用のディスクイメージにMaxの容量が割り当てられます。
 ディスク使用量よりもパフォーマンスを重視する場合はチェックを入れて下さい。


共有物理装置をクリックして選択し、先程設定したbr0を選択します。
この設定により仮想マシンは物理ネットワーク上にIPを持つことが可能になります。


メモリとCPUの割り当てです。必要な容量を割り当てます。
※私の環境は物理メモリを増設してないのできついですw


設定を確認し、問題がなければ「完了」をクリック


ディスクの作成が始まります。


ディスクの作成が完了すると仮想マシンが立ち上がりますのでCentOS5.5を
インストールします。
仮想マシンのコンソールにポインターを移すとこの方法では
 仮想マシンをシャットダウンしないとポインターが開放されません。
 コンソールを触るのはインストールの時のみと筆者は割りきって操作しています。


インストール後に確認してみます。
仮想マシンのIPは192.168.12.101としています。

% ping 192.168.12.101       
PING 192.168.12.101 (192.168.12.101): 56 data bytes
64 bytes from 192.168.12.101: icmp_seq=0 ttl=64 time=1.803 ms
% ssh -X root@192.168.12.101
root@192.168.12.101's password: 
Last login: Mon Sep 20 18:17:35 2010 from 192.168.12.5

上記がうまくいき、sshでログイン出来れば完了です。