Rozproszone systemy operacyjne - ćwiczenia/laboratoria

Termin zajęć:
  • ćwiczenia - poniedziałek, 17:15, A1-22-23
Rodzaj zajęć:
  • ćwiczenia - 30h.
Warunek zaliczenia ćwiczeń:
  • Obecności - maksymalnie 3 niebecności w semestrze.
  • Co najmniej 50% punktów.
Link do wykładu:
Ocena ćwiczenia:
  • Projekty - 75%
  • Obecności - 25%
Dziedziny projektu:
  • rozpraszanie serwisów - Linux
  • Aplikacja Cloud
  • temat trzeci (zostanie ogłoszony później)
Projekt 1:
  • Skonfigurować klaster serwisów WWW działających w trybie Active-Passive
  • Ustawić demon keepalived tak by wykrywał automatycznie nieobecność jednego węzła w sieci
  • Stworzyć stronę utrzymującą sesję zapewnioną przez php
  • Zaimplemenetować własny mechanizm utrzymania sesji w bazie danych
  • Stworzyć replikację bazy danych
  • Zaprezentować działanie z symulowaniem awarii różnych elementów klastra
Projekt 2:
  • napisać aplikację według specyfikacji opisanej na zajęciach
  • projekt ma być oparty o Windows Azure Cloud lub inny zatwierdzony przez prowadzącego zajęcia
  • projekt należy realizować indywidualnie

Plan ćwiczeń

  • Zajęcia 1 - (25.02.2013)
    Przygotowanie przestrzeni pod maszyny wirtualne.
  • Zajęcia 2 - (04.03.2013)
    Instalacja maszyn wirtualnych.
    Zainstaluj 3 maszyny wirtualne według slajdów. Nazwij maszyny: rso-srv1, rso-srv2, rso-srv3.
  • Zajęcia 3 - (11.03.2013)
    Sesje w PHP.
    Instalacja MySQL.
    Mysql w PHP.
    Sesje opisane na php.net
    Instalacja rozproszonego systemu WWW:
    • apt-get install apache2-mpm-prefork
    • apt-get install apache2-prefork-dev
    • apt-get install php5 php5-gd php5-mysql php5-pgsql
    Zadanie:
    • Napisz serwis www w języku php (lub innym zatwierdzonym przez prowadzącego) działający na jednym z serwerów wirtualnych, który będzie utrzymywał sesję użytkownika:
      • w sposób zwykły - przez funkcję session_start() dostępną w języku PHP
      • w bazie danych - zaimplementuj funkcję startuj_sesje(), która utworzy sesję jeśli nie istnieje i zapisze w bazie odebrane od użytkownika dane w $_POST[\'login\'] i $_POST[\'pass\'], a jeśli sesja istnieje to ustawia zmienną $SESJA[\'user\'] i $SESJA[\'haslo\'] z ostatnio zapamiętanej sesji oraz dokona uwierzytelnienia.
  • Zajęcia 4 - (18.03.2013)
    Konfiguracja LVS. Konfiguracja keepalived.
    Zadanie:
    • Zainstaluj na wszystkich maszynach wirtualnych serwer http oraz php
    • Umieść w /var/www na wszystkich serwerach statyczny plik html
    • Zainstaluj klaster aplikacji WWW - LVS, sprawdź czy konfiguacja działa ze statycznymi plikami
    Zadanie - rozszerzenie funkcjonalności utrzymania sesji napisanych na poprzednich zajęciach w PHP:
    • Zainstaluj zaimplementowane na poprzednich zajęciach serwisy www (w php lub innym zatwierdzonym przez prowadzącego języku) na maszynach SW1 i SW2
    • Przetestuj dzialanie serwisu - w jednym i drugim przypadku zakladajac ze jeden wezel sieci padl - symulacja (/etc/init.d/apache stop).
    Zadanie - keepalived:
    • Skonfiguruj serwer keepalived według wytycznych
    • Zmień konfigurację keepalived tak by uważał jeden z srv1/srv2 za działający w zależności od tego czy srv1/srv2 możę się pomyślnie połączyć do mysql (podpowiedź - należy dopisać skrypt php).
  • Zajęcia 5 - (25.03.2013)
    Konfiguracja Failover HA dla mysql.
    Ustawienie replikacji HA w mysql
    Zadanie:
    • ustaw replikacje master-slave dla dwoch serwerow
    • podziel w swojej aplikacji odczyty i zapisy tak by zapisy odwoływały się do serwera master, a odczyty były równoważone przez LVS
    • ustaw w demonie Keepalived automatyczne rozdzielanie zapytań odczytu na oba serwery
    Konfiguracja VRRP.
    Opis protokołu VRRP (RFC 2338)
    Zadanie:
    • zrealizuj konfiguracje według pliku konfiguracyjnego
    • przetestuj działanie na trzeciej maszynie (według opisu na końcu pliku z konfiguracją VRRP
  • Zajęcia 6 - (8.04.2013)
    Serwer Redis
    Zadaine: Inne ciekawe implementacje load-balancing/failover:
  • Zajęcia 7 (15.04.2013)
    Oddawanie projeku 1.
    Wymagania aplikacji:
    • Aplikacja ma obslugiwac logowanie (pierwsze utworzone konto będzie kontem adminstratora).
    • (5pkt)
    • Aplikacja ma obslugiwac edytowanie informacji o profilu osoby która się zalogowała (Imie, Nazwisko, Adres, Miasto,NIP,PESEL) (5pkt)
    • Aplikacja działać niezależnie od serwera WWW obslugujacego obecnie ruch (15pkt - sesja w REDIS, 10pkt - sesja w MySQL)
    • Aplikacja powinna implementować tablicę (analogiczną do facebook), na której każdy użytkownik może coś napisać (w odróżnieniu od facebook jest tylko jedna tablica.(5pkt)
    • Wykoany przez użytkownika wpis zanim pojawi się na tablicy powinien trafić do kolejki (w rabbitmq) do zaakceptowania przez administratora. Po zaakceptowaniu wpis trafia do bazy i jest wyświetlany. W przypadku odrzucenia jest zapisywany jako odrzucony wpis (do późniejszego przejrzenia). (15pkt)
    • Aplikacja powinna korzystać z memcache do wyświetlania zawartości tablicy (15pkt).
    Wymagania klastra:
    • Aplikacja ma działać na dwóch serwerach www, do których połączenie będzie odbywało się przez serwer LVS (10pkt), który będzie posiadał skonfigurowaną usługę Keepalived(10pkt)
    • Każdy serwer www ma korzystać z połączenia z bazą danych Master w zapytaniach zapisu, a w przypadku jego niedzaiłania informować o przerwie serwisowej (10pkt)
    Pytania dodatkowe prowadzącego - 20pkt.
  • Zajęcia 8 (22.04.2013)
    Instalacja maszyn wirtualnych i środowisk deweloperskich.
  • Zajęcia 9 (29.04.2012)
    Aplikacje działające w cloud.
  • Zajęcia 10 (06.05.2013)
    Aplikacje działające w cloud - Web Role. Testowanie aplikacji korzystających z Compute Emulatora i Storage Emulatora.
    Przydatne howto: Dla chętnych: Zadanie:
    • napisz usługę dla Windows Azure, która listuje dostępne pliki w kontenerze Azure Storage o nazwie podanej przez użytkownika
    • napisz usługę dla Windows Azure, która przechowuje i umożliwia modyfikację informacji o użytkownikach (imie, nazwisko, login, haslo, adres, data urodzenia, pesel)
    • napisz usługę dla Windows Azure, która uwierzytelnia użytkownika sprawdzając czy istnieje jego login i hasło w tabeli Azure Storage
  • Zajęcia 11 (13.05.2013)
    Aplikacje działające w cloud - Worker Role.
    • Sprawdzenie zadań z zajęć poprzednich
    Przydatne howto: Dla chętnych: Zadanie:
    • napisz usługę dla Windows Azure, która odbiera od użytkwnika plik z danymi wsadowymi (Web Role), a następnie przekaże te zadania do obliczenia przez aplikację działającą w tle(Worker Role). Każda będzie postaci 3 cyfry, znak "+", 3 cyfry, znak enter, np. "100 + 013\n" (Uwaga: celem jest przetwarzanie w tle, a nie analiza pliku wsadowego i wykonywanie obliczenia. Można zaproponować własne zadanie.),
  • Zajęcia 12 (20.05.2013)
    Omówienie specyfikacji projektów
    Napisz aplikację Web w Windows Azure, której celem jest stworzenie organizatora ToDo. Parametry punktacji:
    • Aplikacja obsługuje zakładanie kont użytkowników oraz logowanie (10 pkt)
    • Aplikacja obsługuje edytowanie informacji o profilu osoby która się zalogowała (Imie, Nazwisko, login, hasło, adres email) (10pkt)
    • Aplikacja działa niezależnie od ilości powołanych instancji WebRole (25pkt - sesja przechowana w Windows Azure)
    • Aplikacja umożliwia dodawanie wpisów ToDo zawierających:
      • Tytuł
      • Opis
      • Data i godzina przypomnienia
      • Data wykonania
      Obowiązkowe - 0pkt.
    • Aplikacja raz dziennie (godzina 00:00) wysyła email użytkownikom informacje z przypomnieniem listy wszystkich zadań z ToDo z ustawionym terminem wykonania na dany dzień. Aplikacja ma sprawdzać co minutę bazę wpisów ToDo. Jeśli użytkownik miał na swoim koncie wpis ToDo z ustawionym przypomnieniem na daną godzinę, wówczas aplikacja ma mu o tym przypomnieć wysyłając email. (25pkt - Worker).
    • Aplikacja umożliwić przeglądanie ToDo w formie kalendarza z możliwością przejrzenia konkretnego dnia (15pkt) i listy bieżącego ToDo, tj. niewykonanych zadańz poprzednich dni i zadań z ustawionym terminem na dzisiaj (10pkt)
    • Dodawanie do wpisu ToDo obrazka (5pkt), który zostanie przekonwertowany do 2 rozmiarów (5pkt)
    • Aplikacja umożliwia ustawienie zadania jako wykonane i nie przypomina już o nim i zadanie nie pojawia się w liście bieżącego ToDo. (10pkt)
  • Zajęcia 13 (27.05.2013)
    Przegląd prezentacji i projektów.
  • Zajęcia 14 (03.06.2013)
    Prezentacje studentów.
  • Zajęcia 15 (10.06.2013)
    Zaliczenie projektu nr 2.
  • Zajęcia 16 (17.06.2013)
    Poprawki do projektów + wpisanie ocen. Spotkanie w czasie sesji. Poniedziałek, 17:15.

17.06

  1. 15:30 - Marcin Skibicki
  2. 15:45 - Arkadiusz Talarczyk
  3. 16:00 - Szymon Sadło
  4. 16:15 - Damian Józefowski
  5. 16:30 - Grzegorz Bednarski
  6. 16:45 - Łukasz Brajer
  7. 17:00 - Michał Gaik
  8. 17:15 - Damian Grabowski
  9. 17:30 - Daria Grams
  10. 17:45 - Szymon Grzegorek
  11. 18:00 - Paweł Małecki
  12. 18:15 - Kamil Kuczkowiak
  13. 18:30 - Mateusz Kaźmierczak
  14. 18:45 - Kamil Kubiak
  15. 19:00 - Maciej Lewandowski
  16. 19:15 - Maciej Król
  17. 19:30 - Konrad Siamro
  18. 19:45 - Piotr Szczepaniak
  19. 20:00 -
  20. 20:15 -
  21. 20:30 -
  22. 20:45 -

18.06

  1. 08:30 - Tomasz Twardowski
  2. 08:45 - Adrian Warkocz
  3. 09:00 - Aleksandra Wichert
  4. 09:15 - Marcin Żurowski
  5. 09:30 - Krzysztof Narczyński
  6. 09:45 - Michał Szczudło
  7. 10:00 -
  8. 10:15 -

02.07 (Termin poprawkowy - zaliczony jeszcze jako pierwsze podejście, A1-22,23):

  1. 13:00 - Daria Grams
  2. 13:15 - Adrian Warkocz
  3. 13:30 - Szymon Grzegorek
  4. 13:45 - Kamil Kuczkowiak

04.07 (Termin poprawkowy - zaliczony jeszcze jako pierwsze podejście, A1-22,23):

  1. 10:45 - Mateusz Kaźmierczak
  2. 11:00 - Paweł Małecki
  3. 11:15 - Marcin Skibicki
  4. 11:30 - Piotr Szczepaniak
  5. 11:45 - Michał Szczudło
  6. 12:00 - Tomasz Twardowski
  7. 12:15 - Konrad Siamro