Scientific Linux+KVMのネットワーク設定


前回に続いてKVMシリーズ、今回は前回作った3個のVMとネットワークを繋ごうと思います。
今回の内容は参考サイトさまさまな内容なんだな。

最初にbr0を作る。eth0からコピればOK。

[root@take ~]# cd /etc/sysconfig/network-scripts/
[root@take network-scripts]# cp ifcfg-eth0 ifcfg-br0

eth0にブリッジを記述する。

[root@take network-scripts]# vi ifcfg-eth0 
BRIDGE=br0

続いてbr0の記述だけど、ここは環境で異なるはずなのですが、TYPEとIPの記述をしていればOKの様子。
CATで見てみよう。

[root@take network-scripts]# cat ifcfg-br0 
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.44.132
PREFIX=24
GATEWAY=192.168.44.2
DNS1=192.168.44.2

次にeth0をpromiscモードにする、プロミスキャスモードの事で、何でも恋ってモード。

[root@take network-scripts]# ifconfig eth0 promisc

さて、次にブリッジ用のネットワークを立ち上げるスクリプト。これは参考サイトのものを拝借。

[root@take ~]# cat /etc/qemu-ifup 
#!/bin/sh

echo "Executing /etc/qemu-ifup" 
/sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
/usr/sbin/brctl addif br0 $1
sleep 3

[root@take ~]# cat /etc/qemu-ifdown 
#!/bin/sh

/usr/sbin/brctl delif br0 $1
/sbin/ifconfig $1 down

参考サイトの方が嵌ったとこらしいのだけど、見ながらやってるたけけんも嵌ってしまった・・・。
マニュアルはちゃんと読みましょうという典型的なパターンです。

chmod 775

[root@take ~]# ll /etc/qemu-if*
-rwxrwxr-x 1 root root  63  9月 16 20:22 2013 /etc/qemu-ifdown
-rwxrwxr-x 1 root root 146  9月 16 20:22 2013 /etc/qemu-ifup

これで下準備は完了です。あとはオリーブオイルをかけるだけ。

前回のコマンドに付け足すのはこの部分。

-net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap0,script=/etc/qemu-ifup -k j

もろにネットワークな記述ですなあ。

付け足してISOから起動してインストールするときはこんな感じに。

qemu-system-x86_64 -hda vm00.img -m 512 -monitor telnet::10001,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap1,script=/etc/qemu-ifup -k ja -vnc :0 -daemonize -boot d -cdrom /root/CentOS-6.4-x86_64-bin-DVD1.iso

インストールが終わって次に起動するときはCD-ROMのところは省かないと永遠にCDブートになりますので以下の部分を省略する。

-boot d -cdrom /root/CentOS-6.4-x86_64-bin-DVD1.iso
qemu-system-x86_64 -hda vm00.img -m 512 -monitor telnet::10001,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap1,script=/etc/qemu-ifup -k ja -vnc :0 -daemonize

これでVM1個は完成です。OSのインストール部分は省略しまっせ。後は好きなだけVMを追加してください。

追加するときはまたVMの作成からやろう。

[root@take ~]# qemu-img create -f qcow2 vm02.img 5G
Formatting 'vm02.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off

複数のVMを動かす時に気を付けるところは、VNCの番号とネットワークのTAPを変えないとエラーになります。
もちろんVMのファイル名も変えないとだね。
以下はqemuのエラー。

qemu-system-x86_64: -net tap,ifname=tap0,script=/etc/qemu-ifup: could not configure /dev/net/tun (tap0): Device or resource busy
qemu-system-x86_64: -net tap,ifname=tap0,script=/etc/qemu-ifup: Device 'tap' could not be initialized

VNCの方はBusyっていう表示が出て確認ができません。
コマンドで説明した方が早いのでコマンドで。以下のコマンドでOKです。

スクリプトにしてもいいかもね。

qemu-system-x86_64 -hda vm00.img -m 512 -monitor telnet::10001,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap1,script=/etc/qemu-ifup -k ja -vnc :0 -daemonize
qemu-system-x86_64 -hda vm01.img -m 512 -monitor telnet::10002,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap2,script=/etc/qemu-ifup -k ja -vnc :1 -daemonize
qemu-system-x86_64 -hda vm02.img -m 512 -monitor telnet::10003,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap3,script=/etc/qemu-ifup -k ja -vnc :2 -daemonize

そうそう、VMを落とす時はどうするのかというと、telnetで繋いでqします。
そのための起動オプションなのです。

[root@take ~]# telnet localhost  10001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
QEMU 1.2.0 monitor - type 'help' for more information
(qemu) q
Connection closed by foreign host.

[root@take ~]# telnet localhost  10002
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
QEMU 1.2.0 monitor - type 'help' for more information
(qemu) q
Connection closed by foreign host.

[root@take ~]# telnet localhost  10003
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
QEMU 1.2.0 monitor - type 'help' for more information
(qemu) q
Connection closed by foreign host

ホストサーバーのifconfigはこんな感じになってました。

br0       Link encap:Ethernet  HWaddr 00:0C:29:95:48:9A
          inet addr:192.168.44.132  Bcast:192.168.44.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe95:489a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:39920 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42802 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:21985664 (20.9 MiB)  TX bytes:4404942 (4.2 MiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:95:48:9A
          inet6 addr: fe80::20c:29ff:fe95:489a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:139141 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109845 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:165754333 (158.0 MiB)  TX bytes:8533542 (8.1 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

tap1      Link encap:Ethernet  HWaddr FE:B7:63:66:89:D8
          inet6 addr: fe80::fcb7:63ff:fe66:89d8/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:65571 errors:0 dropped:0 overruns:0 frame:0
          TX packets:98957 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:4021085 (3.8 MiB)  TX bytes:140992676 (134.4 MiB)

tap2      Link encap:Ethernet  HWaddr 0A:89:08:6D:D7:F1
          inet6 addr: fe80::889:8ff:fe6d:d7f1/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:162 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:18553 (18.1 KiB)  TX bytes:1401122 (1.3 MiB)

tap3      Link encap:Ethernet  HWaddr 76:60:5D:B8:9E:1F
          inet6 addr: fe80::7460:5dff:feb8:9e1f/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:298 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1417 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:29906 (29.2 KiB)  TX bytes:1139641 (1.0 MiB)

これですべてのサーバーにSSHログインが可能になりました。

[root@take ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c2995489a       no              eth0
                                                        tap1
                                                        tap2
                                                        tap3

ちなみにこれをプライベートクラウドと言います。嘘です。

ある意味あってるかも?

 

でもこのままだとホストサーバーからゲストサーバーの管理ができないじゃん。って気づいている方も多いかも。
肝心なことです。

ちゃんとできるようで、virshというコマンドがあります。でもこれはまた今度。
まだ知らないって書いた方が正しいかなw

[root@take ~]# yum search libvirt
Loaded plugins: downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
 * sl: ftp.scientificlinux.org
 * sl-security: ftp.scientificlinux.org
 * sl6x: ftp.scientificlinux.org
 * sl6x-security: ftp.scientificlinux.org
========================================= N/S Matched: libvirt =========================================
fence-virtd-libvirt.x86_64 : Libvirt backend for fence-virtd
fence-virtd-libvirt-qpid.x86_64 : Libvirt-qmf backend for fence-virtd
libvirt-cim.i686 : A CIM provider for libvirt
libvirt-cim.x86_64 : A CIM provider for libvirt
libvirt-client.i686 : Client side library and utilities of the libvirt library
libvirt-client.x86_64 : Client side library and utilities of the libvirt library
libvirt-devel.i686 : Libraries, includes, etc. to compile with the libvirt library
libvirt-devel.x86_64 : Libraries, includes, etc. to compile with the libvirt library
libvirt-java.noarch : Java bindings for the libvirt virtualization API
libvirt-java-devel.noarch : Compressed Java source files for libvirt-java
libvirt-java-javadoc.noarch : Java documentation for libvirt-java
libvirt-python.x86_64 : Python bindings for the libvirt library
libvirt-snmp.x86_64 : SNMP functionality for libvirt
ocaml-libvirt.x86_64 : OCaml binding for libvirt
ocaml-libvirt-devel.x86_64 : Development files for ocaml-libvirt
fence-virtd-checkpoint.x86_64 : Cluster+Libvirt backend for fence-virtd
libvirt.x86_64 : Library providing a simple virtualization API
libvirt-lock-sanlock.x86_64 : Sanlock lock manager plugin for QEMU driver
perl-Sys-Virt.x86_64 : Represent and manage a libvirt hypervisor connection

参考サイト

CentOS6.0、Windows、その他備忘録 KVMのネットワーク設定

さくらインターネット研究所 KVMを使う(ネットワーク設定編)

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *