Debian squeezeでGanetiを使ってXen + DRBD
仮想化環境管理ツールのGanetiがDebianのパッケージになってるよ!ということで。
本家は http://code.google.com/p/ganeti/ ここ。
日本語情報はほとんどないのね。
http://d.hatena.ne.jp/naruoga/20081201/1228140473
http://trac.mizzy.org/public/blog?year=2007&month=11
では、OSインストール後から。
※ 6/22追記:インストール時のinitramfs作成で汎用ではなく目的別にしていたら、xenがディスクを認識しなかった。
ベースシステム。
aptitude install ssh cat > /etc/sysctl.d/windowscale.conf net.ipv4.tcp_rmem = 4096 65536 65536 net.ipv4.tcp_wmem = 4096 65536 65536 sysctl -p /etc/sysctl.d/windowscale.conf
aptitude install xen-linux-system xen-tools # reboot
DRBD
aptitude install drbd8-utils
DRBDはカーネルに含まれるようになったらしい。
find /lib/modules/ -name "drbd.ko" /lib/modules/2.6.32-5-xen-amd64/kernel/drivers/block/drbd/drbd.ko /lib/modules/2.6.32-5-amd64/kernel/drivers/block/drbd/drbd.ko
Ganeti
http://docs.ganeti.org/ganeti/2.1/html/install.html
aptitude install ganeti2
あとはドキュメントを参考に各種設定をする。
grubのオプション
http://groups.google.com/group/ganeti/browse_thread/thread/a18979bdd00f6461
ここを参考に。
/etc/default/grub
#GRUB_CMDLINE_XEN_KERNEL=dom0_mem=1024M maxcpus=1 GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M maxcpus=1"
6/28 追記: この指定は間違っていた。
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M" GRUB_CMDLINE_LINUX_DEFAULT="maxcpus=1"
こう書いてupdate-grub2を実行すると、grub.cfgが
multiboot /boot/xen-4.0-amd64.gz placeholder dom0_mem=1024M module /boot/vmlinuz-2.6.32-5-xen-amd64 placeholder root=〜〜 ro maxcpus=1
このように生成される。
xenカーネルで起動後にtopや/proc/cpuinfoでCPUが一つだけになっており、xm vcpu-list では複数のCPUが見えたらOK。
root@node1:~# gnt-instance modify -B vcpus=4 instance1 ... root@node1:~# xm vcpu-list Name ID VCPU CPU State Time(s) CPU Affinity Domain-0 0 0 1 r-- 34.3 any cpu Domain-0 0 1 - --p 0.0 any cpu Domain-0 0 2 - --p 0.0 any cpu Domain-0 0 3 - --p 0.0 any cpu Domain-0 0 4 - --p 0.0 any cpu Domain-0 0 5 - --p 0.0 any cpu Domain-0 0 6 - --p 0.0 any cpu Domain-0 0 7 - --p 0.0 any cpu instance1.example.com 3 0 7 -b- 26.1 any cpu instance1.example.com 3 1 2 -b- 13.1 any cpu instance1.example.com 3 2 0 -b- 10.5 any cpu instance1.example.com 3 3 5 -b- 5.5 any cpu
あと
gnt-instance modify -H cpu_mask=<cpu-pinning-info> <instance>http://docs.ganeti.org/ganeti/master/html/design-cpu-pinning.html
このcpu pinningを試したくて
ganetiのバージョンを2.4.2に上げてみたが
root@node1:~# gnt-instance modify -B vcpus=4 -H cpu_mask=1:2:3:4 test1 Unhandled Ganeti error: Parameter 'cpu_mask' is not supported
無理なようだ。
xm vcpu-pin で一時的に固定はできるが、gnt-instance rebootすると割り当てが解除されている。
CPUを固定しなくても空いているCPUから割り振られているようなので、vCPU数が実CPU数を超えなければ特に問題はない?一つのCPUに対して仮想CPUを複数割り当てると体感速度が極端に落ちてコンソールが引っかかるような動きになったのでそういう構成はナシのつもり。CPU数以上に仮想マシンが欲しいときはバーチャルドメインで頑張る方向で。
追記ここまで
cd /etc/grub.d/ mv 10_linux 21_linux update-grub2 reboot
片方のマシンでgnt-cluster init や gnt-node addを実行する。
その後instanceを作成。
http://serverfault.com/questions/242311/ganeti-fails-to-install-debootstrap-instances-on-squeeze
ここがかなりのハマりどころ。
gnt-cluster modify --hypervisor-parameter xen-pvm:root_path='/dev/xvda1' gnt-instance add -n nodea1.example.com:nodeb1.example.com -t drbd \ --disk 0:size=512M -B memory=1G,vcpus=2 -o debootstrap+default \ -H xen-pvm:kernel_path=/boot/vmlinuz-2.6-xenU,initrd_path=/boot/initrd-2.6-xenU instance1.example.com
ディスクサイズは大きく取るとかなり時間を食うので、最初にinstance作成が成功するのを確認してからじっくり考える。
何度か試行錯誤したり再インストールしたら動いたので間違いがあるかも。
ganetiの最新を使うためにソースから入れる場合は
http://stable-link.com/?p=417
ここを参考に。