Jak stworzyć własna chmurę z CC1 Maciej Nabożny 20 lutego 2014
1 Wstęp Podczas warsztatów przedstawiony zostanie projekt Open Source CC1. Oprogramowanie rozwijane w ramach tego projektu umożliwia stworzenie prywatnej chmury obliczeniowej IaaS opartej o wirtualizację. W dużym skrócie - użytkownik ma możliwość integracji własnego sprzętu do stworzenia środowiska, w którym bardzo małym nakładem pracy można zarzadzać wirtualnymi maszynami oraz zasobami dla nich. Zintegrowane w ten sposób zasoby komputerowe staja się dla użytkowników chmury jednolite i znacznie bardziej dostępne niż do tej pory. 2 Plan warsztatów Kilka słów o cloudzie Czym jest Cloud Computing Projekct CC1 Przygotowanie środowiska do instalacji Instalacja pakietu CC1 Konfiguracja chmury Tworzenie wirtualnych maszyn Zarzadzanie zasobami 3 Przygotowanie środowiska do instalacji Do stworzenia minimalnej wersji chmury obliczeniowej potrzebne nam będa co najmniej dwie maszyny (komputery). Jeden z nich będzie obsługiwał wszystkie serwisy wymagane do sprawnego działania chmury. Drugi (i każdy kolejny) będzie działał już jako serwer udostępniajacy swoje zasoby dla chmury. Cała chmura ma modularna budowę i składa się z poniższych elementów: Interfejs WWW (WI) - główny interefejs dla użytkowników w formie strony WWW Cloud Manager (CLM) - centralny serwis zarzadzaj acy kontami użytkowników i spinajacy wszystkie serwerownie właczone do chmury Cluster Manager (CM) - serwis, który zarzadza zasobami w pojedynczej serwerowni (lub wydzielonym fragmencie chmury). Do Cloud Managera może być wpięte wiele Cluster Managerów Node - pojednyczy komputer lub serwer udostępniajacy swoje zasoby chmurze Z powyższych puzzli możemy zrealizować wiele konfiguracji chmury. W zależności od naszych potrzeb będzie to konfiguracja po prostu prosta, skalowalna, redundantna lub rozproszona: 2
Warto wspomnieć, że sposób instalacji, z jakiego korzystamy podczas tych warsztatów, zwalnia nas z konfiguracji takich rzeczy jak konfiguracja wirtualizatora, sieci lub systemu operacyjnego. Na barkach administratora pozostaje jedynie wybór odpowiedniej struktury chmury, dodanie zasobów i zapewnienie bezpieczeństwa fizycznej sieci oraz usług (firewalle). Architektura chmury CC1 pozwala w łatwy sposób integrować ja z narzędziami równoważacymi ruch HTTP dla zwykłych serwerów oraz zabezpieczajacymi cała komunikację już na poziomie samego serwera WWW. Ponieważ na warsztatach mamy dostępne dwie maszyny, na każda demonstracyjna instalację chmury CC1, wykorzystamy najprostsza konfigurację: Wszystkie serwisy (Web Interface, Cloud Manager i Cluster Manager) będa zainstalowane na tej samej maszynie. Druga maszyna będzie Node m, na którym będa uruchamiane wirtualne maszyny. Obie maszyny maja dostępne około 2GB pamięci RAM oraz jeden rdzeń. Maszyna dostępowa, na której będa instalowane serwisy, ma publiczny adres IP doła- czony do instrukcji. Dostęp do Noda jest możliwy jedynie z głównej maszyny poprzez SSH: ssh root@<adres IP> lub przez program putty. 3
4 Instalacja Po udanym zalogowaniu na główna maszynę powinniśmy zaczać od dodania repozytorium projektu CC1. Repozytorium - jest to zwykle serwer HTTP, który przechowuje pliki do instalacji różnych programów i bibliotek. Podczas instalacji jakichkolwiek programów w systemie Linux Debian, program apt-get wyszukuje najnowsze wersje oprogramowania we wszystkich podanych repozytoriach. Dodajac repozytorium projektu CC1, dajemy mu możliwość pobierania najnowszych wersji systemu CC1. W celu dodania tego repozytorium edytujemy plik /etc/apt/sources.list naszym ulubionym edytorem (na przykład mcedit :) i na końcu dopisujemy linię: # (...) deb http://cc1.ifj.edu.pl/packages/ nightly main Powyższy plik określa repozytorium paczek Debiana. Wskazujemy w nim gałaź nightly, dla której znajdziemy najnowsze wersje pakietów (w tym również testowe). Po pomyślnym dodaniu należy zaktualizować listę pakietów poleceniem: apt-get update oraz zainstalować niezbędne pakiety: apt-get install cc1-wi cc1-clm cc1-cm cc1-storage Instalujemy w ten sposób wszystkie serwisy wchodzace w skład chmury CC1 na jednej maszynie. Domyślnie sa one skonfigurowane tak, aby w tej podstawowej konfiguracji wszystko działało bez dodatkowych zmian konfiguracji. Dodatkowy pakiet cc1-storage instaluje i konfiguruje prosta usługę udostępniania plików po NFS. Ponieważ nie mamy dostępu do żadnej zewnętrznej macierzy, to nasza główna maszyna będzie pełniła rolę macierzy przechowujacej pliki użytkowników chmury. W zwykłej instalacji powinna to być osobna maszyna, lub chociaż dedykowany dysk o dużej pojemności. Sam proces instalacji pakietów może potrwać od kilku do kilkunastu minut, w zależności od posiadanego sprzętu i łacza internetowego. Podczas instalacji program apt-get pobiera również wszystkie niezbędne do działania programy i pakiety. 4.1 Dostęp do chmury Po zakończeniu instalacji, jeśli wszystko przebiegło pomyślnie, powinniśmy mieć dostęp do interfejsu nieskonfigurowanej chmury CC1. W tym celu należy wpisać adres naszej głównej maszyny w przegladarce: http://192.245.169.[...]/ 4
Do zalogowania się pierwszy raz należy użyć nazwy konta: cc1 oraz hasła cc1. 5 Konfiguracja chmury Przy instalacji wszystkich usług na jednym komputerze, żadne spośród parametrów konfiguracji usług nie wymagaja zmian. Należy jedynie dodać jeszcze Nody, na których będziemy uruchamiali wirtualne maszyny, oraz określić ilość zasobów, jakie możemy przeznaczyć na ten cel. 5.1 Dodanie Cluster Managera Sama usługa Cloud Manager połaczona z interfejsem WWW nie udostępnia jeszcze żadnych zasobów. Jak pewnie zauważyłeś/aś, po zalogowaniu pojawia się bład No Cluster Manager available. Aby dodać pierwsze zasoby do chmury, musimy dodać informację o nowym Cluster Manager (CM). W tym celu należy zalogować się do panelu Cloud Manager (CLM): http://192.245.169.[...]/admin_clm/ W zakładce Cluster Managers możemy dodać nasz pierwszy Cluster Manager. Jest on dostępny na tej samej maszynie, co CLM, więc podajemy adres IP: 127.0.0.1 i port 8001. Po dodaniu go, możemy skasować informację z błędem (jeśli wcześniej tego nie zrobiliśmy). 6 Konfiguracja Cluster Managera Konfiguracja podstawowej chmury jest już na tym etapie zakończona. Pozostaje jedynie dodanie do niej zasobów w naszym CM. W tym celu dodamy informacje o macierzy, dostępnych szablonach maszyn, sieciach i Nodach. 5
6.1 Zmiana wirtualizatora Środowisko na jakim pracujesz, to dwie wirtualne maszyny. Nie byłoby z tym żadnego problemu, gdyby nie fakt, że za chwilę będziemy uruchamiać na nich kolejne wirtualne maszyny (czyli vm wewnatrz vm). Aby taka konfiguracja się powiodła, konieczne jest zmienienie jednej opcji wirtualizatora w Cluster Manager. W tym celu należy wyedytować plik (np. za pomoca mcedit lub ulubionego edytora): /usr/lib/cc1/cm/templates/qemu.xml W pierwszej lini należy zmienić kvm na qemu. Dzięki tej zmianie nie będziemy używali sprzętowej wirtualizacji (której już i tak nie ma w wirtualnej maszynie), a jedynie programowa. Jest ona dużo wolniejsza, ale na potrzeby warsztatów powinna wystarczyć. 6.2 Dodanie macierzy Pierwszym i podstawowym krokiem jest dodanie do bazy danych informacji o macierzy dyskowej. Macierz jest wykorzystywana do przechowywania obrazów dysków dla wirtualnych maszyn oraz zasobów użytkowników. Jej rozmiar oraz szybkość działania częściowo przekładaja się na komfort pracy użytkowników. Zwykłe dyski maszyn sa kopiowane na Nody podczas startu i prędkość macierzy nie ma wpływu na ich działanie. Nieco inaczej wygla- daja dyski podpinane do maszyn i wykorzystywane do trwałego przechowywania danych. Sa one zawsze umieszczone na macierzy i jej prędkość ma duży wpływ na dostęp do takich danych przez maszyny. Drugim aspektem jest pojemność macierzy. Jej pojemność wpływa bezpośrednio na możliwości użytkowników, jeśli chodzi o przechowywanie danych. W tym celu logujemy się do panelu administratora klastra (czyli tej części chmury, która odpowiada bezpośrednio za sprzęt) i z zakładki Sprzęt wybieramy pozycję Macierze (lub Hardware/Storages w wersji angielskiej). Bezpośrednio po instalacji lista ta jest pusta i należy dodać nowa macierz, klikajac przycisk pod lista. W wyświetlonym formularzu należy wypełnić pola: Name - wyświetlana nazwa macierzy. Należy używać tylko liter i liczb (bez polskich znaków) Maximum capacity - dostępne miejsce na macierzy. Ponieważ obrazy maszyn, na których instalujemy chmurę demo, nie sa duże, należy wpisać tutaj nie więcej niż 2000MB. Addres - adres naszej macierzy, widoczny dla Nodów. Aby go poznać, należy powrócić do konsoli SSH (lub programu putty) i sprawdzić adres IP interfejsu eth0. Można to wykonać na przykład poleceniem ifconfig eth0 lub ip addr show. Directory - katalog na macierzy, który jest dostępny dla klastra. W przypadku wykorzystania macierzy instalowanej jako testowa (z paczek), wpisujemy tutaj /var/lib/cc1/storage/ 6
Po wykonaniu tej operacji macierz powinna pojawić się na liście. Należy pamiętać, że będzie ona dostępna i używana dopiero po zrestartowaniu całej usługi Cluster Manager. 6.3 Dodanie szablonów maszyn Szablony wirtualnych maszyn to nic innego, jak opisy sprzętu udostępnianego użytkownikom naszej chmury. Określamy w nich ilość rdzeni i pamięci, jaka przydzielana jest maszynie uruchomionej z danego szablonu. Można w nich także określić, ile wirtualnych punktów ma kosztować używanie takiej maszyny w ciagu każdej godziny. Aby dodać nowy szablon, klikamy w ostatnia z zakładek - Templates i poniżej listy wybieramy guzik Create new template. Ponieważ nasza chmura jest tworzona na sprzęcie, który ma tylko 1 rdzeń i 2GB pamięci RAM, należy tam wpisać wartości nie większe niż 1 rdzeń i 512MB pamięci RAM. 6.4 Dodanie puli adresów IP dla użytkowników Ostatnim krokiem, jaki należy wykonać w panelu administratora Cluster Manager, jest dodanie puli adresów IP. Aby to zrobić, wybieramy zakładkę Networks i pozycję Available pools. Pula adresów to zakres adresów IP, które będa przydzielane dla wirtualnych maszyn podczas ich uruchamiania. Po kliknięciu przycisku Add pool w formularzu, należy wpisać wartości: Pool address - 192.168.1.0 Pool mask - 24 7
Przy wpisywaniu innych wartości należy mieć na uwadze to, aby sieć nie kolidowała z adresacja maszyn, na których pracujemy. Może to spowodować odcięcie maszyny od internetu! 7 Dodanie i konfiguracja Noda Nasza chmura jest już prawie gotowa. Brakuje w niej jedynie komputerów, na których mogłyby być uruchamiane maszyny użytkowników. W tym celu należy zalogować się ponownie na maszynę z zainstalowanymi usługami i wpisać w konsoli następujace polecenia: cc1_cm_setup_node install qemu+ssh://cc1@[adres IP Noda]/system W miejsce [adres IP Noda] należy podać adres drugiej, nie wykorzystywanej jeszcze przez nas maszyny. Spowoduje to pobranie i zainstalowanie narzędzi niezbędnych do sprawnego działania wirtualizatora. Kolejnym krokiem jest skonfigurowanie takiego Noda do działania z nasza chmura i dodanie go do Cluster Manager a: cc1_cm_setup_node configure qemu+ssh://cc1@[adres IP Noda]/system eth0 cc1_cm_setup_node add qemu+ssh://cc1@[adres IP Noda]/system 1 1000 3000 eth0 to interfejs sieciowy, który będzie używany do komunikacji z klastrem, natomiast liczby 1, 1000, 3000, to kolejno: 1 - liczba rdzeni procesora, jakie dany Node może przeznaczyć (maksymalnie) dla wirtualnych maszyn. Nie zaleca się podawania większej liczby niż liczba fizycznych rdzeni. 1000 - maksymalna ilość pamięci RAM przeznaczonej dla wirtualnych maszyn. 3000 - maksymalna ilość przestrzeni dyskowej na Nodzie dla obrazów dysków wirtualnych maszyn. W tym wypadku jest to 2GB. Jeżeli powyższe polecenia nie zwróciły błedów, to Node powinien być dodany i gotowy do działania. 7.1 Restart usługi CM Aby wszystko zaczęło działać, należy zrestartować Cluster Manager poleceniem: /etc/init.d/cc1-cm restart Spowoduje to zamontowanie nowej macierzy na Nodach i w Cluster Manager oraz przeprowadzenie automatycznego testu struktury naszego mini-klastra. 8 Uruchomienie wirtualnej maszyny Teoretycznie mamy już wszystko, co jest niezbędne do uruchomienia wirtualnej maszyny. W praktyce nie mamy jeszcze żadnego dysku dla niej. Dodanie go do chmury pozostawiam jako proste (mam nadzieję :) ćwiczenie. Z powodu ograniczonej ilości zasobów, jakie sa dostępne w zainstalowanej w ten sposób chmurze, polecam obraz Voyage Linux. Link do obrazu tej dystrybucji możemy znaleźć tutaj: http://linux.voyage.hk/download Po pobraniu go, pozostaje nam tylko wyklikać stworzenie nowej wirtualnej maszyny i zalogować się na nia poprzez VNC. 8
9 Co dalej? Prywatna chmura obliczeniowa, która właśnie stworzyłeś/aś, działa w wirtualnym środowisku. Z tego względu jej możliwości sa nieco ograniczone. Jeśli chciał(a)byś przetestować ja na rzeczywistym sprzęcie, to bez problemu uda Ci się uruchomić w niej także: Dyski zewnętrzne - dyski wirtualnych maszyn moga być małe, istnieje jednak możliwość podłaczania do maszyn dodatkowych dużych dysków. Nie sa one usuwane razem z dyskami wirtualnych maszyn, podczas wyłaczania maszyny. Obrazy publiczne i grupowe - istnieje możliwość współdzielenia prywatnych obrazów użytkownika. Kontekstualizacja - to narzędzie umożliwiajace zarzadzanie wirtualnymi maszynami z poziomu interfejsu WWW chmury. Masz dzięki niemu możliwość wgrania swojego klucza SSH lub zmiany hasła dla wybranego konta na maszynie. Farmy obliczeniowe - w kilku kliknięciach możesz przygotować kilka(naście) wirtualnych maszyn połaczonych w jednen, skonfigurowany klaster. Publiczne adresy IP - bez problemu możesz podłaczyć do każdej wirtualnej maszyny w chmurze publiczny adres IP, przez który będzie ona widoczna z zewnatrz. VNC - jeśli maszyna działa w sieci lokalnej, dostęp przez VNC jest znacznie przyjemniejszy. Sieci IP użytkowników - każdy użytkownik dostaje własna pulę adresów IP (sieć), w której działaja jego maszyny. Wiele macierzy - w obrębie jednego klastra możemy dodawać dowolna ilość macierzy dyskowych, co może znacznie poprawić wydajność pracy użytkowników chmury. Skalowalność - możesz w dowolny sposób rozszerzyć swoja chmurę o nowe serwery, klastry, lub poprostu sprawić, aby była bardziej odporna na awarie. i do tego wszystkiego - Open Source! Jeżeli będziesz potrzebował dodania własnej funkcjonalności, to nic nie stoi na przeszkodzie. Z nasza dokumentacja pod ręka powinno to być łatwe. 10 Strona projektu cc1.ifj.edu.pl 9