Ubuntu、KVM、libvirt、Hetzner

KVMのRootim IPv4およびIPv6に基づいて、 HetznerはHetznerの例を使用して仮想マシン作成および編成する方法を説明することにしました







タスク:専用サーバーで、可能な限りアプリケーションを分離し、データベースをそれらから分離します。 これを行うには、2つの仮想マシン(app1、db1)が必要です。 将来、他のアプリケーションをapp1と同様のコンテナに配置できるようになります。



DS3000パケットでは、1つのIP(1.1.1.1)とサブネット(2.2.2.0/29)が発行されます。 ネットワークには合計で255.255.255.248のマスクと6つのアドレスがあります。



hetznerのドキュメントでは、各アドレスにブリッジを作成するオプションが提案されました。これにより、6つのアドレスすべてを仮想マシンに発行できます。 しかし、私は怠け者であり、実装を容易にするためにアドレスの1つを犠牲にすることにしました。



Ubuntuは仮想化にKVMを使用し、推奨されるlibvirtを使用して仮想マシンを管理しました。



インストールにはインストールイメージが必要です。 また、仮想マシンのディスクがファイル内に配置される方法、またはこれらが実際のディスクパーティションになる方法、またはこれらがLVMの論理ボリュームになる方法を事前に検討する価値があります。 LVMをお勧めします。LVMを使用すると、ディスクのスナップショットを簡単に作成したり、増減したりできるためです。



はじめに、libvirtが提供する仮想ネットワークを調整して追加しました。

最初は、デフォルトのネットワークのみが使用可能です(/etc/libvirt/qemu/networks/default.xml)。 すべての編集の後、次の形式を取りました。



< network > <br> < name > default </ name > <br> < bridge name ="virbr0" /> <br> < forward mode ="nat" /> <br> < ip address ="192.168.122.1" netmask ="255.255.255.0" > <br> < dhcp > <br> < range start ="192.168.122.2" end ="192.168.122.254" /> <br> </ dhcp > <br> </ ip > <br> </ network > <br><br> * This source code was highlighted with Source Code Highlighter .







また、データベースサーバーを配置するプライベートネットワークとhetznerが発行した2.2.2.0/29サブネット用の2つのネットワークも追加しました。



/etc/libvirt/qemu/networks/private.xml



< network > <br> < name > private </ name > <br> < forward mode ='nat' /> <br> < bridge name ='virbr1' stp ='on' forwardDelay ='0' /> <br> < ip address ='192.168.123.1' netmask ='255.255.255.0' > <br> < dhcp > <br> < range start ='192.168.123.2' end ='192.168.123.254' /> <br> </ dhcp > <br> </ ip > <br> </ network > <br><br> * This source code was highlighted with Source Code Highlighter .







/etc/libvirt/qemu/networks/hetzner.xml



< network > <br> < name > hetzner </ name > <br> < bridge name ="virbr2" /> <br> < forward mode ="route" dev ="eth0" /> <br> < ip address ="2.2.2.1" netmask ="255.255.255.248" > <br> < dhcp > <br> < range start ="2.2.2.2" end ="2.2.2.7" /> <br> </ dhcp > <br> </ ip > <br> </ network > <br><br> * This source code was highlighted with Source Code Highlighter .







次に、インストールイメージを強化します。



cd /srv && wget swtsrv.informatik.uni-mannheim.de/pub/linux/distributions/ubuntu-release/10.04.1/ubuntu-10.04.1-server-amd64.iso









仮想マシン用に2つのLVを作成します-1つはシステム用、2つ目はスワップ用です:



lvcreate -L 10G -n vm01-sys sysvg

lvcreate -L 2G -n vm01-swap sysvg









スワップ用のディスクを作成し、システムが私の好みですが、繰り返す必要はまったくありません。 1つの12GBパーティションの作成を妨げるものはありません。



素晴らしい。 次に、マシン自体を作成する必要があります。



 virt-install --name = vm01 \
     --ram = 256 \
     --vcpus = 2 \
     --disk path = / dev / sysvg / vm01-sys \
     --disk path = / dev / sysvg / vm01-swap \
     --accelerate \
     --noautoconsole \
     --connect = qemu:///システム\
     --vnc \
     --hvm \
     --os-type = linux \
     --cdrom = / srv / ubuntu-10.04.1-server-amd64.iso \
     -ネットワークネットワーク:hetzner




その後、/ etc / libvirt / qemuに移動し、vm01.xmlを表示/編集します。



< domain type ='kvm' > <br> < name > vm01 </ name > <br> < uuid > ... </ uuid > <br> < memory > 262144 </ memory > <br> < currentMemory > 262144 </ currentMemory > <br> < vcpu > 2 </ vcpu > <br> < os > <br> < type arch ='x86_64' machine ='pc' > hvm </ type > <br> < boot dev ='hd' /> <br> </ os > <br> < features > <br> < acpi /> <br> < apic /> <br> < pae /> <br> </ features > <br> < clock offset ='utc' /> <br> < on_poweroff > destroy </ on_poweroff > <br> < on_reboot > restart </ on_reboot > <br> < on_crash > restart </ on_crash > <br> < devices > <br> < emulator > /usr/bin/kvm </ emulator > <br> < disk type ='block' device ='disk' > <br> < source dev ='/dev/sysvg/vm01-sys' /> <br> < target dev ='sda' bus ='scsi' /> <br> </ disk > <br> < disk type ='block' device ='disk' > <br> < source dev ='/dev/sysvg/vm01-swap' /> <br> < target dev ='sdb' bus ='scsi' /> <br> </ disk > <br> < disk type ='file' device ='cdrom' > <br> < source file ='/srv/ubuntu-10.04.1-server-amd64.iso' /> <br> < target dev ='hda' bus ='ide' /> <br> < readonly /> <br> </ disk > <br> < interface type ="network" > <br> < source network ="hetzner" /> <br> < mac address ='00:11:22:33:44:55' /> <br> </ interface > <br> < serial type ='pty' > <br> < target port ='0' /> <br> </ serial > <br> < console type ='pty' > <br> < target port ='0' /> <br> </ console > <br> < input type ='mouse' bus ='ps2' /> <br> < graphics type ='vnc' port ='-1' autoport ='yes' keymap ='en-us' /> <br> </ devices > <br> </ domain > <br><br> * This source code was highlighted with Source Code Highlighter .







vncでディスクから起動するには、f12を押してデバイスを選択するか、boot dev = 'hd'を修正してboot dev = 'cdrom'を修正する必要があります。



ポピーの住所も表示されます。 マシン自体に静的アドレスを登録することも、ネットワーク設定でDHCPのバインディングを登録することもできます。 これを行うには、/ etc / libvirt / qemu / networks / hetzner.xmlのdhcpセクションに次の行を追加する必要があります。



< host mac ="00:11:22:33:44:55" name ="vm01" ip ="2.2.2.2" /> <br><br> * This source code was highlighted with Source Code Highlighter .







さらに、libvirtを再起動すると便利です。



service libvirt-bin restart









ネットワークとマシンを実行するために、シェル(virsh)をlibvirtにフックします。



# virsh -c qemu:///system

virsh# net-start hetzner

virsh# net-start private

virsh# start vm01









標準インストーラーが起動します。 VNC経由でマシンのコンソールにしがみつくことができます。 ただし、VNCは最初は127.0.0.1:59**でリッスンします。 したがって、sshを介した単純なトンネリングにより、ポートをコンピューターに転送します。



ssh user@host -L5901:localhost:5900









127.0.0.1:5901またはディスプレイでVNCに接続します.1。



次の仮想マシンでは、vncがポート5901などでリッスンすることは簡単に推測できます。



2番目のマシンをインストールするには、vm02のすべての手順を繰り返しますが、唯一の違いはネットワークにあるということです:private。



アクションを繰り返さないために、virt-cloneユーティリティを使用できます。



virt-clone -o vm01 -n vm02 -f /dev/sysvg/vm02-sys -f /dev/sysvg/vm02-swap









ただし、その後、ddを使用してvm01-sysのコンテンツをvm02-sysに手動でコピーする必要がありました。



また、ホスト名の2番目のマシンの名前を変更することを忘れないでください。/etc/udev/rules.d/70-persistent-net.rulesでネットワークカードのエントリを削除し、異なるMACアドレスを持つ2番目のネットワークカードがeth0になるようにします。



virshコンソールで自動起動するマシン/ネットワークを追加するには、net-autostart network_name / autostart vmnameを実行します。



:同じvirshから車を制御できます。 それらを正しく停止するには、ゲストマシンにacpiパッケージをインストールして、シャットダウンをキャッチすることを忘れないでください。



:udp 0.0.0.0:67でリッスンするDNSサーバーは既に実行されている場合があります。 そのため、dnsmasqは指定されたポートを占有できないため、ネットスタートネットワークは起動しません。 したがって、仮想ネットワークを上げる前にシステムのDNS設定を修正します。



:インストーラーで仮想マシンのディスクのパーティションテーブルを作成した場合、ホストシステムにマウントするには、kpartxを使用してパーティションをマッピングする必要があります。



kpartx -a /dev/sysvg/vm02-sys









パーティション化されたデバイスは、/ dev / mapper / sysvg-vm02-sys *にあります。



All Articles