laboratorium 6

Transkrypt

laboratorium 6
Katedra Architektury Systemów Komputerowych
Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej
dr inż. Paweł Czarnul
[email protected]
Architektury usług internetowych
laboratorium nr 6
Publikacja i integracja usług w scenariusze w systemie BeesyCluster
Wprowadzenie
Celem niniejszego laboratorium jest prezentacja i wykorzystanie systemu BeesyCluster do
publikacji aplikacji linuksowych jako usług oraz scalania usług w rozproszone scenariusze a
następnie ich wykonanie.
BeesyCluster jest portalem dostępowym do sieci klastrów/superkomputerów/komputerów PC.
Dzięki wirtualnemu kontu w systemie, użytkownik uzyskuje dostęp do wszystkich swoich kont
fizycznych na poszczególnych komputerach. BeesyCluster udostępnia swoje usługi poprzez
interfejs WWW, jak również Web Services stanowiąc idealne rozwiązanie dla użytkowników
korzystających z urządzeń przenośnych.
Funkcjonalność systemu BeesyCluster
BeesyCluster udostępnia m.in. następujące funkcje zarejestrowanym użytkownikom (poprzez
interfejs WWW oraz, w ograniczonym zakresie, poprzez interfejs Web Services):
•
•
•
•
zdalne zarządzanie kontami fizycznymi na komputerach poprzez interfejs WWW, w
szczególności:
• kopiowanie plików z/na lokalny komputer z klastra/superkomputera/komputera PC,
pomiędzy klastrami/superkomputerami/komputerami PC, tworzenie, edycję, podgląd
plików, kompresję, dekompresję.
• wykonywanie zadań:
• poprzez systemy kolejkowe - zadanie jest przedłożone do kolejki zadań do
wykonania, użytkownik może sprawdzić status zadania oraz jego wyniki
• interaktywnie - standardowe wyjście pokazane jest w nowym oknie
przeglądarki
publikacja usług - użytkownik może opublikować usługi (aplikacje - zarówno do
zakolejkowania jak i interaktywnego uruchomienia jak również pliki do wglądu) dla innych
użytkowników systemu BeesyCluster. Właściciel udostępnianego zasobu może zdefiniować
politykę dostępu oraz wykorzystania zasobu.
uruchamianie usług opublikowanych przez innych użytkowników - zadania zostają
uruchomione na koncie użytkownika, który udostępnił zadanie. Użytkownik uruchamiający
ma jednak dostęp jedynie do wyników zadania bez dostępu do systemu plików właściciela
aplikacji (chyba że zadanie uruchamiane jest przez właściciela).
delegacja praw - właściciel zasobu może delegować wybrane prawa do danego zasobu
innym użytkownikom i zdefiniować ewentualne prawa dalszych delegacji.
•
•
środowisko pracy grupowej, w którym użytkownicy mogą wysyłać do siebie wiadomości,
definiować zadania, prowadzić interaktywną wymianę komunikatów, rysować projekty na
współdzielonej tablicy itd.
przeglądanie dostępnych zasobów.
•
scalanie usług w rozproszone scenariusze, optymalizacja doboru usług do wykonania
scenariuszy i wykonanie,
•
inne, które nie są przedmiotem niniejszego laboratorium.
Modelowanie scenariusza i wykonanie w środowisku BeesyCluster
W modelu zaimplementowanym w systemie BeesyCluster scenariusz powinien być
zdefiniowany w formie grafu, którego wierzchołki oznaczają podzadania do wykonania zaś
skierowane krawędzie zależności czasowe pomiędzy węzłami (model omawiany na wykładzie). Do
każdego z zadań należy przypisać jedną lub więcej usług, które są w stanie wykonać dane zadanie.
Na przykład do zadania konwersja pliku z formatu tif na jpg możemy przypisać kilka usług, które
wykonują to zadanie w różny sposób z tym samym efektem. Niektóre usługi konwersji mogą być
opublikowane z szybszych serwerów/klastrów (co zapewne będzie skutkowało wyższym kosztem
wywołania takich usług) inne z wolniejszych, ale bardziej przystępnych cenowo. W przypadku gdy
do zadania przypiszemy tylko jedną usługę wówczas zawsze ta usługa będzie wykonywała zadanie.
W przypadku gdy usług będzie więcej wówczas system BeesyCluster dokona wyboru usług do
każdego zadania (do każdego jednej) optymalizując zadane kryteria jakościowe np. minimalizacja
czasu wykonania scenariusza przy założeniu, że maksymalny koszt wybranych usług nie przekracza
zadanego progu. Po wybraniu usług system wykona scenariusz.
Definicja scenariusza obejmuje więc definicję grafu z usługami. Przy usługach należy
zwrócić uwagę na wyjściowe formaty danych. Na przykład przy usłudze przyjmującej pliki
wejściowe w formacie *tif a generującej pliki *jpg, należy określić format danych wyjściowych
jako *jpg. Takie dane wyjściowe będą kopiowane do kolejnych usług jako dane wejściowe. Przy
każdej usłudze można określić czy dane będą przetwarzane w sposób strumieniowy czy nie. Jeśli
nie, wówczas dana usługa rozpocznie wykonywanie dopiero w momencie gdy wszystkie
potencjalne pliki wejściowe zostaną przetworzone przez usługi poprzedzające daną usługę
(zadanie). W przypadku przetwarzania strumieniowego, pliki będą przetwarzane potokowo.
Zakłada się, że dana usługa będzie wywoływana (o ile nie określono inaczej – opcja nie będzie
wykorzystywana podczas laboratorium) wielokrotnie – dla każdego pliku wejściowego osobno.
Nazwa pliku podawana jest automatycznie jako argument. Usługi należy wcześniej opublikować z
aplikacji, do których użytkownik ma dostęp poprzez menedżer plików (jak pokazano na filmie –
patrz niżej). Najłatwiej zdefiniować skrypt, który realizuje pewne zadanie przetwarzając pliki
wejściowe. Dla przykładu następujące skrypty zostały opublikowane jako usługi przetwarzania
obrazów:
1. convert $1 -normalize $1.TIFF
konwersja pliku wejściowego – normalizacja; plikiem wynikowym jest plik z rozszerzeniem
*TIFF – takie też wyjście usługi należy zdefiniować w edytorze
2. convert $1 -resize 600x400 -sharpen 1x1.2 -quality 97% $1.jpg
zmiana rozmiaru pliku wejściowego, wyostrzenie i zapisanie pliku wynikowego jpg z
jakością 97%
jako rozszerzenie pliku wyjściowego danej usługi należy zdefiniować *jpg
Warto zwrócić uwagę na fakt, że użytkownik systemu BeesyCluster może udostępniać własne
usługi innym użytkownikom systemu. Tak udostępnione usługi będą mogły być wykorzystane jako
elementy scenariusza.
Dane wejściowe do scenariusza należy umieścić w wybranym katalogu i następnie zdefiniować ten
katalog w edytorze jak pokazano na filmie. Należy zwrócić uwagę na to, aby ścieżka poprzedzona
była ../../.. a następnie określona przez pełną ścieżkę do katalogu z danymi wejściowymi. Zakłada
się, że katalog wejściowy może zawierać przynajmniej jeden a potencjalnie więcej plików
wejściowych. Na przykład może to być 10 obrazów wejściowych w formacie tif, które mogą być
przetwarzane przez kolejne zadania i usługi realizujące operacje np. normalizację, konwersję tif na
jpg itp. Dla każdego zadania należy określić formaty danych wyjściowych.
Definicja równoległych ścieżek scenariusza pozwala na równoległe przetwarzanie różnych plików
przez równoległe ścieżki.
Po przetworzeniu danych przez scenariusz, system tworzy katalog o nazwie
<id_instancji_scenariusza>-results, w którym powinny znajdować się dane wyjściowe.
Konto w systemie BeesyCluster
Przed zajęciami każdy zakłada indywidualnie konto w systemie BeesyCluster, do którego będzie
przypisane konto systemowe podane przez prowadzącego tj. nazwa serwera/klastra już
zarejestrowanego w systemie BeesyCluster, login oraz hasło. Po założeniu konta w systemie
BeesyCluster można się zalogować i wykonać pozostałe czynności.
Niezbędne lokalizacje
Poniżej podano lokalizacje modułów niezbędnych do wykonania zadania:
1. logowanie
https://lab527.eti.pg.gda.pl:10030/ek/AS_LogIn
2. menedżer plików
https://lab527.eti.pg.gda.pl:10030/ek/FileManager
3. edytor scenariuszy – definiowanie i zapisanie scenariusza, po zdefiniowaniu scenariusza
należy wygenerować ograniczenia na scenariusz (odpowiedni przycisk jak na filmie) i
zapisać scenariusz pod własną nazwą – jest wówczas gotowy do wykonania – panel poniżej.
https://lab527.eti.pg.gda.pl:10030/ek/SIEditor
4. panel z listą scenariuszy do wykonania – uruchamianie scenariusza wykorzystując jeden z
algorytmów optymalizacyjnych – na potrzeby laboratorium sugerowany Uruchom
(dynamiczna pelna optymalizacja) lub Uruchom (optymalizacja przed
wykonaniem)
https://lab527.eti.pg.gda.pl:10030/ek/ServiceIntegration
5. panel z listą uruchomionych instancji scenariuszy
https://lab527.eti.pg.gda.pl:10030/ek/WorkflowInstanceList
Filmy instruktażowe
Poniżej zamieszczono odwołania do filmów pokazujących odpowiednio:
1. tworzenie usługi w systemie BeesyCluster za pomocą menedżera plików
2. tworzenie i zapisywanie scenariusza
3. przeglądanie scenariuszy dostępnych dla użytkownika
Zadanie do wykonania
W ramach laboratorium należy zdefiniować i wykonać własny scenariusz usług realizujący
wybrane złożone zadanie. Należy wykorzystać aplikacje dostępne w systemie Linux jako usługi
realizujące fragmenty danego zadania.
Ze względu na liczbę osób wykonujących zadanie podczas laboratorium należy ograniczyć się do
definicji i wykonania prostych scenariuszy o rozmiarze kilku zadań (usług) i przetwarzania kilku
plików wejściowych. Można ograniczyć się do przypisania jednej usługi do danego zadania.
Proszę pamiętać, że przeciążenie systemu np. czasochłonnymi obliczeniami i/lub danymi
wejściowymi dużych rozmiarów może skutecznie utrudnić pracę całej grupie.
Po wykonaniu scenariusza należy zaprezentować działanie prowadzącemu oraz sporządzić 1
stronicowy raport, który powinien zawierać:
1. imię i nazwisko,
2. login konta w systemie BeesyCluster,
3. nazwa scenariusza,
4. opis scenariusza,
5. zrzut ekranu z edytora ze scenariuszem,
6. opis wyników/wykonania.
Raport należy przesłać do prowadzącego oraz na adres [email protected] z tytułem AUI LAB
6.