Virtualizovaný cluster

From DCEwiki
Jump to: navigation, search
Zadání : Vytvořit virtualizované clusterové prostředí z bezdiskových linuxových systémů, které umožňuje testovat agenty pro Pacemaker.
Peanuts - virtualizovany cluster.svg


Zadání vyžaduje:

  • Instalaci výchozího bezdiskového virtuálního stroje A, který se po vytvoření instaĺace Pacemakeru naklonuje jako stroje B, C, D a E
  • Stroje mají do vnější sítě přístup pouze za účelem aktualizace software pouze prostřednictvím stroje git, který vůči nim funguje jako výchozí brána (defaultní gateway)

Příprava stroje A[edit]

Vytvoření systémového disku sdíleného přes NFS[edit]

1.   Vytvořit subvolume v rámci souborového systému Btrfs na sdíleném DRBD úložišti, publikovaném přes NFS server

Poznámka
root@datastore~# btrfs subvolume create /srv/share/virtual_machines/temporary/A

2.   Do konfigurace souboru exports pro NFS server doplnit následující záznam

Poznámka
/srv/share/virtual_machines/temporary/A     10.0.0.112(rw,nohide,async,no_subtree_check,no_root_squash) \
                                            10.0.0.201(rw,nohide,async,no_subtree_check,no_root_squash)

3.   Připojit nasdílený adresář na stroji stroj s IP adresou 10.0.0.112 ...

Poznámka
root@stroj~# mkdir -p /path_to_mountpoint/A
root@stroj~# mount 10.0.0.3:/srv/share/virtual_machines/temporary/A /path_to_mountpoint/A
...a pomocí příkazu deboostrap do něj provést výchozí instalaci
Poznámka
root@stroj~# cd /path_to_mountpoint/A
root@stroj:/path_to_mountpoint/A# debootstrap --verbose \
	--keyring=/usr/share/keyrings/debian-archive-keyring.gpg \
	--include=debian-keyring,etckeeper \
	--arch=amd64 \
	jessie \
	./ \
	http://ftp.cz.debian.org/debian
 ...
root@stroj:/path_to_mountpoint/A#

4.   Přihlásit se přes chroot

Poznámka
root@stroj:~# chroot /path_to_mountpoint/A
root@stroj:~/#

4.1   aktualizovat systém

Poznámka
root@stroj:~/# apt-get update && apt-get dist-upgrade
...
root@stroj:~/# apt-get install linux-image... 
...

4.2   doinstalovat linuxový kernel

Poznámka
root@stroj:~/# apt-get install linux-image... 
...

4.3   nastavit heslo

Poznámka
root@stroj:~/# setpwd
...

4.4   nastavit hostname

Příprava stroje A na spuštění[edit]

5.   Nastavení pro Pacemaker

5.1   Vytvoření nového zdroje A v konfiguraci Pacemakeru

Poznámka
primitive A ocf:dce:kvm \
        params workdir="/root" binfile=qemu-system-x86_64
                ifup="/etc/openvswitch/ovs-ifup" ifdown="/etc/openvswitch/ovs-ifdown" 
                cpu=kvm64 memory=1024 monitor="/tmp/7101.monitor" 
                kernel_vmlinuz="/mnt/A/vmlinuz-3.14-2-amd64" 
                kernel_initrd="/mnt/A/initrd.img-3.14-2-amd64" 
                kernel_append="'root=/dev/nfs boot=nfs ip=10.0.0.201:10.0.0.3:10.0.0.255:255.255.255.0:A:eth0 nfsroot=10.0.0.3:/srv/share/virtual_machines/temporary/A,v3,nolock,rsize=32768,wsize=32768,tcp,rw debug'" 
                nic="be:be:be:00:71:01,virtio,tap,interni" serial="file:/var/log/A.serial" 
                logfile="/var/log/A.log" pidfile="/var/run/kvm_A.pid" 
                spice="port=7101,password=testovaci" errlogfile="/var/log/A.err" \
        meta target-role=Started is-managed=true \
        op monitor interval=20 \
        op start interval=0 timeout=30 \
        op stop interval=0 timeout=30
location pin-A A \
        rule $id="pin-A-rule" inf: #uname eq lucy or #uname eq patty

Spuštění stroje A[edit]

5.1   Spuštění zdroje A

Poznámka
root@peanuts~# crm resource start A

6.   Připojení přes spice klienta

Poznámka
user@stroj~# spicec -h 147.32.87.215 -p 7101 -w testovaci

Přístup do vnější sítě ze stroje A[edit]

Strojům virtualizovaného clusteru si stahují instalační balíčky prostřednictvím stroje git, který vůči nim zároveň funguje jako Puppetmaster.

eth0 IPv4 10.0.0.201
git 
eth0 IPv4 10.0.0.101
eth1 IPv4 147.32.87.31

Na stroji git...[edit]

Na stroji git, který bude vůči stroji A vystupovat jako výchozí brána (default gateway) musí být nastaveno pravidlo do iptables pro směrování paketů přicházejících ze stroje A ( z rozhraní eth0 ) na jeho vnější rozhraní

Poznámka
git (PUPPET) :~# iptables -t nat -A POSTROUTING --source 10.0.0.201/32 -o eth1 -j SNAT --to 147.32.87.31

Aby však stroj git pravidlo akceptoval, musí být přes sysctl aktivován NAT protokolu IPv4

Poznámka
git (PUPPET) :~# sysctl net.ipv4.ip_forward=1

Na stroji A...[edit]

U stroje A pak musí být IPv4 adresa interního rozhraní stroje git nastavena jako výchozí brána ( default gateway ).

Poznámka
root@A :~# route add default gw 10.0.0.101

Naklonování stroje F[edit]

  • Po vytvoření základní instalace naklonujeme systémový adresář pro budoucí testovací desktop F, jehož softwarová výbava bude zcela jiná, než u nodů virtualizovaného clusteru.
Poznámka
root@datastore:/srv/share/virtual_machines/temporary# btrfs subvolume snapshot A F

Naklonování strojů B, C, D a E[edit]

  • Instalace Pacemakeru do A
  • Naklonování čtyř nodů z B, C, D a E nainstalovaného nodu A
Poznámka
root@datastore:/srv/share/virtual_machines/temporary# btrfs subvolume snapshot A B
root@datastore:/srv/share/virtual_machines/temporary# btrfs subvolume snapshot A C
root@datastore:/srv/share/virtual_machines/temporary# btrfs subvolume snapshot A D
root@datastore:/srv/share/virtual_machines/temporary# btrfs subvolume snapshot A E
  • Přidání těchto nodů do konfigurace Pacemakeru - od nastavení stroje A se liší menším množstvím paměti a tím, že nemají vlastní kopii jádra a ramdisku.

Testovací desktop F[edit]

Nahození testovacího desktopu...

Poznámka
root@peanuts~# crm resource start F

6.   Připojení přes spice klienta

Poznámka
user@stroj~# spicec -h 147.32.87.215 -p 7106 -w testovaci

Po doinstalování balíku pciutils lze zjistit jaká je výchozí dispozice grafické karty

Poznámka
root@F:~# lspci
...
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
...

cirrus[edit]

(default)

cirrus-vga linuxový ovladač v balíku xserver-xorg-video-cirrus ( glxgears FPS 300-380 ) max rozlišení 1280x1024

Jednoduchá grafická karta. Ovladač mají všechny OS

Poznámka
root@F:~# lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Cirrus Logic GD 5446 (prog-if 00 [VGA controller])
        Subsystem: Red Hat, Inc QEMU Virtual Machine
        Physical Slot: 2
        Flags: fast devsel
        Memory at fc000000 (32-bit, non-prefetchable) [size=64M]
        Memory at febf0000 (32-bit, non-prefetchable) [size=64M]
        Expansion ROM at febd0000 [disabled] [size=64K]
        Kernel driver in use: cirrus

std[edit]

isa-vga linuxový ovladač v xserver-xorg-video-vesa ( glxgears FPS 110-120 ) max rozlišení 1024x768

Windows XP mají integrovaný ovladač

Poznámka
root@F:~# lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Device 1234:1111 (prog-if 00 [VGA controller])
        Subsystem: Red Hat, Inc Device 1100
        Physical Slot: 2
        Flags: fast devsel
        Memory at fd000000 (32-bit, prefetchable) [size=16M]
        Memory at febf0000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at febd0000 [disabled] [size=64K]

vmware[edit]

vmware-svga (pro 2D nejefektivnější..) linuxový ovladač v xserver-xorg-video-vmware ( glxgears FPS 350 a 30-40 při full size) max rozlišení 2048x1536

Od MS Windows XP výše ovladač k dispozici v rámci vmware-tools

Poznámka
root@F:~# lspci -v -s 00:02.0
00:02.0 VGA compatible controller: VMware SVGA II Adapter (prog-if 00 [VGA controller])
        Subsystem: VMware SVGA II Adapter
        Physical Slot: 2
        Flags: fast devsel
        I/O ports at c030 [size=16]
        Memory at fd000000 (32-bit, prefetchable) [size=16M]
        Memory at fe000000 (32-bit, prefetchable) [size=64K]
        Expansion ROM at febd0000 [disabled] [size=64K]

qxl[edit]

qxl-vga zvládá největší rozlišení linuxový ovladač v xserver-xorg-video-vmware ( glxgears FPS 240-330 a 8-15 při full size) max rozlišení 2560x1600

Poznámka
root@F:~# lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04) (prog-if 00 [VGA controller])
        Subsystem: Red Hat, Inc QEMU Virtual Machine
        Physical Slot: 2
        Flags: fast devsel, IRQ 10
        Memory at f4000000 (32-bit, non-prefetchable) [size=64M]
        Memory at f8000000 (32-bit, non-prefetchable) [size=64M]
        Memory at fc020000 (32-bit, non-prefetchable) [size=8K]
        I/O ports at c000 [size=32]
        Expansion ROM at fc000000 [disabled] [size=64K]

Změna výchozího množství dostupné paměti

Poznámka
root@peanuts~# qemu-system-x86_64 -device qxl-vga,? 2>&1 | grep size
qxl-vga.ram_size=uint32
qxl-vga.vram_size=uint32
qxl-vga.ram_size_mb=uint32
qxl-vga.vram_size_mb=uint32
qxl-vga.vram64_size_mb=uint32
root@peanuts~# qemu-system-x86_64 ... -vga qxl -global qxl-vga.ram_size_mb=256 -global qxl-vga.vram64_size_mb=512 ...
Poznámka
root@F:~# lspci
...
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
...
root@F:~# lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04) (prog-if 00 [VGA controller])
        Subsystem: Red Hat, Inc QEMU Virtual Machine
        Physical Slot: 2
        Flags: fast devsel, IRQ 10
        Memory at e0000000 (32-bit, non-prefetchable) [size=256M]
        Memory at f0000000 (32-bit, non-prefetchable) [size=64M]
        Memory at f4020000 (32-bit, non-prefetchable) [size=8K]
        I/O ports at c000 [size=32]
        Memory at c0000000 (64-bit, prefetchable) [size=512M]
        Expansion ROM at f4000000 [disabled] [size=64K]