Virtualizare

Idei

  • Virtualization happens.
  • Hardware is cheap. Consolidation is king.
  • Choose what suits you best.
  • I/O is an issue.
  • Users see no difference between physical host and virtual machine.

Demo

  • Discuții
    • Infrastructura de containere din laborator

LXC

  • Obiective
    • Dorim să instalăm pachetul LXC din surse.
    • Dorim să configurăm networking printr-un Linux bridge în containerul din rețeaua de laborator.
    • Vom instala și rula un container Busybox în containerul pe care îl folosim în cadrul workshop-ului.
    • Toate comenzile se execută în containerul LXC ca root.

* Instalare LXC

  • # Instalați pachetele necesare pentru compilarea pachetului LXC:
    apt-get build-dep lxc
    apt-get install pkg-config autoconf
    1. Descărcați sursele LXC de pe pagina oficială:
      mkdir ~/source; cd ~/source
      wget https://linuxcontainers.org/downloads/lxc-1.0.4.tar.gz
    2. Dezarhivați pachetul descărcat și intrați în directorul creat:
      tar -xzvf lxc-1.0.4.tar.gz
      cd lxc-1.0.4
    3. Procesul de build se desfășoară folosind sistemul de build GNU, cunoscut și după numele de autotools. Acesta are 3 etape:
      • Pregătirea sistemului de build:
        ./autogen.sh
      • Configurări pentru procesul de build și instalare a pachetului LXC:
        ./configure --prefix=/usr --disable-apparmor --disable-doc --with-distro=debian
        • –prefix=/usr - locația de instalare a fișierelor va avea acest prefix
        • –disable-doc - nu compilăm și documentația (pentru simplitate)
        • –disable-apparmor - nu compilăm cu suport de AppArmor (pentru simplitate)
        • –with-distro=debian - compilăm pachetul pentru o distribuție Debian
      • Build-ul propriu-zis:
        make
    4. O dată ce ați compilat pachetul, instalați-l:
      make install
      • Verificați că pachetul LXC a fost instalat cu succes și că binarele din suita lxc- sunt disponibile în /usr/bin:
        ls -l /usr/bin/ | grep lxc
      • Puteți verifica și rulând
        lxc-<TAB>

        din terminal.

  • Configurare networking
    1. Instalați suportul pentru Linux bridging:
      apt-get install bridge-utils
    2. Configurați un bridge înlocuind conținutul fișierului /etc/network/interfaces cu următoarele linii:
      auto lo
      iface lo inet loopback
       
      auto eth0
      iface eth0 inet manual
       
      auto br0
      iface br0 inet static
      	bridge_ports eth0
      	bridge_fd 0
      	bridge_maxwait 0
      	address 192.168.0.<USER_ID>
      	network 192.168.0.0
      	broadcast 192.168.0.255
      	netmask 255.255.255.0
      	gateway 192.168.0.254
      	dns-nameservers 8.8.8.8
      • USER_ID reprezintă id-ul containerului vostru din rețeaua de laborator (sysadmin-USER_ID), și ar trebui sa coincidă și cu ultimul număr din IP-ul vostru curent.
      • ATENȚIE!! Configurați fișierul cu grijă - dacă se strecoară greșeli veți pierde accesul la container.
    3. Restartați serviciul de networking:
      service networking restart
      • Dacă ați configurat totul în ordine, ar trebui să aveți în continuare access la terminalul din container.
  • Instalați un container Busybox în containerul vostru sysadmin.
    1. Instalați Busybox pe host:
      apt-get install busybox-static
    2. Template-ul care instalează containerul Busybox va activa un client DHCP în mod implicit. De asemenea, semnalul cu care containerul va fi oprit trebuie schimbat. Realizați modificările necesare folosind următoarele comenzi:
      sed 's/\/bin\/udhcpc//g' -i /usr/share/lxc/templates/lxc-busybox
      sed 's/SIGUSR1/SIGKILL/g' -i /usr/share/lxc/templates/lxc-busybox
      sed 's/        mknod -m 600 ram0 b 1 0      || res=1//g' -i /usr/share/lxc/templates/lxc-busybox
      sed 's/ram0//g' -i /usr/share/lxc/templates/lxc-busybox
    3. Creați fișierul my-busybox-lxc.conf cu următorul conținut:
      my-busybox-lxc.conf
      lxc.utsname = my-lxc-<USER_ID>
      lxc.network.type = veth
      lxc.network.flags = up
      lxc.network.link = br0
      lxc.network.ipv4 = 192.168.0.1<USER_ID>
      lxc.network.ipv4.gateway = 192.168.0.254
      • USER_ID reprezintă id-ul containerului vostru din rețeaua de laborator (sysadmin-USER_ID), și ar trebui sa coincidă și cu ultimul număr din IP-ul vostru curent.
    4. Creați containerul folosind comanda:
      lxc-create -n my-lxc-<USER_ID> -t busybox -f my-busybox-lxc.conf
      • Verificați că operația s-a efectuat cu success rulând lxc-ls.
      • Observați ca operația de setare a parolei pentru utilizatorul root a eșuat.
    5. Montați sistemul de fișiere Control Groups:
      mount -t cgroup cgroups /sys/fs/cgroup
    6. Porniți containerul folosind comanda lxc-start:
      lxc-start -n my-lxc-<USER_ID>
    7. Din noua consolă, schimbați parola utilizatorului curent (root).
    8. Dintr-un alt terminal, opriți containerul:
      lxc-stop -n my-lxc-<USER_ID>
    9. Porniți containerul din nou, de data aceasta în mod daemon:
      lxc-start -n my-lxc-<USER_ID> -d
    10. Afișați informații despre container:
      lxc-info -n my-lxc-<USER_ID>
    11. Intrați în containerul nou creat:
      lxc-console -n my-lxc-<USER_ID>
      • Din interiorul noului container, verificați conectivitatea cu alți colegi - fie către containere sysadmin fie către containere my-lxc. Folosiți ping către IP-urile acestora, nu către hostname.
      • Tot din interiorul noului container, verificați conectivitatea cu google.com. Pentru aceasta, trebuie sa adăugați un server de DNS în noul container:
        echo "nameserver 8.8.8.8" > /etc/resolv.conf
    12. Opriți containerul dintr-un alt terminal.
    13. Distrugeți containerul folosind comanda:
      lxc-destroy -n my-lxc-<USER_ID>

KVM

  • Parcurgeți exercițiile de aici și documentația aferentă din cadrul paginii.

Extra

  • Parcurgeți indicațiile de aici pentru configurarea unui container LXC de tip Debian (pe mașina fizică).
sesiuni/sysadmin/virtualizare.txt · Last modified: 2014/07/04 10:00 by bpurcareata