Piszki Lab

Analiza przypadku w języku przodków…

Serwer KVM wewnątrz serwera VMware ESXi.

| 0 comments

W ramach mojego środowiska testowego bardzo intensywnie sprawdzam ostatnio wszystkie rozwiązania typu Cloud dostępne na licencji Open Source (takie jak Proxmox, oVirt i CloudStack). Wszystkie one korzystają głównie z darmowego hipernadzorcy jakim jest KVM. Oczywiście nie ma mowy o tym, aby co chwilę stawiać fizyczne maszyny z KVM, skoro wszystko mam zwirtualizowane za pomocą VMware vSphere. W tym artykule pokażę jak przygotować zagnieżdżony serwer KVM (bazujący na CentOS 7) i pracujący pod kontrolą VMware ESXi (zbliżona konfiguracja zadziała z VMware Workstation).

kvm0

Zagnieżdżanie wirtualizacji w wersji dla ESXi omówiłem dokładnie tutaj i tutaj i tutaj. W przypadku KVM mamy dokładnie takie same wymagania, czyli serwer fizyczny musi wspierać zagnieżdżanie wirtualizacji (jak to sprawdzić opisałem tutaj). Ten warunek w przypadku każdego, standardowego serwera jest spełniony, w przypadku maszyn na komponentach “domowych” trzeba to dokładnie sprawdzić (dotyczy to głównie procesorów Intel). Dodatkowo, w ustawieniach wirtualnej maszyny z KVM musimy włączyć opcję “Hardware wirtualization”.

kvm2

Dodatkowo sieć w jakiej funkcjonuje zagnieżdżony KVM powinna mieć włączony Promiscuous-Mode. Jak już wspomniałem, serwer KVM to standardowy CentOS 7 zainstalowany jako minimal install. W tak spreparowanym systemie musimy wykonać kilka kroków aby uruchomić w pełni funkcjonalny serwer QEMU/KVM. Zaczniemy oczywiście od zainstalowania odpowiednich pakietów.

yum install kvm libvirt virt-install virt-manager qemu-kvm libvirt-client virt-viewer bridge-utils qemu-img libvirt-python xauth

Oczywiście virt-manager nie jest niezbędnym pakietem, pozwoli nam on jednak na końcu w prosty sposób sprawdzić czy wszystko jest ok. Po zainstalowaniu pakietów musimy skonfigurować pakiet QEMU i libvirt. Zaczynamy od pliku /etc/libvirt/qemu.conf w którym usówamy znak # z lini: vnc_listen=0.0.0.0

Następnie w pliku /etc/libvirt/libvirtd.conf dodajemy następujące parametry (lub usuwamy # z odpowiednich linii):

kvm3

W kolejnym pliku, w /etc/sysconfig/libvirtd usówamy znak # z linii: LIBVIRT_ARGS=”—listen”

Następnie przystępujemy do konfiguracji sieci wewnątrz maszyny. KVM funkcjonuje jako router, maszyny wirtualne z wewnątrz KVM komunikują się ze światem zewnętrznym za pomocą standardowej, mostkowanej (bridge) sieci z wykorzystaniem translacji adresów NAT (w tym przykładzie nie użyjemy OpenVswitch). Aby Linuks funkcjonował jako router, musimy mu zezwolić na przesyłanie dalej pakietów (ip forwarding). Tworzymy plik /etc/sysctl.d/99-ipforward.conf z zawartością net.ipv4.ip_forward = 1.

kvm4

Ustawienie to możemy włączyć poleceniem sysctl –p lub zrestartować maszynę (ustawienie jest trwałe). W kolejnym kroku rekonfigurujemy całkowicie sieć, robimy to z konsoli maszyny (w pewnym momencie odetniemy się na chwilę) za pomocą następujących poleceń:

kvm1

Jak widać, stworzyliśmy mostek na który przenieśliśmy adres IP maszyny, od tej pory cała komunikacja przejdzie przez połączenie cloudbr0. Powyższe polecenia to oczywiście Natwork Manager CLI, możemy to samo zrobić za pomocą plików opisujących interfejsy w /etc/sysconfig. Tak przygotowany serwer możemy zrestartować aby mieć pewność że wszystkie zmiany są aktywne. Test można przeprowadzić za pomocą virt-manager, jest to polecenie okienkowe co oznacza, że na stacji roboczej z Windows musimy zainstalować i uruchomić serwer X (Xming) a z konsoli przekierować ekran poleceniem export DISPLAY=IP_STACJI_Z_WINDOWS:0.0. Uruchamiamy virt-manager i sprawdzamy czy wszystko jest ok.

kvm5

W okienku głównym klikamy “Details” na pozycji QEMU/KVM.

kvm6

KVM działa poprawnie, mostek jest widoczny i podłączony. Od tego momentu można tworzyć wirtualne maszyny (ręcznie) lub podłączyć taki serwer pod CloudStack i przejść na wyższy poziom wirtualizacji.

Oceń ten artykuł:
[Głosów:0    Średnia:0/5]

Dodaj komentarz

Required fields are marked *.


.

Podobał się wpis? Wesprzyj Piszki Lab, kliknij w reklamę! :-)

.