Instalacja systemu CC1 ====================== Wprowadzenie ------------ System CC1 wyposażony został w prostą zautomatyzowaną procedurę instalacji. W ten sposób przekształcenie klasycznie wykorzystywanej infrastruktury komputerowej w prywatną chmurę obliczeniową o wielokrotnie wyższej efektywności może być przeprowadzony szybko i bez konieczności zgłębiania detali techniki Cloud Computing. Obecna automatyczna procedura instalacji przygotowana została dla systemów Linux, Debian oraz Ubuntu, za pomocą standardowego mechanizmu pakietów instalacyjnych. W przyszłości planowane jest przygotowanie automatycznej instalacji dla systemów bazujących na pakietach RPM. Warto zwrócić uwagę na dowolność wyboru systemu operacyjnego do obsługi fizycznego sprzętu, gdyż jest on niewidoczny dla użytkowników chmury obliczeniowej. Zalecane jest użycie systemu Debian 7 *Wheezy* (obecnie w koncowej fazie *testing* a wydanie stabilne spodziewane w pierwszym kwartale 2013). Minimalna wersja systemu to Debian 6 *Squeeze* lub jego odpowiednik z Pythonem 2.7. Do wirtualizacji używane jest środowisko KVM (Kernel-based Virtual Machine). Struktura systemu ++++++++++++++++++ Schemat systemu CC1 przedstawiony jest na rysunku :ref:`fig_cc1diagram`. .. _fig_cc1diagram: .. figure:: figs/cc1diagram_pl.png :width: 800 px :scale: 70 % :align: center :alt: Schemat systemu CC1 Schemat systemu CC1 System składa się z kilku współdziałających ze sobą części: #. Cloud Manager (CLM) - globalny kontroler chmury. #. Cluster Manager (CM) - kontroler poszczególnych klastrów obliczeniowych o rozproszonej lokalizacji. #. Resource Manager (RM) - kontroler zasobów dla każdego klastra obliczeniowego. #. Interfejs WWW (WI) - intuicyjny interfejs z modułem dostępu dla użytkowników i modułem do administracji. #. DB - baza danych. Każdemu elementowi odpowiada proces sterujący. Procesy te komunikują się między sobą poprzez protokoły sieciowe. Z tego względu można wyróżnić dwa główne typy instalacji. * Typ I - wszystkie procesy kontrolne uruchomione na jednym serwerze. * Typ II - rozmaite warianty układu procesów na wielu serwerach. W tym drugim przypadku szczególnie interesującym może być układ z dedykowanym serwerem dla interfejsu WI z przypisanym publicznym adresem IP i ewentualnie dedykowanym serwerem bazodanowym. Jedną z technicznych realizacji do rozważenia jest uruchamianie procesów kontrolnych na wirtualnych serwerach. Wtedy na jednym fizycznym serwerze można uruchomić kilka wirtualnych serwerów dla poszczególnych procesów. Wybór typu instalacji ++++++++++++++++++++++ W instalacjach o wielkości do kilku tysięcy rdzeni w jednostkach roboczych najbardziej odpowiedni jest podstawowy tryb instalacji (typ I) ze wszystkimi procesami (CLM, CM, RM, WI, DB) uruchamianymi na jednym odpowiednio wydajnym serwerze. Szybkość działania systemu zależy od parametrów podstawowych elementów infrastruktury: macierzy dysków, przepustowości sieci oraz wydajności jednostek roboczych. Procesy sterujące systemu CC1 nie powinny wprowadzać istotnych ograniczeń nawet dla stosunkowo dużych instalacji. Wymagania +++++++++ Do zainstalowania systemu potrzebne są następujące elementy: * **serwer kontrolny** - zalecany jest wielordzeniowy serwer. Moc serwera powinna być dobrana zgodnie z przewidywaną liczbą użytkowników. Typowy czterordzeniowy serwer posiadający kilka GB pamięci RAM jest w stanie obsłużyć do kilkuset zarejestrowanych użytkowników. * **węzły robocze** - wymagany jest co najmniej jeden węzeł roboczy. Węzły robocze powinny być wyposażone w dysk lokalny o wielkości zależnej od liczby maszyn wirtualnych jednocześnie uruchamianych na danym węźle. Przed uruchomieniem obraz maszyny wirtualnej kopiowany jest na lokalny dysk węzła roboczego. Aby zapewnić dobrą funkcjonalność należy stosować możliwie minimalne rozmiary obrazów VM wystarczające do poprawnego funkcjonowania samego systemu operacyjnego, gdyż dodatkowe dane można umieścić na wirtualnych dysków zewnętrznych. W przypadku systemów linux rozmiar ten nie przekracza 10 GB. Dla dziesięciu VM uruchomionych jednocześnie na danym wężle rozmiar lokalnej przestrzeni dyskowej węzła dedykowanej systemowi CC1 powinien wynosić co najmniej 100 GB. * **macierz dysków** o pojemności odpowiedniej do składowania obrazów maszyn wirtualnych oraz wirtualnych dysków z danymi. Obecnie automatyczna instalacja jest dostępna dla systemów Debian i Ubuntu. Pakiety systemu CC1 znajdują się w dedykowanym repozytorium. Automatyczna instalacja - Typ I ------------------------------- Pakiety repozytorium CC1 przygotowane są do instalacji typu I. Zbiory konfiguracyjne poszczególnych procesów kontrolnych zawierają wpisy dotyczące komunikacji sieciowej z innymi procesami przy założeniu, że wszystkie procesy działają w obrębie jednego serwera (wpisy localhost lub 127.0.0.1). Przed przystąpieniem do instalacji należy: * zainstalować czysty systemem Debian na serwerze zarzadzającym i węzłach roboczych. * wybrać hasła dla użytkowników bazy danych: administrator (*root* w przypadku MySQL) i cc1. * wybrać podsieć dla węzłów roboczych (dymyślnie 10.16.2.0/24) * wybrać zakres adresów sieci dla maszyn wirtualnych (10.16.16.0/20) * wybrać adres serwera NTP Instalacja składa się z dwóch części: instalacji serwera zarządzającego i instalacji węzłów roboczych. Po zakonczonej instalacji należy przygotować system do działania zgodnie z opisem w rozdziale `Przygotowanie systemu do działania`_. Instalacja serwera zarządzającego +++++++++++++++++++++++++++++++++ Baza Danych ........... W pierwszym kroku należy zainstalować wybraną bazę danych (zalecany MySQL) oraz sterownik do tej bazy dla Pythona: :: # apt-get install mysql-server mysql-client python-mysqldb Instalator poprosi o ustawienie hasła administratora bazy danych (w przypadku MySQL nazwa administratora to *root*). Tworzymy trzy bazy danych: - CLM, - CM, - CLM_HISTORY (archiwalna baza dla CM) :: # mysql -u root -p Password: mysql> CREATE DATABASE clm CHARACTER SET utf8 COLLATE utf8_bin; mysql> CREATE DATABASE cm CHARACTER SET utf8 COLLATE utf8_bin; mysql> CREATE DATABASE cm_history CHARACTER SET utf8 COLLATE utf8_bin; mysql> GRANT ALL PRIVILEGES ON clm.* TO cc1@localhost IDENTIFIED BY 'cc1_db_password'; mysql> GRANT ALL PRIVILEGES ON cm.* TO cc1@localhost IDENTIFIED BY 'cc1_db_password'; mysql> GRANT ALL PRIVILEGES ON cm_history.* TO cc1@localhost IDENTIFIED BY 'cc1_db_password'; mysql> FLUSH PRIVILEGES; gdzie *cc1_db_password* jest hasłem użytkownika bazodanowego cc1 (haslo to podajemy w komendach MySQL w pojedynczym cudzysłowie. CLM, CM, RM, WI ................ Należy dodać repozytorium z pakietami systemu CC1 do pliku ``/etc/apt/sources.list``: :: deb http://cc1repo.ifj.edu.pl/stable/ wheezy main .. WARNING:: W przypadku aktualizacji systemu koniecznie należy odinstalować poprzednie pakiety systemu i usunąć pozostałe po nich pliki z ``/opt``. Podczas działania Python tworzy pliki binarne, które mogą się nie zaktualizować po reinstalacji. Instalujemy wybrane składniki systemu: * Cloud Manager: :: # apt-get install cc1-system-clm-vX.X * Cluster Manager and Resource Manager: :: # apt-get install cc1-system-cm-vX.X cc1-system-rm-vX.X * Web Interface: :: # apt-get install cc1-system-wi-vX.X gdzie vX.X oznacza odpowiednią wersję systemu. Podczas konfigurowania pakietów instalator poprosi o podanie danych do połączenia z bazą danych tzw. *connection string*. W przypadku MySQL prawidłowy format to :: mysql://cc1:db_cc1_password@localhost/db_name?charset=utf8&use_unicode=0 gdzie *db_cc1_password* jest hasłem użytkownika bazodanowego cc1 a pod *db_name* należy podstawić *clm* w przypadku instalacji CLM lub *cm* i *cm_history* podczas instalacji CM. Należy wygenerować klucz RSA dla uzytkownika cc1 komendą :: ssh-keygen Zawartość klucza publicznego ``~/.ssh/id_rsa.pub`` nalezy wpisac w oznaczone miejsce opatrzone odpowiednim komentarzem w pliku konfiguracyjnym ``/etc/cc1/conf/node.py`` opisanym w rozdziale `Instalacja węzła roboczego`_. Aby zapewnic komunikację pomiędzy procesem CM i maszynami wirtualnymi (wymagane do poprawnego działania kontekstualizacji) należy zainstalować pakiet QUAGGA: :: apt-get install quagga Konfigurację pakietu należy przeprowadzić analogicznie do konfiguracji dla węzłów roboczych zgodnie z opisem w rodziale `Instalacja węzła roboczego`_. Można skopiować zbiory konfiguracyjne wygenerowane automatycznie przy instalacji węzła roboczego ``/etc/quagga/ospfd.conf`` i ``/etc/quagga/zebra.conf`` i ponownie uruchomić procesy pakietu QUAGGA (*servis quagga restart*). Dedykowany użytkownik *cc1* tworzony jest automatycznie w trakcie instalacji paczek z domyślnym hasłem. Ze względów bezpieczeństwa hasło uzytkownika cc1 (domyślne 'cc1'- takie jak nazwa uzytkownika) zarówno na węzłach zarządzających jak i na węzłach roboczych powinno być zmienione. Instalacja węzła roboczego ++++++++++++++++++++++++++ Zainstalować na węzle czysty system operacyjny Debian w wersji serwer. Procedura przygotowania wezła sprowadza się do instalacji jednej paczki wraz z jej zależnościami. Instalacja paczki rozbita jest na dwa kroki. W pierszym kroku komenda: :: apt-get install cc1-node-conf-vX.X instaluje wymagane zależności i wgrywa zbiór konfiguracyjny ``/etc/cc1/conf/node.py``, który należy wyedytować zgodnie z opisem znajdującym sie wewnątrz zbioru. W szczególności wpisać publiczną część klucza RSA w odpowiednie miejsce zbioru ``node.py``. Po zakończonej edycji parametr ``CONFIGURED`` należy zmienic z ``False`` na ``True``. Po tej zmianie właściwa konfiguracja węzła do współpracy z systemem CC1 jest wywoływana za pomocą rekonfiguracji paczki komendą: :: dpkg-reconfigure cc1-node-conf-vX.X Tak skonfigurowany węzeł roboczy przygotowany jest to współpracy z serwerem zarządzającym. Automatyczna instalacja - Typ II -------------------------------- Każdy z procesów systemu zarządzania chmurą może być uruchomiony na dedykowanym serwerze. Należy przygotować pięć serwerów z czystym systemem operacyjnym Debian na których uruchomiene zostaną procesy DB, CLM, CM, RM i WI. Jak wspomniano możliwe jest grupowanie części procesów na wspólnym serwerze. Wszystkie zbiory konfiguracyjne ustawione sa do instalacji typu I, dlatego należy wyedytowac odpowiednie pola w zbiorach ``settings.py`` każdego z procesów CLM, CM, RM i WI. W szczególności dotyczy to numerów IP poszczególnych serwerów. W przypadku portów TCP można zachować domyślne ustawienia: :WI: 80 :EC2: 443 :CLM: 8000 :CM: 8001 :CM-ctx: 8002 :CM-rmi: 8003 :RM: 8005 :Kontekstualizacja na VM: 8005 Instalacja poszczególnych elementów na osobnych serwerach przeprowadzana jest za pomocą tych samych komend jak w przypadku instalacji typu I na pojedynczym serwerze. Zdefiniowane zależności pakietów cc1 wywołują instalację wymaganych pakietów zewnętrznych na każdym serwerze z osobna. Przed przystapieniem do instalowania paczek cc1 nalezy wybrać numery IP dla poszczególnych serwerów zarządzjących. Wszystkie numery IP mogą być numerami prywatnymi. Jedynie WI może posiadac dodatkowy publiczny numer IP jeżli serwer WI ma być ogólnie dostępny. Symbolicznie numery odpowiednich serwerów oznaczone beda jako IP_WI, IP_CLM, IP_CM, IP_RM i IP_DB. Należy zainstalować kolejno CLM, CM i RM oraz WI na odpowiednich serwerach. Sewer DB ++++++++ Pierwszym krokiem jest instalacja bazy danych na serwerze IP_DB. :: apt-get install mysql-server mysql-client python-mysqldb :: # mysql -u root -p Password: mysql> CREATE DATABASE clm CHARACTER SET utf8 COLLATE utf8_bin; mysql> CREATE DATABASE cm CHARACTER SET utf8 COLLATE utf8_bin; mysql> CREATE DATABASE cm_history CHARACTER SET utf8 COLLATE utf8_bin; mysql> GRANT ALL PRIVILEGES ON clm.* TO cc1@IP_CLM IDENTIFIED BY 'cc1_db_password'; mysql> GRANT ALL PRIVILEGES ON cm.* TO cc1@IP_CM IDENTIFIED BY 'cc1_db_password'; mysql> GRANT ALL PRIVILEGES ON cm_history.* TO cc1@IP_CM IDENTIFIED BY 'cc1_db_password'; mysql> FLUSH PRIVILEGES; Należy zauważyć, ze w miejsce *localhost* zostały wpisane numery IP odpowiednich serwerów IP_CLM i IP_CM. Serwer CLM ++++++++++ Zainstalować pakiet CLM wraz ze wszystkimi niezbędnymi składnikami :: apt-get install cc1-system-clm-vX.X podając ciag znaków do połaczenia z bazą danych CLM :: mysql://cc1:db_cc1_password@IP_DB/CLM?charset=utf8&use_unicode=0 gdzie IP_DB oznacza IP sewera DB. W zbiorze ``/etc/cc1/clm/settings.py`` zmodyfikować odpowiednie pola. Serwer CM +++++++++ Zainstalować pakiet CM wraz ze wszystkimi niezbędnymi składnikami :: apt-get install cc1-system-cm-vX.X Podając ciag znaków do połaczenia z bazami danych CM i CM_HISTORY :: mysql://cc1:db_cc1_password@IP_DB/CM?charset=utf8&use_unicode=0 mysql://cc1:db_cc1_password@IP_DB/CM_HISTORY?charset=utf8&use_unicode=0 W zbiorze ``/etc/cc1/cm/settings.py`` zmodyfikować odpowiednie pola. Serwer RM +++++++++ Zainstalować pakiet RM wraz ze wszystkimi niezbędnymi składnikami :: apt-get install cc1-system-rm-vX.X W zbiorze ``/etc/cc1/rm/settings.py`` zmodyfikować odpowiednie pola. Serwer WI +++++++++ Zainstalować pakiet RM wraz ze wszystkimi niezbędnymi składnikami :: apt-get install cc1-system-wi-vX.X W zbiorze ``/etc/cc1/wi/settings.py`` zmodyfikować odpowiednie pola. Przygotowanie systemu do działania ----------------------------------- Przed oddaniem systemu użytkownikom należy wykonać kilka operacji po zalogowaniu na konto administratora systemu. Domyślnym administratorem jest użytkownik *cc1* który tworzony jest w trakcie procesu instalacji z domyślnym hasłem *cc1*. Hasło to należy zmienić po pierwszym zalogowaniu się do systemu. * wejść do panelu administratora CLM interfejsu Web "https://*adres_wi*/clm_admin" * **zarejestrować CM** - dodać CM za pomocą przycisku **Dodaj nowy CM**. Dla CM podajemy jego nazwę, adress IP, port do komunikacji (ten sam który został wyspecyfikowany w ``/etc/cc1/cm/settings.py``) oraz hasło dla administratora. * wejść do panelu administratora CM interfejsu Web (https://*adres_wi*/cm_admin) * **zdefiniować szblony maszyn wirtualnych** - przejść do panelu *Szablony*, wybrać przycisk *Utwórz szablon* i wypełnić odpowiednie pola formularza. Sugerowane są nazwy zawierajace informacje o liczbie rdzeni i pamieci RAM takie jak *1 CPU 2 GB RAM*. * **zdefiniować zakres prywatnych numerów IP maszyn wirtualnych** - przejsć do panelu *Sieci->Dostepne pule* i dodać sieć dla maszyn wirtualnych. Pula tych adresów musi odpowiadać definicji w zbiorze konfiguracyjnym pakietu QUAGGA. * **dodać pulę publicznych adresów IP** - przejsć do panelu *Sieci->Publiczne adresy IP* i skorzystać z przycisku *Dodaj publiczny adres IP*. * **dodać macierz dysków** - przejść do panelu *Sprzęt->Macierze*, wybrać przycisk *Dodaj macierz* widoczny w dolnej części panelu i wypełnić formularz. Podać adres IP macierzy dysków oraz katalog pod jakim przestrzeń jest udostępniona poprzez NFS. * **dodać węzły robocze** - przejść do panelu *Sprzęt->Węzły*, wybrać przycisk *Dodaj węzeł* widoczny w dolnej części panelu i wypełnić formularz. Typowe parametry pokazane są na rysunku :ref:`fig_addnode`. Czynność powtórzyć dla każdego dodawanego węzła. * **zamontować macierz dysków** - przejść do panelu *Sprzęt->Macierze** i zamontować macierz na węzłach i na RM za pomocą akcji *Podepnij* i *Podepnij RM* * **wgrać publiczne obrazy** - należy przygotować i wgrać publiczne obrazy dla użytkowników. Publiczne obrazy powinny mieć zainstalowany pakiet kontekstualizacji. Rozmiar obrazów nie powinien przekraczać 10 GB. .. _fig_addnode: .. figure:: figs/addnode_pl.png :width: 800 px :scale: 50 % :align: center :alt: Formularz dodawania węzła. Formularz dodawania węzła. Aktualizacja systemu -------------------- Do danej wersji systemu dostarczane są aktualizacje celem wprowadzenia dodatkowych funkcjonalności lub poprawek zauważonych błędów. Aktualizację można przeprowadzic bez konieczności zatrzymania działajacych maszyn VM uzytkowników. Należy jednak zablokowac dostep użytkowników do systemu i zaczekać na ukończenie wszystkich krytycznych operacji takich jaki kopiowanie obrazów VM pomiędzy macierzą dysków i lokalnymi dyskami węzłów roboczych. Aktualizacja systemu przeprowadzana jest za pomocą standardowych komend: :: apt-get update apt-get install cc1-system-clm-vX.X apt-get install cc1-system-cm-vX.X apt-get install cc1-system-rm-vX.X apt-get install cc1-system-wi-vX.X gdzie vX.X oznacza aktualnia wersje systemu. Pliki konfiguracyjne ``settings.py`` w katalogach /etc/cc1 nie sa modyfikowane. Jeżeli przybyły nowe pola do pliku konfiguracyjnego instalator poinformuje o tym i zapisze listę nowych pól w pliku ``/etc/cc1//changes.txt``. Administrator powinien uaktualnić zbiory ``settings.py`` zgodnie z opisem nowych pól. W ramach zależności pakiety instalują także skrypty do tworzenia i migrowania bazy danych całego systemu. W przypadku zmian struktury baz danych w trakcie procesu aktualizacji nastąpi modyfikacja tabel w bazach danych. Instalacja nowej wersji systemu ------------------------------- Zalecane jest wykonanie kopii zapasowej serwerów zarządzajacych, bazy danych orazzbiorów użytkowników na macierzy dyskowej. Kopie zapasowe należy wykonywać na systemie wolnym od krytycznych operacji takich jak uruchamianie nowych VM. W tym celu należy zablokować dostęp do systemu na odpowiednio długi czas. Tak jak w przypadku aktualizacji nie ma konieczności zatrzymania działajacych maszyn użytkowników. Instalacja nowej wersji systemu przebiega w sposób analogiczny do aktualizacji opisanej w rozdziale `Aktualizacja systemu`_ z ta różnicą, że konieczne jest odinstalowanie starej wersji: :: apt-get remove cc1-system-clm-vX.X apt-get remove cc1-system-cm-vX.X apt-get remove cc1-system-rm-vX.X apt-get remove cc1-system-wi-vX.X Nie należy usuwać systemowego pakietu MySQL. Po odinstalowaniu starej wersji można wykonać kroki takie jak dla aktualizacji systemu właczając modyfikacje zbiorów ``settings.py`` jeżeli wprowadzone zostały zmiany w nowej wersji.