目次
- インストール
- GRUBの修正
- ネットワークブリッジの設定
- xen-tools
- DOM-Uの設定
- save/restore動作の修正
- ゲストOS(DOM-U)の自動起動化
- ゲストOSとしてDebian squeezeを3台追加
- 多段ネットワークの構築
- TIPS
サーバ環境
製品名 | Dell OPTIPLEX SX280 |
CPU | Intel Pentium4 CPU 2.8GHz |
メモリ | 3GB(PC2-5300U(1GB) x 1枚、PC2-5300U(2G) x 1枚) |
ストレージ | IBM SATA 160GB |
インストール
まず最初にこの本の前半半分の基本的なところを読んでXENの概要を抑えてから、実機検証とネットを参考に進めました。この本はCentOS,Debian,openSUSEのそれぞれのディストリビューションにおける、XENのインストール、初期設定、ストレージ、ネットワークといった基本から、iSCSIの利用、マイグレーション、セキュリティなどの応用まで載っています。分厚い割りにサクッと読めるため、XENの概要を短時間で知りたい人にはお勧めです。ただし、私が試した限り本書そのままとはいかない箇所も多いため、色々と試行錯誤は必要になりました。
root@labo:~# uname -r 2.6.32-5-686
でカーネルのバージョンを調べてから、
xen-linux-system-[kernelのバージョン]-xen-686
xen-tools
の二つをインストールします。
root@labo:~# aptitude install xen-linux-system-2.6.32-5-xen-686 以下の新規パッケージがインストールされます: bridge-utils{a} firmware-linux-free{a} gawk{a} libc6-xen{a} libxenstore3.0{a} linux-image-2.6.32-5-xen-686{a} python2.5{a} python2.5-minimal{a} xen-hypervisor-4.0-i386{a} xen-linux-system-2.6.32-5-xen-686 xen-utils-4.0{a} xen-utils-common{a} xenstore-utils{a} 以下のパッケージが更新されます: linux-base 更新: 1 個、新規インストール: 13 個、削除: 0 個、保留: 85 個。 36.2 MB のアーカイブを取得する必要があります。展開後に 105 MB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] Y ... root@labo:~# aptitude install xen-tools 以下の新規パッケージがインストールされます: debootstrap{a} libconfig-inifiles-perl{a} libexpect-perl{a} libfile-slurp-perl{a} libio-pty-perl{a} libio-stty-perl{a} librpmbuild1{a} libterm-size-perl{a} libtext-template-perl{a} rinse{a} rpm{a} xen-tools 更新: 0 個、新規インストール: 12 個、削除: 0 個、保留: 85 個。 2,201 kB のアーカイブを取得する必要があります。展開後に 4,809 kB のディスク領域が新たに消費されます。 先に進みますか? [Y/n/?] Y ...
GRUBの修正
grubには以下がエントリされています。
root@labo:/boot/grub# grep menuentry /boot/grub/grub.cfg menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-686' --class debian --class gnu-linux --class gnu --class os { menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-686 (recovery mode)' --class debian --class gnu-linux --class gnu --class os { menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-686' --class debian --class gnu-linux --class gnu --class os { menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-686 (recovery mode)' --class debian --class gnu-linux --class gnu --class os { menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-686 and XEN 4.0-i386' --class debian --class gnu-linux --class gnu --class os --class xen { menuentry 'Debian GNU/Linux, with Linux 2.6.32-5-xen-686 and XEN 4.0-i386 (recovery mode)' --class debian --class gnu-linux --class gnu --class os --class xen {
reboot後、起動時に上記”で囲まれた箇所が選択肢として表示されます。
一番上の’Debian GNU/Linux, with Linux 2.6.32-5-xen-686’を選択して起動後、xm listを確認すると以下のようになりました。
root@labo:~# xm list WARNING! Can't find hypervisor information in sysfs! Error: Unable to connect to xend: No such file or directory. Is xend running?
外れです。再度rebootして上記’Debian GNU/Linux, with Linux 2.6.32-5-xen-686 and XEN 4.0-i386’を選択して立ち上げます。
立ち上がり後にXENの起動を確認します。
root@labo:~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 2896 1 r----- 24.9
ホストOS(Domain-0)が起動しました。
上記の通り、デフォルトだとDebian GNU/Linux, with Linux 2.6.32-5-xen-686が立ち上がってしまうので、20_linux_xenが10_linuxよりも先に来るようにGRUBを修正します。
root@labo:~# cd /etc/grub.d/ root@labo:/etc/grub.d# ls 00_header 05_debian_theme 10_linux 20_linux_xen 30_os-prober 40_custom 41_custom README root@labo:/etc/grub.d# mv 10_linux 50_linux root@labo:/etc/grub.d# update-grub2 Generating grub.cfg ... Found background image: /usr/share/images/desktop-base/desktop-grub.png Found linux image: /boot/vmlinuz-2.6.32-5-xen-686 Found initrd image: /boot/initrd.img-2.6.32-5-xen-686 Found linux image: /boot/vmlinuz-2.6.32-5-xen-686 Found initrd image: /boot/initrd.img-2.6.32-5-xen-686 Found linux image: /boot/vmlinuz-2.6.32-5-686 Found initrd image: /boot/initrd.img-2.6.32-5-686 done
ネットワークブリッジの設定
xendの設定ファイルを修正します。
書式についてはVA LINUXさんのサイトが参考になります。
ネットワークを有効にするため、以下の箇所のコメントアウトを外します。
root@labo:~# vi /etc/xen/xend-config.sxp (network-script network-bridge)
xendを再起動します。
root@labo:~# /etc/init.d/xend restart Restarting Xen daemons: xend xend.
xen-tools
xen-tools.confファイルの修正
root@labo:~# vi /etc/xen-tools/xen-tools.conf # lvm = vg0 lvm = labo LVMを使用するため、lvm = ボリュームグループ名 の設定をしています。 #size = 4Gb # Disk image size. #memory = 128Mb # Memory size #swap = 128Mb # Swap size size = 9Gb # Disk image size. memory = 256Mb # Memory size swap = 256Mb # Swap size dist = `xt-guess-suite-and-mirror --suite` # Default distribution to install. ※1 # gateway = 192.168.1.1 # netmask = 255.255.255.0 # broadcast = 192.168.1.255 gateway = 192.168.1.1 netmask = 255.255.255.0 broadcast = 192.168.1.255 kernel = /boot/vmlinuz-`uname -r` ※2 initrd = /boot/initrd.img-`uname -r` ※2 # arch = [i386|amd64] arch = i386 mirror = `xt-guess-suite-and-mirror --mirror` ※3
上記、強調箇所については以下より問題ありません。
※1
root@labo:~# xt-guess-suite-and-mirror --suite squeeze
※2
root@labo:~# uname -r 2.6.32-5-xen-686 root@labo:~# ls /boot/ System.map-2.6.32-5-686 config-2.6.32-5-686 grub initrd.img-2.6.32-5-xen-686 vmlinuz-2.6.32-5-686 xen-4.0-i386.gz System.map-2.6.32-5-xen-686 config-2.6.32-5-xen-686 initrd.img-2.6.32-5-686 lost+found vmlinuz-2.6.32-5-xen-686
※3
root@labo:~# xt-guess-suite-and-mirror --mirror http://ftp.jp.debian.org/debian/
xen-create-imageの実行
ゲストOSとしてDebianを動かすのであれば、xen-create-imageで簡単に作成できます。
xen-create-imageコマンドを実施すると、上記xen-tools.confの設定に従ってIPアドレスの設定等が行われ、ホスト単位の設定ファイルが生成されます。
root@labo:~# xen-create-image --hostname labo1 --ip 192.168.1.112 --passwd ... Creating Xen configuration file Done Setting up root password Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully All done
–passwdを付けない場合、DOM-U起動時にrootパスワード不要でログインできるという記事がたくさんありましたが、私の環境ではログインできませんでしたので、–passwdオプションを付与しています。
–passwdを付与すると、最後にrootのpasswordを質問されるため、二回投入します。
ボリュームグループのsizeを見てみると、Free PE / Sizeが72.33 GiBから63.08 GiB(-9G)に減ったことが確認できました。
xen-create-image実行前 root@labo:~# vgdisplay --- Volume group --- VG Name labo System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 34 VG Access read/write VG Status resizable MAX LV 0 Cur LV 6 Open LV 6 Max PV 0 Cur PV 1 Act PV 1 VG Size 148.81 GiB PE Size 4.00 MiB Total PE 38095 Alloc PE / Size 19579 / 76.48 GiB Free PE / Size 18516 / 72.33 GiB VG UUID trKeJB-vmUV-kH9Y-Udkt-22rN-2dLf-jI3jGp xen-create-image実行後 root@labo:~# vgdisplay --- Volume group --- VG Name labo System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 36 VG Access read/write VG Status resizable MAX LV 0 Cur LV 8 Open LV 6 Max PV 0 Cur PV 1 Act PV 1 VG Size 148.81 GiB PE Size 4.00 MiB Total PE 38095 Alloc PE / Size 21947 / 85.73 GiB Free PE / Size 16148 / 63.08 GiB VG UUID trKeJB-vmUV-kH9Y-Udkt-22rN-2dLf-jI3jGp
DOM-Uの設定
xen-create-image実施後、DOM-Uの設定ファイル(/etc/xen/[DOM-Uのhostname].cfg)が作成されます。
富士山は世界遺産さんのサイトと鯖缶Blogさんのサイトを参考に一番下のextraを追加しました。
root@labo:~# vi /etc/xen/labo1.cfg kernel = '/boot/vmlinuz-2.6.32-5-xen-686' ramdisk = '/boot/initrd.img-2.6.32-5-xen-686' vcpus = '1' memory = '256' # # Disk device(s). # root = '/dev/xvda2 ro' disk = [ 'phy:/dev/labo/labo1-disk,xvda2,w', 'phy:/dev/labo/labo1-swap,xvda1,w', ] # # Physical volumes # # # Hostname # name = 'labo1' # # Networking # vif = [ 'ip=192.168.1.112,mac=00:16:3E:61:EF:E0' ] # # Behaviour # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' extra = 'xencons=tty clocksource=jiffie'
vifのMACアドレスは自動生成されました。
上位24bitの00:16:3EはXENで共通で使用される値です。
下位24bitはランダムで生成されました。
修正が終わったら、DOM-Uを起動します。起動には以下のコマンドを実施します。
root@labo:~# xm create labo1.cfg -c
しばらくするとDOM-Uのログイン画面が表示されるので、rootでログインします。私の環境ではxen-create-imageで–passwdを指定したため、rootのパスワードを入力する必要があります。
... Debian GNU/Linux 6.0 labo1 hvc0 labo1 login: root Password: Linux labo1 2.6.32-5-xen-686 #1 SMP Mon Jun 13 09:07:50 UTC 2011 i686 root@labo1:~#
起動時点ですでにDOM-0の外部への疎通性も問題ありません。
root@labo1:~# ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=1.54 ms 64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=0.789 ms ^C --- 192.168.1.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.789/1.167/1.546/0.380 ms
初期状態ではrootでしかログインできないため、ユーザを追加します。
# useradd -u 1000 -g 4 -d /home/user001 -s /bin/bash -m user001 # more /etc/passwd user001:x:1000:4::/home/user001:/bin/bash # ls /home user001 # usermod -G adm user001 # more /etc/group adm:x:4:user001 # passwd user001 Enter new UNIX password:[パスワードを投入] Retype new UNIX password:[パスワードを投入] passwd: password updated successfully
外部からSSHにて上記で作成したユーザでアクセスが可能なことを確認します。
その他、細かい設定は通常のDebianの設定と同じため割愛します。
DOM-Uの立ち上がりの際に、Error: Driver ‘pcspkr’ is already registered, abortingというエラーが出ていました。
corbieのブログではalsa-utilsを入れて/etc/modprobe.d/alsa-base-blacklistに“blacklist snd-pcsp”が書き込まれれば解消されるとありましたが、私の環境ではすでに上記条件を満たしているにもかかわらず出ているため、気持ち悪いですが様子見します。
Ctr + ] を押せばDOM-0に戻れます。DOM-Uが立ち上がっている状態でDOM-0の状態を確認します。
・論理ボリューム
root@labo:~# lvdisplay ・・・ --- Logical volume --- LV Name /dev/labo/labo1-swap VG Name labo LV UUID B8CEIZ-I772-BIVF-JFiO-MRqf-Hqwh-P3Lfbt LV Write Access read/write LV Status available # open 0 LV Size 256.00 MiB Current LE 64 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:12 --- Logical volume --- LV Name /dev/labo/labo1-disk VG Name labo LV UUID LNplBs-9vek-hYkV-Piox-JtbP-JjBM-fgrBUj LV Write Access read/write LV Status available # open 0 LV Size 9.00 GiB Current LE 2304 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 254:13
/dev/labo/labo1-swap と /dev/labo/labo1-disk が作成されました。
・ネットワーク
DOM-0では、DOM-Uとのインタフェースであるvif1.0が追加されています。
root@labo:~# ifconfig -a eth0 Link encap:イーサネット ハードウェアアドレス 00:0f:1f:e9:8a:52 inetアドレス:192.168.1.111 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::20f:1fff:fee9:8a52/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 RXパケット:501 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:368 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:49838 (48.6 KiB) TXバイト:47181 (46.0 KiB) eth1 Link encap:イーサネット ハードウェアアドレス 00:10:60:db:04:24 inet6アドレス: fe80::210:60ff:fedb:424/64 範囲:リンク UP BROADCAST MULTICAST MTU:1500 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:1 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:0 (0.0 B) TXバイト:90 (90.0 B) lo Link encap:ローカルループバック inetアドレス:127.0.0.1 マスク:255.0.0.0 inet6アドレス: ::1/128 範囲:ホスト UP LOOPBACK RUNNING MTU:16436 メトリック:1 RXパケット:69 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:69 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:4662 (4.5 KiB) TXバイト:4662 (4.5 KiB) pan0 Link encap:イーサネット ハードウェアアドレス 6e:1a:df:79:6d:c2 BROADCAST MULTICAST MTU:1500 メトリック:1 RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:0 RXバイト:0 (0.0 B) TXバイト:0 (0.0 B) peth0 Link encap:イーサネット ハードウェアアドレス 00:0f:1f:e9:8a:52 inet6アドレス: fe80::20f:1fff:fee9:8a52/64 範囲:リンク UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 メトリック:1 RXパケット:490 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:395 エラー:0 損失:0 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:1000 RXバイト:59161 (57.7 KiB) TXバイト:53531 (52.2 KiB) 割り込み:16 vif1.0 Link encap:イーサネット ハードウェアアドレス fe:ff:ff:ff:ff:ff inet6アドレス: fe80::fcff:ffff:feff:ffff/64 範囲:リンク UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 メトリック:1 RXパケット:6 エラー:0 損失:0 オーバラン:0 フレーム:0 TXパケット:29 エラー:0 損失:3 オーバラン:0 キャリア:0 衝突(Collisions):0 TXキュー長:32 RXバイト:384 (384.0 B) TXバイト:6964 (6.8 KiB)
DOM-Uではeth0で見えています。
root@labo1:~# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:16:3e:61:ef:e0 inet addr:192.168.1.112 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::216:3eff:fe61:efe0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:35 errors:0 dropped:0 overruns:0 frame:0 TX packets:9 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:6633 (6.4 KiB) TX bytes:706 (706.0 B) Interrupt:247 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)
/etc/xen/xend-config.sxpにnetwork-bridgeを設定した場合、DOM-0にxenbr0が作成されると想定していましたが、見当たりませんでした。
DOM-Uから外部には疎通できたのでブリッジは機能しているようですが、ifconfigで見えなくても良いのでしょうか?
bridge-utilsを入れているので、brctlコマンドで仮想ブリッジの状態を確認してみます(bridge-utilsについてはいますぐ実践! Linuxシステム管理が参考になります。
root@labo:~# brctl show bridge name bridge id STP enabled interfaces eth0 8000.000f1fe98a52 no peth0 vif1.0 pan0 8000.000000000000 no tmpbridge 8000.000000000000 no
eth0がブリッジになっています。
同様の事例が無いかネットで調べてみたところ、Fedoraの話ですがStray Penguinさんのサイトの「Fedora Core 8における仮想ネットワーク」に記載がありました。
eth0 | ブリッジ(これまでのxenbr0相当) |
peth0 | 実際に外部と接続しているIF |
vif1.0 | DOM-Uと接続しているIF |
eth0 = xenbr0ということで、つじつまが合いました。
pan0というブリッジも作成されています。少し調べてみたのですが分かりませんでした。
海外のFedoraフォーラム(libvirt do not create virbr0)でも同様に悩まれているようでしたが、動作に影響は無さそうなので放置します。
DOM-Uの詳細設定やネットワークのチューニングについては別途まとめます。
save/restore動作の修正
デフォルトの設定にて、DOM-Uを立ち上げた状態でDOM-0をreloadしてみたところ、reload前には存在しなかった/var/lib/xen/saveディレクトリが作成されていました。
そしてDOM-0の起動時には「Restoring Xen domains: labo1.」と表示され、DOM-Uも自動起動されていました。
上記のようにsave/restoreをしないようにするためには、以下の二箇所を修正します。
root@labo:~# vi /etc/default/xendomains ## Type: string ## Default: /var/lib/xen/save # # Directory to save running domains to when the system (dom0) is # shut down. Will also be used to restore domains from if # XENDOMAINS_RESTORE # is set (see below). Leave empty to disable domain saving on shutdown # (e.g. because you rather shut domains down). # If domain saving does succeed, SHUTDOWN will not be executed. #XENDOMAINS_SAVE=/var/lib/xen/saveXENDOMAINS_SAVE= ## Type: boolean ## Default: true # # This variable determines whether saved domains from XENDOMAINS_SAVE # will be restored on system startup. #XENDOMAINS_RESTORE=trueXENDOMAINS_RESTORE=false
上記修正を加えて再度reloadしてみたところ、DOM-0の起動時にDOM-Uは停止していました。
ocean-netさんのサイトを参考にしました。
ゲストOS(DOM-U)の自動起動
/etc/xen/autoにDOM-Uの設定ファイルへのシンボリックリンクを置くことで、DOM-0起動時にDOM-Uも起動するようになります。
もめす屋さんのサイトを参考にさせて頂きました。
root@labo:~# ls /etc/xen/ labo1.cfg scripts xend-config.sxp xend-pci-permissive.sxp xend-pci-quirks.sxp root@labo:~# mkdir /etc/xen/auto root@labo:~# ln -s /etc/xen/labo1.cfg /etc/xen/auto/ root@labo:~# ls -al /etc/xen/auto/ 合計 2 drwxr-xr-x 2 root root 1024 2011-07-29 18:26 . drwxr-xr-x 4 root root 1024 2011-07-29 18:25 .. lrwxrwxrwx 1 root root 18 2011-07-29 18:26 labo1.cfg -> /etc/xen/labo1.cfg
ゲストOS(DOM-U)を3台追加
ゲストOSとしてDebian squeezeを三台追加してみます。
あわせて、追加した際のメモリ使用量についても確認します。
2台目
ゲストOS追加前のメモリ状態
root@labo:~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 2772 1 r----- 92.5 labo1 1 256 1 -b---- 3.6
2台目ゲストOSの追加
root@labo:~# xen-create-image --hostname labo2 --ip 192.168.1.115 --passwd root@labo:~# vi /etc/xen/labo2.cfg extra = 'xencons=tty clocksource=jiffie' を末尾に追加 root@labo:~# xm create labo2.cfg -c
ゲストOS追加後のメモリ状態
root@labo:~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 2520 1 r----- 332.2 labo1 1 256 1 -b---- 3.7 labo2 2 256 1 -b---- 3.1
DOM-0のメモリが252M減少しています。
自動起動の設定
ln -s /etc/xen/labo2.cfg /etc/xen/auto/
3台目
以下同様に、
root@labo:~# xen-create-image --hostname labo3 --ip 192.168.1.116 --passwd root@labo:~# vi /etc/xen/labo3.cfg root@labo:~# xm create labo3.cfg -c root@labo:~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 2264 1 r----- 576.8 labo1 1 256 1 -b---- 3.8 labo2 2 256 1 -b---- 3.2 labo3 3 256 1 -b---- 2.9 root@labo:~# ln -s /etc/xen/labo3.cfg /etc/xen/auto/
4台目
root@labo:~# xen-create-image --hostname labo4 --ip 192.168.1.117 --passwd root@labo:~# vi /etc/xen/labo4.cfg root@labo:~# xm create labo4.cfg -c root@labo:~# xm list Name ID Mem VCPUs State Time(s) Domain-0 0 2015 1 r----- 830.7 labo1 1 256 1 -b---- 3.9 labo2 2 256 1 -b---- 3.3 labo3 3 256 1 -b---- 3.1 labo4 4 256 1 -b---- 2.8 root@labo:~# ln -s /etc/xen/labo4.cfg /etc/xen/auto/
一台立ち上げるごとに、DOM-0のメモリが250~256減少しています。
ぺたぺたしてってくださいではたくさんDOM-Uを立ち上げたらエラーが出たのでDOM-0のメモリを絞るような記事がありどうしようかとも思いましたが、今のところ私の環境ではエラーは出ていないのでこのままで行きたいと思います。
多段ネットワークの構築
Colorless Mindさんのサイトを参考に多段構成のネットワークを組んでみます。
先ほど少し触れたように、私の環境ではデフォルトのブリッジがxenbr0ではなくeth0なので、少し注意が必要です。
ネットワーク構成
---------------------------------- 192.168.1.0/24 (ブリッジ名:eth0) = 外部LAN | | | | | .114 | .115 +---------+ +---------+ | labo1 | | labo2 | +---------+ +---------+ | .1 | .2 | | | | --------------------------------- 192.168.2.0/24 (ブリッジ名:lanbr0) = 内部LAN | | | | | .101 | .102 +---------+ +---------+ | labo3 | | labo4 | +---------+ +---------+
LVSとか試すかもしれないので外部との接続性のある前段のeth0側を2台(labo1,2)にしています。
後段の2台(labo3,4)は外部からはアクセスできないようになっています。
もう一段作ればロードバランサ→Webサーバ→DBサーバといった構成も作れると思います。
新たなブリッジの作成
新たに作成するスクリプト(mybridge)を指定します。
vi /etc/xen/xend-config.sxp #(network-script network-bridge) (network-script mybridge)
上記で指定したスクリプトを作成します。
デフォルトのブリッジであるeth0と新たなブリッジであるlanbr0をオプション指定してnetwork-bridgeスクリプトを起動するようにします。
root@labo:~# vi /etc/xen/scripts/mybridge #!/bin/sh dir=$(dirname $0) ${dir}/network-bridge "$@" bridge=eth0 netdev=eth0 antispoof=yes ${dir}/network-bridge "$@" bridge=lanbr0 netdev=dummy0 antispoof=yes echo 0 >/proc/sys/net/ipv4/ip_forward
実行権限の付与とxendスクリプトの再起動を行います。
root@labo:~# chmod 755 /etc/xen/scripts/mybridge root@labo:~# /etc/init.d/xend restart Restarting Xen daemons: xend xend.
DOM-Uのネットワーク設定
続いて各DOM-UのVIF設定を行います。MACアドレスは分かりやすいように連番にしておきます。
前段のlabo1,2は外部LANと内部LANの2 IFがあるのに対し、後段のlabo3,4は内部LAN用の1 IFしか作成しないようにします。
root@labo:~# vi /etc/xen/labo1.cfg # # Networking # #vif = [ 'ip=192.168.1.114,mac=00:16:3E:61:EF:E0' ] vif = [ "mac=00:16:3E:00:00:01,bridge=eth0", "mac=00:16:3E:00:00:02,bridge=lanbr0", ] root@labo:~# vi /etc/xen/labo2.cfg # # Networking # #vif = [ 'ip=192.168.1.115,mac=00:16:3E:9F:7C:2A' ] vif = [ "mac=00:16:3E:00:00:03,bridge=eth0", "mac=00:16:3E:00:00:04,bridge=lanbr0", ] root@labo:~# vi /etc/xen/labo3.cfg # # Networking # #vif = [ 'ip=192.168.1.116,mac=00:16:3E:E1:19:74' ] vif = [ 'mac=00:16:3E:00:00:05,bridge=lanbr0' ] root@labo:~# vi /etc/xen/labo4.cfg # # Networking # #vif = [ 'ip=192.168.1.117,mac=00:16:3E:6E:97:CA' ] vif = [ 'mac=00:16:3E:00:00:06,bridge=lanbr0' ]
次にDOM-UのIPアドレスを設定します。上のcfgファイルで指定しても良さそうですが、確認の意味でもそれぞれのDOM-Uにて設定してみました。
・labo1
root@labo:~# xm create labo1.cfg -c
起動後にIFを修正します。
root@labo1:~# vi /etc/network/interfaces auto eth1 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255
上記を追加しました。
結果的には以下のようなアドレス状態になりました。
root@labo1:~# /etc/init.d/networking restart root@labo1:~# ifconfig -a eth0 Link encap:イーサネット ハードウェアアドレス 00:16:3e:00:00:01 inetアドレス:192.168.1.114 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::216:3eff:fe00:1/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 eth1 Link encap:イーサネット ハードウェアアドレス 00:16:3e:00:00:02 inetアドレス:192.168.2.1 ブロードキャスト:192.168.2.255 マスク:255.255.255.0 inet6アドレス: fe80::216:3eff:fe00:2/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
続けてlabo2~4も同様に設定していきます。設定変更後のネットワーク状態のみを載せておます。
・labo2
root@labo2:~# ifconfig -a eth0 Link encap:イーサネット ハードウェアアドレス 00:16:3e:00:00:03 inetアドレス:192.168.1.115 ブロードキャスト:192.168.1.255 マスク:255.255.255.0 inet6アドレス: fe80::216:3eff:fe00:3/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1 eth1 Link encap:イーサネット ハードウェアアドレス 00:16:3e:00:00:04 inetアドレス:192.168.2.2 ブロードキャスト:192.168.2.255 マスク:255.255.255.0 inet6アドレス: fe80::216:3eff:fe00:4/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
・labo3
root@labo3:~# ifconfig -a eth0 Link encap:イーサネット ハードウェアアドレス 00:16:3e:00:00:05 inetアドレス:192.168.2.101 ブロードキャスト:192.168.2.255 マスク:255.255.255.0 inet6アドレス: fe80::216:3eff:fe00:5/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
・labo4
root@labo4:~# ifconfig -a eth0 Link encap:イーサネット ハードウェアアドレス 00:16:3e:00:00:06 inetアドレス:192.168.2.102 ブロードキャスト:192.168.2.255 マスク:255.255.255.0 inet6アドレス: fe80::216:3eff:fe00:6/64 範囲:リンク UP BROADCAST RUNNING MULTICAST MTU:1500 メトリック:1
疎通確認
外部のWindows端末から192.168.2.0/24に対してPingが疎通しないことを確認します。
・外部Windows端末
C:\Windows\system32>ping 192.168.2.101 192.168.2.101 に ping を送信しています 32 バイトのデータ: Ctrl+C ^C
labo1にてフォーワーディングを有効にするとPingが疎通することを確認します。
・labo1
root@labo1:~# echo 1 > /proc/sys/net/ipv4/ip_forward
・外部Windows端末
C:\Windows\system32>ping 192.168.2.101 192.168.2.101 に ping を送信しています 32 バイトのデータ: 192.168.2.101 からの応答: バイト数 =32 時間 =2ms TTL=63
TIPS
設定ファイルを修正した際に変更を反映する方法のまとめ
①/etc/xen/xend-config.sxpを修正した場合
xendをrestartする
root@labo:~# /etc/init.d/xend restart Restarting Xen daemons: xend xend.
②/etc/xen/[DOM-Uのドメイン名].cfgを修正した場合
そのままDOM-Uを起動するだけでOK
root@labo:~# xm create labo1.cfg -c
③/etc/xen-tools/xen-tools.confを修正した場合
xen-create-imageコマンドで再度DOM-Uの設定ファイルを生成するため、以下を実施します。
まず、DOM-Uを落とします。
root@labo:~# xm shutdown labo1
次に設定ファイルを削除します。
root@labo:~# rm /etc/xen/labo1.cfg
論理ボリュームを削除します。
root@labo:~# lvremove /dev/labo/labo1-disk Do you really want to remove active logical volume labo1-disk? [y/n]: y Logical volume "labo1-disk" successfully removed root@labo:~# lvremove /dev/labo/labo1-swap Do you really want to remove active logical volume labo1-swap? [y/n]: y Logical volume "labo1-swap" successfully removed
再度、xen-create-imageを実施します。
root@labo:~# xen-create-image --hostname labo1 --ip 192.168.1.112 --passwd
XMコマンド
XMコマンドの使い方については以下を参照
http://www.atmarkit.co.jp/flinux/special/xen02/xen03.html