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).
Schemat systemu CC1 przedstawiony jest na rysunku Schemat systemu CC1.
System składa się z kilku współdziałających ze sobą części:
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.
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.
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.
Do zainstalowania systemu potrzebne są następujące elementy:
Obecnie automatyczna instalacja jest dostępna dla systemów Debian i Ubuntu. Pakiety systemu CC1 znajdują się w dedykowanym repozytorium.
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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 Formularz dodawania węzła.. 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.
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/<moduł>/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.
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.