Laboratorium z OpenVZ

Spis tresci:
1. Architektura
2. Instalacja
3. Stworzenie VE
4. Manipulacje resource'ami
5. Migracja
6. Siec

1. Architektura:


2. Instalacja OpenVZ


Pobierz i zainstaluj:
kernel-2.6.26-chekhov.1.i686.rpm
vzctl-lib-3.0.23-1.i386.rpm
vzctl-3.0.23-1.i386.rpm
vzquota-3.0.12-1.i386.rpm

Skonfiguruj boot-loadera i zrebootuj maszyne.

W ustawieniach sieci zmien karte sieciowa na Intel MT Desktop
# rpm -i --nodeps vz*rpm kernel...*
# mkinitrd
# depmod -a 2.6.26-chekhov.1
# cat >> /boot/grub/menu.lst
title opensuse-openvz
  root (hd0,0)
  kernel /boot/vmlinuz-2.6.26-chekhov.1 root=/dev/sda1 splash=0 vga=0x314 showopts
  initrd /boot/initrd-2.6.26-chekhov.1
# 
Pobierz szablon systemu debian-4.0-x86.tar.gz lub debian-4.0-x86_64.tar.gz lub debian-4.0-node-r1.tar.gz do katalogu /vz/template/cache/

3. Stworzenie VE (virtual environment)


# vzctl create 100 --ostemplate debian-4.0-x86
# vzctl start 100
# vzctl enter 100
Weszlismy do srodka VE.

4. Manipulacje resource'ami



man vzctl - /cpulimit
Poczytaj, jakie ograniczenia mozna nalozyc na VE (wszystko dynamicznie).


Eksperyment.
Z hosta:
# vzctl set 100 --cpulimit 10
Z guesta (VE):
# cat > a.py
s = "x" * 25000
while True: pass
^D
# python a.py &
# top < -- popatrz na to ile czasu procesora i pamieci bierze proces python
Z hosta:
# uptime < -- load
# vzctl set 100 --cpulimit 30
# uptime
# vzctl exec 101 cat /proc/user_beancounters
# vzctl set 100 --kmemsize BARRIER:LIMIT
Podstawiajac pod BARRIER i LIMIT wartosci mniejsze niz zajmuje proces python (lepiej, zeby BARRIER < LIMIT).
Udalo sie? Co sie stalo z procesem Python?

5. Migracja



Wybierz sasiada :-), do ktorego bedziesz migrowal.
Ustaw klucze ssh tak, zeby mozna bylo sie do niego zalogowac bez hasla (z roota na roota, oczywiscie; z hosta na hosta).
Nastepnie (z hosta):
# vzctl stop 100
# vzctl start 100
# vzmigrate --online TARGET 100

6. Siec



Z hosta:
# cp /etc/resolv.conf /vz/private/100/etc/
# vzctl stop 100
# vzctl set 100 --ipadd 10.0.0.2 --save
# vzctl start 100

# vzctl exec 100 ifconfig venet0 10.0.0.2 netmask 255.255.255.0
# vzctl exec 100 route add default gw 10.0.0.1

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -I POSTROUTING -s 10/24 -o eth0 -j MASQUERADE
# ifconfig -a < -- znajdz utworzony interfejs wirtualny
# ifconfig INTERFEJS 10.0.0.1 netmask 255.255.255.0

# ping 10.0.0.2
# vzctl exec 100 ping 10.0.0.1

7. Wlasny szablon OS



Doinstalujmy jakies pakiety za pomoca apt.
Najpierw zmien zrodlo pakietow - w pliku /etc/apt/sources.list na testing. Nastepnie:
# vzctl start 100
# vzctl enter 100
# apt-get update
# apt-cache search libmotif
# apt-get install xserver-xorg binutils libmotif...
Spakowanie paczki:
# vzctl stop 100
# cd /vz/private/100
# tar cxf /vz/template/cache/mojszablon.tar.gz *

8. Instalacja srodowiska do SGE



# vzctl create 101 --ostemplate mojszablon
# vzctl create 102 --ostemplate mojszablon
# vzctl create 103 --ostemplate mojszablon
Skonfiguruj siec tak, by VPS'y 101, 102 i 103 mialy adresy IP odpowiednio 10.0.0.101, 10.0.0.102 i 10.0.0.103, a host - 10.0.0.100.


/etc/hosts

apt - testing
master: apt-get install xserver-xorg xorg libmotif binutils
node-1: apt-get install libmotif binutils
node-2: apt-get install libmotif binutils
routing