Rozproszone systemy operacyjne - ćwiczenia/laboratoria

Termin zajęć:
  • ćwiczenia - środa, 13:45, 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 - 80%
  • Obecności - 20%
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
  • zaimplementować funkcjonalności określone na ćwiczeniach
Projekt 2 (uwaga temat może się zmienić):
  • 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.2014)
    Przygotowanie przestrzeni pod maszyny wirtualne.
  • Zajęcia 2 - (05.03.2014)
    Instalacja maszyn wirtualnych.
    Zainstaluj 3 maszyny wirtualne według slajdów. Nazwij maszyny: rso-srv1, rso-srv2, rso-srv3.
  • Zajęcia 3 - (12.03.2014)
    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 - (19.03.2014)
    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 - (26.03.2014)
    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 - (02.04.2014)
    Serwer Redis
    Zadaine: Inne ciekawe implementacje load-balancing/failover:
  • Zajęcia - (09.04.2014)
    Festiwal Nauki i Sztuki.
  • Zajęcia 7 (16.04.2014)
    Sprawdzenie poprawności konfiguracji klastrów oraz własnych implementacji sesji. Wytyczne dla 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, 0pkt gdy sesja nie jest sesją)
    • 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)
    • Wykonany przez użytkownika wpis zanim pojawi się na tablicy powinien trafić do kolejki (w rabbitmq) do zaakceptowania przez administratora oraz do drugiej kolejki, w której wpis zostanie przetworzony pod kątem zawierania słów "RSO2014". Wpis po zaakceptowaniu przez administratora trafia do bazy i jest wyświetlany na tablicy. W przypadku odrzucenia jest zapisywany jako odrzucony wpis (do późniejszego przejrzenia). Jeśli wpis zawierał słowa RSO2014 aplikacja poinformuje o tym fakcie wysyłając email na adres studenta. (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 (15pkt), 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)
    Uwaga:
    Przyniesienie działającego kodu nie gwarantuje otrzymania punktów. Do każdego zadania prowadzący będzie zadawał pytania związane z zagadanieniem i dopiero w przyapdku poprawnej odpowiedzi na pytanie prowadzący przyzna punkty.
  • Zajęcia 8 (30.04.2014)
    Instalacja maszyn wirtualnych i środowisk deweloperskich.
  • Zajęcia 9 (07.05.2014)
    Aplikacje działające w cloud.
  • Zajęcia 10 (14.05.2014)
    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 (21.05.2014)
    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 (28.05.2014)
    GlusterFS

    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 (04.06.2014)
    Przegląd prezentacji i projektów.
  • Zajęcia 14 (11.06.2013)
    Prezentacje studentów.
  • Zajęcia 15 (18.06.2013)
    Zaliczenie projektu nr 2.