XEN: instalacja usług i dodawanie gości

Celem laboratorium jest zapoznanie się z instalacją i konfiguracją hypervisora Xen. Po zakończeniu laboratorium student powinien rozumieć architekturę, na której oparty jest Xen; potrafić go zainstalować i skonfigurować podstawowe domeny gości.

Wstęp

Proszę zapoznać się z instrukcją instalacji, proszę znaleźć odpowiedzi na pytania w niej zadane.

Jeżeli pracujecie Państwo na XenServer proszę w celu stworzenia maszyny wirtualnej wykonać [[.:xenserver|instrukcję]]

Konfiguracja domeny gospodarza

Teraz znowu jesteśmy w grze, nie powinniśmy odczuwać żadnej różnicy, ale… nasz poczciwy debian jest teraz jedną z maszyn (domen) Xena! Wyjątkową, bo wyjątkową, ale zawsze. Żeby upewnić się, że Xen działa, możemy zalogować się na konto roota i wykonać kilka komend konsoli xena, np.

  • xl info
  • xl list
  • xl help
  • xl top

Pytanie 1

Jak się nazywa domena naszego poczciwego Debiana?

Pytanie 2

Do czego służy komenda xl top?

Zanim przejdziemy do instalacji gości, musimy zadbać o naszego gospodarza. Problemem jest to, że aktualnie gospodarz to zwykła domena, która będzie musiała współdzielić zasoby z innymi gośćmi. W szczególnym przypadku może zabraknąć zasobów dla gospodarza. Dlatego też musimy zarezerwować dla niego trochę pamięci i czasu procesora.

Pamięć

Plik konfiguracji Xena:

/etc/xen/xend-config.sxp

ma lisp’ową składnię, tzn. żeby ustawić opcję o nazwie opcja na wartość wartość, należy w nim wpisać linijkę:

(opcja wartość)

Interesują nas dwie opcje:

dom0-min-mem

której wartość to ram (w megabajtach) zarezerwowany dla domeny gospodarza.

enable-dom0-ballooning

której wartość to **boolean** (yes/no), oznaczający, czy Xen może pożyczać pamięć od domeny gospodarza dla innych gości.

Plik konfiguracji gruba:

/etc/default/grub

zawiera domyślne opcje bootowania. W szczególności można w nim przekazać dodatkowe argumenty w zmiennej **GRUB_CMDLINE_XEN**, np.

GRUB_CMDLINE_XEN="opcja1=wartosc opcja2=wartosc flaga"

Aby zarezerwować pamięć dla domeny gospodarza, trzeba ustawić opcję bootowania Xena o nazwie **dom0_mem** na wartość odpowiadającą rezerwowanej pamięci, np. „512M” (zachęcam jednak, by użyć wyższej wartości).

Pytanie 3

Czy pamiętaliście o wywołaniu komendy, która zawsze trzeba wywołać przy zmianie konfiguracji gruba?

Procesor

Chcemy zarezerwować chociaż jeden rdzeń dla systemu gospodarza. Żeby to zrobić, należy wykonać dwa zadania:

* w konfiguracji xena, ustawić wartość opcji dom0-cpus na wartość 1
* w konfiguracji gruba, dodać do opcji bootowania xena:
* opcję dom0_max_vcpus o wartości 1
* flagę (czyli opcję bez wartości dom0_vcpus_pin)
I znowu magiczna komenda, i znowu restart, i znowu trzeba sprawdzić, czy wszystko działa według naszych założeń.

Instalowanie gości

Dobra, zbliżamy się do meritum. Żeby stworzyć domenę „gościa”, wystarczy użyć komendy:

xl create <ścieżka do pliku konfiguracji gościa>

Rzecz się wydaje prosta, ale brakuje nam pliku konfiguracji maszyny. Moglibyśmy stworzyć własny na podstawie dokumentacji i plików przykładowych: **/etc/xen/xlexample.hvm** oraz **/etc/xen/xlexample,pvlinux**, ale spróbujmy zrobić to prościej.

Zacznijmy od zainstalowania pakietu **xen-tools**. Zawiera on kilka narzędzi, nas zainteresuje w szczególności jedno: **xen-create-image**.

**Zadanie 1:** Korzystając z dokumentacji tego polecenia, proszę stworzyć obraz spełniający dane warunki:
* nazwa hosta: „lab1”
* pamięć 512MB
* dwa wirtualne procesory
* sieć skonfigurowana – dane podane na zajęciach
* dystrybucja debian
* zapis obrazu używając lvm, grupy o nazwie sitw (ostatnia opcja w manualu komendy).
jeśli lvm nie jest skonfigurowane na hoście, proszę zapisać obraz w postaci pliku w katalogu domowym Państwa użytkownika.
Narzędzie pobiera i konfiguruje dla Państwa świeżą instalacje debiana, proszę spędzić 5 minut na lekturze internetu, co to jest lvm. Lub innych konstruktywnych zajęciach.

Pytanie 4

Jakie jest hasło root’a utworzonej maszyny?

Po udanym utworzeniu obrazu gościa, trzeba uruchomić maszynę. Jej plik konfiguracyjny znajduje się w

/etc/xen

Proszę użyć komendy **xl create** do uruchomienia maszyny.

Pytanie 5

Jaki jest teraz wynik komendy xl list.

Pytanie 6

Ile istnieje teraz interfejsów sieciowych na gospodarzu?

Sterowanie gośćmi

Aby zalogować się na gościa wystarczy użyć komendy:

xl console

Mam nadzieję, że pamiętają Państwo hasło roota… Jeżeli uda się Państwu zalogować na maszynę, konsolę można opuścić używając skrótu CTRL+].

Istnieją oczywiście inne metody logowania do maszyny gościa. Spróbujmy zalogować się na niego przez ssh i stworzyć na nim jakąś usługę.

Konfiguracja SSH na gościu

* Tworzymy na gościu nowego użytkownika nie-roota (**xl console + adduser**).
* Jako root uruchamiamy ssh (**systemctl start ssh && systemctl enable ssh**).
* Jako root sprawdzamy adres ip interfejsu sieciowego (to chyba już umiemy)
* Opuszczamy maszynę
Teraz wystarczy zalogować się poprzez **ssh** używając nowo stworzonego użytkownika na podanym adresie.

ssh user@adres

Pytanie 7

Czy kolega/żanka z innej grupy też może zalogować się przez ssh na Państwa gościa?

Wirtualny serwer WWW

* Logujemy się na konto root’a na gościu
* Instalujemy pakiet **apache2**
* Uruchamiamy usługę **apache2**
* Modyfikujemy plik **/var/www/html/index.html**
Z poziomu gospodarza uruchamiamy przeglądarkę i oglądamy stronę pod adresem IP gościa.

Pytanie 8

Czy kolega/żanka z innej grupy też widzi Państwa stronę?

Zadanie 2

* Proszę stworzyć maszynę partą o system Centos. System ten ma mieć dodanych 2 użytkowników systemowych **jan** oraz **kinga**, każdy z nich ma mieć ustawione hasło: **XenLab**
* Użytkownicy dodani przez Państwa mają należeć do grup **users** oraz **sudo**.
* Proszę zainstalować sudo i zmodyfikować plik sudoers tak, aby sudo działało dla grupy sudo.
* Proszę uruchomić maszynę, zweryfikuj, że wszystko działa poprawnie oraz członkostwo użytkowników jest jak założone w zadaniu.

Zadanie 3

* Proszę uruchomić maszynę zawierającą **bazę MySQL** w wersji 5.7 z nazwą: **mysql-xen**, zostanie ona wykorzystana w późniejszych zadaniach.

Zadanie 4

* Proszę stworzyć i uruchomić maszynę w której zainstalują i uruchomią Państwo forum oparte o skrypt **flarum** (http://flarum.org/), jako bazę proszę wykorzystać maszynę **mysql-xen**. System dowolny.
* Proszę przekierować port 8080 na port 80 kontenera z flarum.

Zadanie 5

* Proszę uruchomić maszynę z wordpressem (zmapować port 8081), jako bazę wykorzystać maszynę **mysql-xen**

Parawirtualizacja

Naszym celem jest postawienie tej samej maszyny, co na poprzednim laboratorium, z jedną drobną różnicą, zamiast lvm użyjemy obrazu dysku. Żeby przyśpieszyć proces, zaimportujemy maszynę z istniejącego już obrazu dysku.

Zadanie 6

Korzystając z polecenie xen-create-image, proszę stworzyć domenę spełniającą podane warunki:

nazwa hosta: „lab2-pvm”
pamięć 512MB
dwa wirtualne procesory
sieć skonfigurowaną statycznie:
adres ip: podane przez prowadzącego
brama: podana przez prowadzącego
maska: 255.255.255.0
broadcast: podany przez prowadzącego
dystrybucja debian jessie
zapis obrazu używając zwykłego katalogu o ścieżce ‘/home/student/sitw’
komenda ma nie instalować systemu
Pytanie: Podczas tworzenia maszyny pojawiło się kilka błędów. Skąd one wynikają?

W pliku konfiguracji domeny można zobaczyć, jakie ścieżki prowadzą do plików będących partycjami tej domeny.

Zadanie 7

Zastąpić nowo powstały dysk plikiem pvm/disk.img z katalogu /home/student/sitw/images. Proszę użyć komendy dd zamiast cp:

dd if=<ścieka źródłowa> of=<ścieżka docelowa> bs=8M status=progress

Zadanie 8

Nie znamy hasła roota do instalacji na pvm/disk.img. Proszę je ustawić ręcznie na xena (tip: komendy mount -o loop, chroot i passwd).

Zadanie 9

Proszę stworzyć i uruchomić domenę. Hasło root’a: xena.

Wirtualizacja sprzętowa

Instalacja gościa sprzętowego przebiega trochę inaczej. Przypomina dużo bardziej instalację zwykłego systemu operacyjnego. Najpierw należy przygotować konfigurację maszyny. W tym celu proszę skopiować przykładową konfigurację domeny typu hvm (z katalogu **/etc/xen/**) do nowego pliku **/etc/xen/lab2-pvhvm.cfg**.

Zadanie 10

Należy wprowadzić do pliku pewne zmiany:

nazwa gościa powinna brzmieć lab2-pvhvm \\
powinien mieć 512MB ramu \\
sieć skonfigurowaną statycznie: \\
adres ip: 10.133.37. (na wzór konfiguracji lab2-pvm ostatnią część adresu na zajęciach poda prowadzący) \\
resztę sieci konfiguruje się dopiero podczas instalacji systemu (czyli nie teraz :!:): \\
brama: 10.133.37 (jak wyżej) \\
maska: 255.255.255.0 \\
broadcast: 10.133.37.255 \\
dns: 8.8.8.8, 8.8.4.4 \\
powinien mieć dwa dyski twarde na wzór konfiguracji lab2-pvm (proszę pamiętać o zmianie ścieżek) \\
dysk swap powinien mieć nazwę xvdb \\
dysk root powinien mieć nazwę xvda \\
same dyski utworzymy w kolejnych krokach \\
powinien mieć napęd cdrom z zamontowanym plikiem **/home/student/sitw/images/debian_installer.iso:** \\
jeżeli plik nie istnieje (lub ma podejrzanie mały rozmiar) proszę wykonać komendę: \\

wget -O /home/student/sitw/images/debian_installer.iso http://cdimage.debian.org/debian-cd/8.6.0/amd64/iso-cd/debian-8.6.0-amd64-netinst.iso

Podpowiedź: napęd cdrom nazywa się hdc:cdrom. Więcej w dokumentacji. \\
powinien korzystać z vnc do dzielenia ekranu \\
powinien najpierw bootować stację cdrom \\
podpowiedź: składnia plików konfiguracyjnych maszyn jest opisana w dokumentacji xl.cfg \\
Teraz potrzebujemy tylko dysków twardych, żeby móc zainstalować system. Aby stworzyć plikopartycję, można posłużyć się poleceniem dd, które służy do najprostszego kopiowania bajt po bajcie (blok po bloku). Plikopartycja, to nic innego jak pusty plik, który ma zadaną wielkość. Aby stworzyć plik, który ma służyć za partycję swap o rozmiarze 128MB, można posłużyć się poleceniem:

dd if=/dev/zero of=./swap.img bs=1024k seek=128 count=0

gdzie:

if to źródło, w tym przypadku źródło zer \\
of to strumień wyjściowy \\
bs to rozmiar kopiowanego bloku \\
seek ile bloków można pominąć, bo nie są nic warte (przyśpiesza sprawę) \\
count ile bloków skopiować \\

Zadanie 11

Proszę wygenerować puste pliki partycji, jedną 4GB na roota, drugą 128MB na swap i umieścić je w ścieżkach wskazanych wcześniej w pliku konfiguracyjnym domeny.

Zadanie 12

Proszę stworzyć maszynę lab2_pvhvm i znaleźć adres, pod którym jest dostępna przez vnc. Podpowiedź: vnc to proces jak każdy inny.

Zadanie 13

Proszę połączyć się z maszyną używając narzędzia vncviewer (w razie potrzeby zainstalować). \\

Jeżeli to się uda, mają Państwo teraz dwie możliwości: \\

Zainstalować Debiana ręcznie — zalecane dla osób, które nigdy tego nie robiły. Prosta robota, ale może chwilę zająć (proszę nie instalować żadnych środowisk graficznych) \\
haczyk: po instalacji trzeba zadbać o to, żeby plik /etc/resolv.conf zawierał prawidłowe serwery DNS: \\
nameserver 8.8.8.8 \\
nameserver 8.8.4.4 \\
Jak poprzednio, użyć gotowych obrazów swap.img i hvm/disk.img z katalogu /home/student/sitw/images, hasło roota: xena. \\
Niezależnie od wybranej ścieżki, można teraz z pliku konfiguracyjnego usunąć cdrom i zmienić kolejność boot’owania tak, by pierwsza była partycja roota.

Sprzątanie

Zadanie 1

Zatrzymać maszyny gości jednym z poleceń **xl**.

Zadanie 2

Usunąć obrazy gościa poleceniem **xen-delete-image**