Difference between revisions of "Udvidet linux - webserver"

From HoerupWiki
Jump to: navigation, search
Line 44: Line 44:
 
De fleste reverse proxyer understøtter flere metoder til load balancing, når den skal finde ud af hvilen server der skal håndtere en given http request, f.eks. round-robin, by-source-ip, eller least-used.  
 
De fleste reverse proxyer understøtter flere metoder til load balancing, når den skal finde ud af hvilen server der skal håndtere en given http request, f.eks. round-robin, by-source-ip, eller least-used.  
 
* Undersøg hvilke metoder din reverse proxy understøtter.
 
* Undersøg hvilke metoder din reverse proxy understøtter.
<i>Hver opmærksom på at hvis din applikation bruger logins eller sessions på anden vis, skal en bruger helst ramme samme server hver gang. (dog er det undtaget hvis at du har sat clustered sessions op i din applikation)</li>  
+
<i>Hver opmærksom på at hvis din applikation bruger logins eller sessions på anden vis, skal en bruger helst ramme samme server hver gang. (dog er det undtaget hvis at du har sat clustered sessions op i din applikation)</i>  
 
* Undersøg om du kan lave sticky-sessions eller om du vil lave balance by ip
 
* Undersøg om du kan lave sticky-sessions eller om du vil lave balance by ip

Revision as of 13:02, 9 August 2018

Forskellige opgaver vedr linux - skal ses som en udvidet af de mere trivielle skole-linux opg.

Slut resultatet når alle øvelser er lavet, skulle gerne være et fuldt Highly-Available web cluster udelukkende med opensource komponenter.

Requirements:

  • Basal linux viden: skal kunne installere linux og navigere rundt, edit config filer mm
  • Mulighed for at deploy'e 5-6 små linux'er á 1 cpu 512mb ram -eller have en håndfuld raspberry Pi's ved hånden.
    • I øvelsen bruger vi 1 rolle pr node - for at holde det simpelt og adskilt.

Basic webserver

  • Find en web application du vil hoste i dit cluster.
    • Skal være en applikation der bruger data fra en database
    • Det er valgfrit hvad man vælger (kan være en php app på apache med mysql, ruby app på nginx med redis, java på tomcat med postgresql, nodejs med mongodb)
    • Gå evt uden for comfort-zone og vælg en sprog/webserver/db som du ikke har prøvet før
  • Installer 1 webserver node (web01) og 1 database node(db01)
    • installer webserver og database server softwaren
    • deploy din web application på web01, sæt den til at bruge db01
    • sikre web applikationen virker efter hensigten

High Availability WebServer

Du begynder at få traffik på dit site. Ved spids-belastmnnger kniber det for web01 at følge med - desuden er du nervøs hvor hvad der sker hvis web01 crasher - derfor vil du gerne have en webserver mere.

  • Installer endnu en webserver node (web02) eller lav en clon af web01 (husk at rette hostname, ip osv)
    • Sikre at applicationen virker som forventet når du tilgår web02 i browseren


Du skal bruge en loadbalancer foran dine webservere til at dirigere trafikken. Sådan en node kaldes også en reverse proxy

Der er mange forskellige pakker der kan bruges her. Se f.eks. haproxy , apache mod_proxy , [1]

  • Installer en node til din loadbalancer (lb01)
  • installer en proxy/loadbalancer efter eget valg og sæt den til at kunne forwarde trafikken til både web01 og web02.
    • For variationens skyld så lad være med at bruge samme server som på web01/web02, så du ikke bruger f.eks. nginx til både lb og web
  • du skulle nu kunne tilgå din webapp gennem lb01
  • haproxy har den en indbygget status side, apache_mod proxy kan sættes til at vise status igennem mod_status, og nginx har også en status side
    • Sæt proxy status siden op lb01
  • test nu at din LB kan håndtere at en webserver ikke svarer
    • ved hvert step følg med på status siden
    • stop webserver på web01 og sikre at du stadig kan bruge din app gennem lb01
    • start webserver på web01 og stop den på web02 - sikre at du stadig kan bruge din app gennem lb01
    • start webserver igen på web02

De fleste reverse proxyer understøtter flere metoder til load balancing, når den skal finde ud af hvilen server der skal håndtere en given http request, f.eks. round-robin, by-source-ip, eller least-used.

  • Undersøg hvilke metoder din reverse proxy understøtter.

Hver opmærksom på at hvis din applikation bruger logins eller sessions på anden vis, skal en bruger helst ramme samme server hver gang. (dog er det undtaget hvis at du har sat clustered sessions op i din applikation)

  • Undersøg om du kan lave sticky-sessions eller om du vil lave balance by ip