Virtualizace

Jelikoz CentOS ze sve podpory zcela vyradil XEN po vzoru sve matky RedHat, doinstalovani cele podpory zpet je zbytecne slozite. Zajemce odkazuji na docela dobry navod pro CentOS 6.2 http://www.howtoforge.com/virtualization-with-xen-on-centos-6.2-x86_64-paravirtualization-and-hardware-virtualization

Po spusteni systemu Debian wheezy (toho casu testing) nabehne system do kernelu 3.2.0-xxx a je treba nainstalovat XEN hypervizor - mikrokernel, ktery bude fyzicky ovladat hardware a linuxovy system tzv. dom0 bude pouzivat jako pomucku, aby nemusel umet vsechny drivery. Hypervizor prakticky jen rozdeluje cpu-time a pamet. Coz je velice chytre vymyslene.

Odbocka k prerekvizitam - proxy

Kvuli znacnemu poctu doinstalovavanych baliku je vyhodne, aby si skolitel u sebe udelal HTTP PROXY a o tento krok neochudi dokumentaci. Nyni se vsechny baliky stahnou je jedenkrat ke skoliteli a ostatni si baliky instaluji jiz rychlosti 1gbps, coz je perfektni zrychleni.

yum install squid
chkconfig squid start
service squid start
export http_proxy="http://ip.skolitele:3128/"
yum -y groupinstall  "X Window System" "Fonts" "Desktop"
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinux

Abych nezdrzoval pri jednotlivych krocich opakovanym volanim yum install …, nainstalujeme si v dalsim kroku vsechny potrebne programy predem

   yum install xen-utils lvm2  virt-manager firefox bridge-utils
   yum install http://au1.mirror.crc.id.au/repo/kernel-xen-release-6-5.noarch.rpm
   # toto url prestalo fungovat
   # yum install http://au1.mirror.crc.id.au/repo/el6/x86_64/kernel-xen-release-6-5.noarch.rpm
 
   # uz nefunguje
   # cd /etc/yum.repos.d/
   # wget http://drewsymo.com/files/xen-centos6.repo
   # yum --disablerepo "*" --enablerepo "xen-stable" -y install xen* kernel-xen libvirt* 

Optionaly podle

 yum install centos-release-xen
 yum install xen
 

spravny balik pomuze prikaz

  yum search xen

a rada pouzit pseudo baliky xen a kernel-xen, ktery sam o sobe neobsahuje zadna data, pouze zavislosti na mnoha baliccich.

  yum install -y install xen* kernel-xen libvirt* 

a zmenit konfiguraci grubu, ktera se z neznamych duvodu sama neupdatuje (DSS). V grubu zasadne nic neprepisujeme, ale vytvarime nove polozky. /boot/grub/menu.lst

title XEN XEN XEN XEN :)
        root (hd0,2)
        kernel /boot/xen.gz
        module /boot/vmlinuz.........
        module /boot/initrd.img........

Drsnaci mohou uvest dulezite parametry pro stabilitu produkcni provoz:

  kernel /xen.gz    dom0_mem=1024M cpufreq=xen dom0_max_vcpus=1 dom0_vcpus_pin

Kdo pri instalaci nezvolil LVM oddil (coz pro root fs nedoporucuji) bude muset nejdrive vytvorit partition pro lvm (napr /dev/sda6) a lvm inicializovat rucne

  cfdisk /dev/sda
  pvcreate /dev/sda6
  vgcreate vg_virt /dev/sda6

Pro dalsi ukazky je dobre stahnout maly 150MB debian net install iso image Obdobne si stahnete a pouzijte CentOS nebo Windows. * http://gensho.acc.umu.se/cdimage/weekly-builds/amd64/iso-cd/debian-testing-amd64-netinst.iso * http://mirror.hosting90.cz/centos/6.4/isos/x86_64/CentOS-6.4-x86_64-minimal.iso

Sitovani, obzvlaste ve slozitejsich konfiguracich, doporucuji nastavit rucne, abyste meli plnou kontrolu nad systemem. Jako ukazka poslouzi jeden bridge. Nejdrive se zbavime eth0. Upozornuji na rozdil mezi prikazem ifdown eth0 lokalne na notebooku a stejnym prikazem provedenym vzdalene na serveru, kam jste pripojeni pres eth0.

  ifdown eth0
  brctl addbr xenbr0
  brtctl addif xenbr0 eth0
  ifconfig eth0 up
  
  brctl show 

Permanentni nastaveni prezivsi boot: Smazat konfiguraci eth0 v /etc/network/interfaces, pro kloubouky v /etc/sysconfig/network-scripts/ifcfg-xenbr0.

/etc/network/interface
auto xenbr0
iface xenbr0 inet static
        address 192.168.5.62
        netmask 255.255.255.0
        bridge_ports eth0
        bridge_maxwait 5
        bridge_fd 1
        bridge_stp off
/etc/sysconfig/network-scripts/ifcfg-xenbr0
DEVICE="xenbr0"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.100
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System bridge 0"
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
TYPE=Ethernet
IPV6INIT=no
USERCTL=no
BRIDGE=xenbr0

Nyni lze pohodlne ovladat novy inteface prikazy ifup/ifdown xenbr0.

Virt-manager

Prakticky intuitivni ovladani. Dulezite je zvolit XEN, nikoliv nabizene qemu nebo kvm. Jediny osklivy trik je nutnost vytvoreni tzv. storage poolu pro pridelovani lvm. Zde mohu citovat ze svych poznamek na papire ke skoleni: !Pozor: Jako obvykle az budes hledat LVM, musi se nejdrive pridat pool → Connection → Storage

Na prvni pokus se prihlaseni ke xen nepodari, protoze xen defaultne neposloucha na 0.0.0.0:8000. Proto je treba nastavit v konfiguracnim souboru

/etc/xen/xend-config.sxp
(xend-http-server yes)
(xend-unix-server yes)

a nezapomenout na service xend restart.

Prichazi tezke vahy - Day 2

Zapomente na virt-manager a virsh. Budeme pouzivat prikaz “xm” pro veskere dalsi ovladani virtualnich stroju. Nejprve si pro potreby instalace upravime /etc/xen-tools/xen-tools.cfg. Misto puvodni obsahle prikazove radky typu

  xen-create-image --hostname xen-mail --dhcp --lvm=vg_virt --install-method=debootstrap --bridge=xenbr0 --size=3G --noswap

diky uprave konfiguracniho souboru pak staci psat proste

 xen-create-image --hostname xen-jahoda

Zobrazuji jen relevantni radky, uplny soubor naleznete v materialech predanych na flash disku.

/etc/xen-tools/xen-tools.cfg
lvm = vg_virt
install-method = debootstrap
dhcp = 1
 
size   = 3Gb      # Disk image size.
memory = 1024Mb    # Memory size
noswap = 1      # Don't use swap at all for the new system.
fs     = ext4     
dist   = wheezy     # Default distribution to install.
image = full
 
serial_device = hvc0

Je velmi dobre prohlednout si instalacni log /var/log/xen-tools/xen-mail.log. Minimalne proto, ze tam bude ulozeno heslo na roota, ale take muzete pres tail -f /var/….log sledovat prubeh instalace.

Pro klobouky

  virt-install --prompt --network bridge=xenbr0 --virt-type=xen

A nasledny dialog

Would you like a fully virtualized guest (yes or no)? This will allow you to run unmodified operating systems.
<-- no
What is the name of your virtual machine?
<-- vm01
How much RAM should be allocated (in megabytes)?
<-- 1024
What would you like to use as the disk (file path)?
<-- /var/lib/libvirt/images/vm01.img
How large would you like the disk (/vm/vm01.img) to be (in gigabytes)?
<-- 10
What is the install URL?
#<-- http://ftp.tu-chemnitz.de/pub/linux/centos/6.2/os/x86_64
http://mirror.hosting90.cz/centos/6/os/x86_64

Priklad instalace CentOS v paravirtualizaci

virt-install --network bridge=xenbr0 --virt-type=xen --prompt --disk=/dev/vg_jahoda/jahoda_root \
 -p --name=xen-jahoda --ram=1024 -l http://mirror.hosting90.cz/centos/6/os/x86_64

Priklad instalace Debian v paravirtualizaci

virt-install --name=arnold --virt-type=xen --ram 1024 --paravirt --disk=/dev/vg_cloud/root1 --location=http://ftp.cz.debian.org/debian/dists/wheezy/main/installer-amd64 --prompt --nographics

Spusteni, vypnuti, pripojeni konzole a proste bezne prakticke ovladani virtualnich stroju

 xm create xen-mail.cfg

Pokud chcete ihned dostat virtualni konzoli hvc0 a sledovat boot paravirtualizovaneho stroje, muzete vytvorit stroj s parametrem -c.

 xm create -c xen-mail.cfg

Pripojeni k virtualnimu stroji

 xm console xen-mail

Naopak odpojeni je docela neintuitivni ctrl-]. V pripade, ze by vas virtualni konzole zlobila nebo se vam povedlo dvakrat pripojit, nejjednodussi zpusob je v Dom0 dat prikaz killall xenconsole. Obzvlaste zaseknute konzole budete muset odstrelit devitkou killall -9 xenconsole.

inittab

Instalace Windows

vcpus           = '2'
name            = 'xen-ricar-w'
memory          = '2048'
kernel          = '/usr/lib/xen-4.1/boot/hvmloader'
builder         = 'hvm'
acpi            = 1
apic            = 1

#dulezite
usbdevice       = 'tablet'

vnc             = 1
vncunused       = 0
vnclisten       = '10.0.4.159'
vncdisplay      = 49
vncconsole      = 1

#dulezite
boot           = 'cd'
disk =  [
        'phy:/dev/disk/by-id/scsi-23730383762383635,hdb,w',
        'file:/xen/install/win2008r2.iso,hdc:cdrom,r'
        ]

vnc

Vybornou pomuckou je pristup na virtualni server pres VNC. Na strane klienta je situace obzvlaste jednoducha

   apt-get install vncviewer
   vncviewer 192.168.5.62 5909

Na strane serveru pro paravirtualizovane virtualy staci pridat jednu jedinou radku do

/etc/xen/xen-mail.cfg
  vfb = [ 'type=vnc,vncdisplay=9,vncpasswd=aaa,vnclisten=192.168.5.62' ]

Vncdisplay je offset vuci portu 5900, tedy v nasem pripade 5900+9=5909. Vnclisten je restrikce na konretni IP. Velmi dobra pomucka pokud mate vice virtualizacnich serveru - temer cloud - a nejake interface jsou duveryhodne (lokalni sit apod.) na kterych muzete vnc nechat beztrestne bezet a muze byt dobrym pomocnikem.

kdyz nahodou dojde RAMka a potrebujeme swap

Pokud mame LVM staci vytvorit novy logicky oddil, naformatovat na swap a aktivovat

lvcreate -L 2G -n swap vg_virt
  Logical volume "swap" created
mkswap /dev/vg_virt/swap 
mkswap: /dev/vg_virt/swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=2cbaf464-5aee-45b0-9909-0e1bc5e3d3ce
swapon /dev/vg_virt/swap

Alternativni zpusob vytvoreni swapu do souboru

[root@marek ~]# dd if=/dev/zero of=/swap bs=100M count=20
20+0 records in
20+0 records out
2097152000 bytes (2.1 GB) copied, 21.0326 s, 99.7 MB/s
[root@marek ~]# mkswap /swap 
mkswap: /swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=66cb4fcd-080a-4beb-a068-9eb7c0e8b7fe
[root@marek ~]# swapon /swap 

SnapShoty

   lvcreate -L 100M --snapshot /dev/vg_virt/root_mail -n muj_backup_mail

Obvykle pak nasleduje zkopirovani snapshotu na pozadovanou destinaci

   dd if=/dev/vg_virt/muj_backup_mail of=/backup/root_mail.img bs=16M

Nezapomente snapshot zrusit prikazem

 lvremove /dev/vg_virt/muj_backup_mail

Bez problemu muzete nyni v konfiguracnim souboru virsh edit xen-mail zmenit fyzicky harddisk pro virtualni server z 'block' na 'file' a spustit xen-mail.

iSCSI - den treti

Vytvorime si pet pokusnych kraliku v podobe logical volumes root1 az root5 pro budouci export pres iSCSI.

  lvcreate -L 3G virt -n root1
  lvcreate -L 3G virt -n root2
  lvcreate -L 3G virt -n root3
  lvcreate -L 3G virt -n root4
  lvcreate -L 3G virt -n root5

server:

 yum install scsi-target-utils 
/etc/tgt/targets.conf
<target iqn.2013-1.san:pole_root1>
  backing-store /dev/vg_jahoda/root1
</target>
<target iqn.2013-1.san:pole_root2>
  backing-store /dev/vg_jahoda/root2
</target>
<target iqn.2013-1.san:pole_root3>
  backing-store /dev/vg_jahoda/root3
</target>
<target iqn.2013-1.san:pole_root4>
  backing-store /dev/vg_jahoda/root4
</target>

Mnohem lepsi je demon “IETD”, ale ten v CentOS neni (v debianu ano). Pokud se rozhodnete si ho dokompilovat, zde je priklad nastaveni

/etc/iet/ietd.conf
Target iqn.2009-05.cz.jahoda:storage.pole.root1
	Lun 0 Path=/dev/virt/root1,Type=fileio
Target iqn.2009-05.cz.jahoda:storage.pole.root2
	Lun 0 Path=/dev/virt/root2,Type=fileio
Target iqn.2009-05.cz.jahoda:storage.pole.root3
	Lun 0 Path=/dev/virt/root3,Type=fileio
Target iqn.2009-05.cz.jahoda:storage.pole.root4
	Lun 0 Path=/dev/virt/root4,Type=fileio
Target iqn.2009-05.cz.jahoda:storage.pole.root5
	Lun 0 Path=/dev/virt/root5,Type=fileio

client:

 yum install iscsi-initiator-utils
 apt-get install open-iscsi

Dale je cesta stejne pro debian i redhat

 iscsiadm -m discovery -t st -p 10.0.2.2
 iscsiadm  -m node --login -p 10.0.2.2 -T iqn.2009-05.cz.jahoda:storage.pole2.xen-mail_data

Po startu systemu Dom0 a automatickeho spusteni open-iscsi (klobouci: chkconfig open-iscsi on) lze pripojit automaticky nektere iscsi targety zmenou

/etc/iscsi/nodes/iqn.2009-05.cz.jahoda:storage.pole2.root5/192.168.5.64,3260,1/default
   #node.startup = manual
   node.startup = automatic

Pozn: Na CentOS je to ve /var/lib/iscsi/nodes.

Zvyseni redundace sitoveho pripojeni

    modprobe bonding
    ifconfig bond0 192.168.0.1 netmask 255.255.0.0 up
    ifenslave bond0 eth0 eth1

Ziva migrace Musime nastavit nasledujici polozky v /etc/xen/xend-config.sxp aby migrace fungovala

/etc/xen/xend-config.sxp
(xend-relocation-server yes)
(xend-relocation-port 8002)
(xend-relocation-address '192.168.5.62')
# a nebo vsechny
(xend-relocation-address '')
(xend-relocation-hosts-allow '')

Pokud nepouzijete SSH nebo TLS, bude se prenaset binarni obraz pameti bez sifrovani. Coz je ve vasi siti obvykle uplne jedno, takze si nezeslozitujte zbytecne zivot slovem bezpecnost tam, kde je irelevantni. V jinych pripadech je rozumejsi nez ssh/tls uvest povolene hosty nebo jedno pravidlo do firewallu.

A nezapomenout na restart sluzby

 # service xend restart
 

Zlaty hreb skoleni

  xm migrate --live xen-mail 192.168.5.66

Video v anglictine popisujici migraci:

  • migrate.jpeg

SNMP/MRTG

Spravny nazev balicku je

 yum install net-snmp
com2sec local     localhost           public
group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
view all    included  .1                               80
access MyRWGroup ""      any       noauth    exact  all    all    none
syslocation VSNL, Indian se slehackou
syscontact Root <vivek@nixcraft.tld>

Nezapomenout na chkconfig a service restart.

FUN

watch se da simulovat takto:

  while :; do
      xm list
      sleep 2
      clear
  done

Chytry login, ktery zobrazuje pripadny neuspech posledniho prikazu a plnou cestu o radek vyse.

PS1='\[\033[0;37m\]\342\224\214\342\224\200$([[ $? != 0 ]] && echo "[\[\033[0;31m\]\342\234\227\[\033[0;37m\]]\342\224\200")[\[\033[0;33m\]\u\[\033[0;37m\]@\[\033[0;96m\]\h\[\033[0;37m\]]\342\224\200[\[\033[0;32m\]\w\[\033[0;37m\]]\n\[\033[0;37m\]\342\224\224\342\224\200\342\224\200\342\225\274 \[\033[0m\]'

Krakty skript pro automaticke vytvareni (clonovani) virtualu auto-clone.sh

#!/bin/sh
 
set -e
 
VZOR="clon-arnold.xml"
CLON="xen-$1"
 
lvcreate -L 4G -n $CLON vg_virt
dd if=/dev/vg_virt/xen-arnold of=/dev/vg_virt/$CLON bs=64M 
sed "s/xen-arnold/$CLON/" $VZOR >$CLON.xml
virsh create $CLON.xml

Nastaveni pro ucebny

 xrandr --output LVDS1 --auto --output HDMI1 --auto --same-as LVDS1
 
linux/skoleni/virtualizace-centos.txt · Last modified: 2015/09/04 10:09 by admin