Home
Dokument_1.
Contents
1. Zeit Knotenanzahl 1000 2000 3000 4000 5000 6000 7000 90 PSA 0 010 0 010 0 011 0 022 0 015 0 012 0 011 100 PSA 0 017 0 052 0 052 0 067 0 065 0 063 0 054 Gesamt 0 104 0 249 0 362 0 716 0 710 0 775 0 936 PSA Prozentsatz der Anfragen die innerhalb einer bestimmten Zeit einzeln bearbeitet wurden Tabelle 5 3 Die Web Service Benchmark bei 5 Clients 1 000 0 900 0 800 0 700 0 600 0 500 N 90 PSA 0 400 100 PSA 0 300 Gesamt 0 200 0 100 0 000 Eg c amp 1000 2000 3000 4000 5000 6000 7000 Knotenanzahl Sekunden Abbildung 5 9 Die Web Service Benchmark bei 5 Clients Nach der Ausf hrung der Benchmarks werden die Ergebnisse ausgewertet siehe Ta belle 5 3 und Abbildung 5 9 PSA gibt den Prozentsatz der Anfragen die innerhalb einer bestimmten Zeit einzeln bearbeitet wurden an So wird z B die Einzelbearbeitungszeit von 0 010 Sekunden bei 90 aller Anfragen bei einem Cluster mit 1000 Knoten nicht berschritten Somit ist es erkennbar dass die Einzelbearbeitungszeit aller Anfragen relativ konstant bleibt Weiterhin ist die Einzelbearbeitungszeit der Anfragen von der Cluster Gr e unabh ngig und bersteigt 0 067 Sekunden nicht Die Gesamtbearbeitungszeit aller Anfragen ist hingegen von der Cluster Gr e direkt linear abh ngig Trotz dieser Abh ngigkeit kann man von einer hohen Performance aus gehen da beim Cluster mit 7000 Kn
2. 3 1 2 Kontroll und Datenstrukturen hnlich wie viele andere Sprachen besitzt Ruby die blichen Kontrollstrukturen wie if while for case u Die Kontrollstrukturen wie if unless while und until k nnen als An weisungsmodifikatoren benutzt werden um die Bedingungsanweisung am Ende einer normalen Anweisung zu setzen Auf das Klammern von logischen Ausdrucken wird in den meisten F llen verzichte D Als vordefinierte Datenstrukturen stehen in Ruby Arrays und Hashes zur Verf gung Die Elemente in einem Array sind geordnet und k nnen nur mit Zahlen indiziert werden Die Elemente in einem Hash sind auch geordnet und k nnen mit beliebigen Objekten indiziert werden Beide Datenstrukturen sind nicht typisiert aber dynamisch wachsend Arrays sind somit effizienter als Hashes bieten aber weniger Flexibilit t 3 1 3 Bl cke und Iterationen Bl cke und Iterationen stellen die entscheidenden Features von Ruby dar Alle nicht trivialen Ruby Programme weisen eine Blockstruktur auf die Bl cke sind durch Zei chensetzung oder durch Schl sselw rter wie do und end getrennt Von besonderer Bedeutung sind die Bl cke in der Verbindung mit Iteratormethoden Wird ein Block mit einer Methode verbunden so kann die Methode den Block beliebig oft aufrufen indem eine yield Anweisung durch den Block ersetzt wird Dieses Vorgehen kann man mit einer zus tzlichen Parameter bergabe vergleichen mit dem Unterschied dass dabei Anweisungen un
3. Antwortzeit2000 RMemchached Get 0 095 0 ls Die Monitoring Daten stehen somit dem Nutzer in weniger als 0 1 Sekunden zur Verf gung Netzwerk ist unbeachtet was 81 mal schneller ist als zuvor Auch bei gr erer Knotenanzahl steigt dieser Wert unwesentlich sodass bei 7000 Knoten nur 0 25 Se kunden gebraucht werden um die Daten aus dem Daten Cache abzurufen Diese L sung hat leider auch viele Nachteile Die Antwortzeit der ersten Anfrage l sst sich nicht reduzieren denn die Daten befinden sich noch nicht in dem Daten Cache und m ssen zuerst berechnet werden Weiterhin f hren viele Webserver Apache Nginx mehrere Prozesse einer Webanwen dung aus um die Anfragen schnell abzuarbeiten Somit wird jeder Prozess einen eige nen Cache besitzen Diese Caches sind redundant und m ssen einzeln gepflegt und aktualisiert werden das ist sehr rechenintensiv Um diese Nachteile zu umgehen soll der Cache aus der Webserver Umgebung in eine andere Schicht ausgelagert werden Die erste M glichkeit stellt den Einsatz eines Proxy Server auf der HTTP Ebene zum Cachen dar Dabei wird durch einen Expires Header die maximale G ltigkeit des Cache angegeben was jedoch einen gro en Nachteil nach sich zieht Die Daten wer den nur in bestimmten Zeitabst nden aktualisiert Damit der Cache m glichst optimal arbeitet m ssen diese Zeitabst nde von mehreren Minuten bis mehreren Stunden be tragen Die zweite M glichkeit ist den Ca
4. http example com sys orders year 2010 e example org order 45 http example org order 45 2 4 2 URI Design Obwohl das URI Design beim Entwurf von RESTful Anwendungen nicht von h chster Bedeutung ist kann es unter anderem sinnvoll sein Uber URI Schemata nachzudenken Elegante und logische URIs erleichtern die Arbeit fur Entwickler und verbessern die Bedienbarkeit f r Endanwender F r URI Entwurf sollte man Substantive und keine Verben verwenden Nicht umsonst werden die RESTful Architekturen als ROA bezeichnet Die Verwendung von Verben deutet meistens auf eine RPC orientierte Anwendung hin Die Verwendung von Hierarchien stellt eine wichtige und nachvollziehbare Regel dar Die hierarchischen Beziehungen sollen sich entsprechend in den URI Pfaden wider spiegeln Dabei soll das Vort uschen einer Hierarchie vermieden und evtl auf Query bzw Matrixparameter ausgewichen werden 77 Anschlie end sollen noch einige URI Grenzf lle betrachtet werden Auf eine Ressource k nnen durchaus mehrere URIs zeigen So k nnen z B die URIs bericht 2004 q3 und bericht 2004q3 auf eine Ressource zeigen Dagegen zeigt jede URI genau auf eine Ressource sonst ware es keine eindeutige Identifikation Die URIs bericht 201 1 und bericht aktuell verweisen andererseits nicht auf die gleiche Ressource sondern nur auf die gleichen Daten Die Idee hinter diesen URIs unterschei det sich stark W hrend die erste URI einen Bericht aus dem Jahre 2
5. vor Die POST Methode l sst sich missbrauchen um beliebige Funktionalit ten anzu sto en Die Funktionalit t wird dabei in den bermittelten Daten codiert was gegen REST Prinzipien versto t Trotzdem bleibt dieser Ansatz in der Praxis oft als letzter Aus weg so z B das Tunneln von beliebigen Operationen die durch andere Methoden nicht bzw nicht mit hnlichem Aufwand zu realisieren sind 92 Genau wie bei der PUT Methode werden beim Anlegen einer neuen Ressource der HTTP Ergebniscode 201 Created oder 202 Accepted zur ckgeliefert In anderen F llen wird der HTTP Ergebniscode 200 OK mit einer Repr sentation oder 204 No Content ohne Repr sentation zur ckgeliefert 2 6 5 Unterst tzung von HTML Formularen H ufig sind die Ressourcen sowohl ber den Webbrowser als auch ber eine Applikation Schnittstelle verf gbar Die HTML Formulare unterst tzen aber nur die Methoden GET und POST nicht aber PUT DELETE HEAD und OPTIONS In der Zukunft k nnen die Methoden PUT und DELETE durch HTML 5 unterst tzt werden das Problem mit HEAD und OPTIONS bleibt anscheinend unver ndert 60 Vgl 53 S 52 53 und 45 S 99 61 Vgl 45 S 99 62 Vgl 53 S 52 53 und 45 S 101 102 63 vgl 32 Kapitel 9 5 POST und Kapitel 10 2 2 201 Created 8 Siehe 2 Supporting PUT and DELETE with HTML FORMS 16 Kapitel 2 REST Architekturstil Da die HTML Formulare die POST Methode unterst tzen kann e
6. 5 4 1 Models Nachfolgend werden nur die Prim r und Listenressourcen Racks und Devices aus dem Monitoring Bereich betrachtet Alle anderen Ressourcen k nnen analog implementiert werden und sind f r die Beurteilung der Qualit ten wie Performance oder Datendurch satz irrelevant MRack Das Model MRack vertritt die Prim r und Listenressource Racks Da Ruby vollst ndig objektorientiert ist stellen alle Datentypen Objekte dar Somit sind die Klassen auch Objekte mit ihren eigenen Attributen und Methoden Diese Eigenschaft wird wie folgt bei der Implementierung eingesetzt e die Attribute Pr fix und Methoden Pr fix self der MRack Klasse beziehen sich auf die Listenressource Racks siehe Zeilen 3 12 in Listing 5 4 e die Attribute und Methoden des MRack Objektes beziehen sich auf die Prim rres source Racks siehe Zeilen 14 22 in Listing 5 4 class MRack Holt alle Racks aus dem Memcached ab def self all json CACHE get racks self end Gibt die Rack Liste im JSON Format zurueck def self to_json attribute json end Holt das Rack mit der ID id aus dem Memcached ab def initialize id json CACHE get racks id end Gibt das Rack im JSON Format zurueck def to_json attribute json end end Listing 5 4 Model MRack gek rzt 0 JO Om P ob NOOR WD Kapitel 5 Entwurf eines RESTful Web Services 51 MDevice hnlich wie das Model MRack vertritt das Model MDevice die Prim r und Liste
7. Ill Abk rzungsverzeichnis BJAX if zip Asynchronous JavaScript and XML APIs a aaa an E Application Programming Interface E WEE Command Line Interface CRUD Create Read Update Delete GSW M Comma Separated Values DB EE 242823 Datenbank DRY Don t repeat yourself EER risus Enhanced Entity Relationship Model ERB erisa siefret Embedded Ruby Galles Graphical User Interface HA auo ibd High Availability Haml HTML Abstraction Markup Language MPO u a High Performance Computing HTML Hypertext Markup Language HERR unen Hypertext Transfer Protocol HTTPS Hypertext Transfer Protocol Secure IPM ane heats Intelligent Platform Management Interface IS rr JavaScript JSON JavaScript Object Notation elle EE ds JavaServer Pages MINES e Kee Model View Controller ORM Object Relational Mapping PDF de Siet er Portable Document Format PDU amara eas cs Power Distribution Unit RAID kueni 4 444 Redundant Array of Independent Disks RDF Resource Description Framework REST Representational State Transfer AFC osados Request for Comments ROA une ran Resource Oriented Architecture POP EE Ruby on Rails RPO aras data Remote Procedure Call RAD uiis Round Robin Database Sass Syntactically Awesome Stylesheets SUD una se Server Load Balancing SNMP Simple Network Management Protocol SOM
8. S 162 22 Kapitel 3 Ruby on Rails Gemfile In dieser Datei wird angegeben welche Abh ngigkeiten bei dem Projekt ben tigt werden README Diese Datei enth lt eine kurze Anleitung mit wichtiger In formation f r Anwender Rakefile Diese Datei sucht und l dt Aufgaben die von der Kom mandozeile ausgef hrt werden k nnen Die Aufgaben stellungen sind ber die Komponenten des Rails defi niert Benutzerdefinierte Aufgaben werden als Dateien in das Verzeichnis ib tasks hinzugef gt app Alle Model Controller View und Helper Dateien befin den sich in diesem Verzeichnis config Hier werden alle Konfigurationsdateien f r die Rails Umgebung gespeichert config ru Diese Datei enth lt Rack Konfigurationen die f r das Starten der Rails Anwendung durch einen Rack basierten Server gebraucht werden db Alle Schema und Migration Dateien f r die Datenbank sind in diesem Verzeichnis enthalten doc Hier wird die Dokumentation abgelegt lib Dieses Verzeichnis enth lt Erweiterungsmodule die zu keiner Anwendungsschicht direkt geh ren log Die Log Dateien werden in diesem Verzeichnis gespei chert public Dieses Verzeichnis enth lt die statischen Dateien wel che direkt von auBen aufrufbar sind script Dieses Verzeichnis enth lt Skripte welche die Anwen dung starten Hier werden auch die benutzerdefinierten Skripte abgelegt welche zur Ausf hrung bzw Bereitstel lu
9. ngig deshalb werden auch die Cluster Komponenten fallspezifisch ausgew hlt und kombiniert Allgemein gibt es drei unterschiedliche Einsatzziele f r einen Cluster 122 e Rechenleistungserh hung High Performance Computing HPC e Hochverf gbarkeit High Availability HA e Lastverteilung Server Load Balancing SLB 118 Als weiterf hrende Literatur sind die Werke Cluster Computing 5 und Parallel Programming 44 empfehlenswert 119 Vgl 23 S 169 170 und 5 S 27 120 vol 5 S 53 121 Vgl 5 S 54 60 122 vol 25 30 Kapitel 4 Cluster Management compute node 1 compute node 2 compute node 3 compute node 4 A C Administrator Campusnetz Switch server node MZA O Benutzer Abbildung 4 1 Grundaufbau eines HPC Clusters mit 4 Knoten Vgl 5 S 52 Da die Megware Computer GmbH haupts chlich HPC Cluster herstellt wird weiter auf HPC Cluster n her eingegangen 4 2 HPC Cluster Die HPC Cluster sind prim r zur Steigerung der Rechenleistung ausgelegt Sie werden meistens in wissenschaftlichen Bereichen f r die L sung von gut parallelisierbarer und rechenintensiver Probleme eingesetzt Die Abbildung 4 2 zeigt die Struktur eines HPC Cluster Es stehen 2 eigenst ndige Server Knoten zur Verf gung Management Knoten und Frontend Knoten Ein Manage ment Knoten erf llt alle Management Aufgaben des Clusters Er ist f r Monitoring War tung und Verwaltung von Knoten
10. Action Controller geerbte Klasse soll aus mindestens einer Action die eine Anfrage bearbeiten kann bestehen Dabei kann das Ergebnis gleich berechnet werden oder es findet eine Umleitung zu einer anderen Action statt 108 ygl 47 S 53 und 41 109 vgl 43 Kapitel ActionDispatch und 42 Ruby on Rails 3 0 Release Notes 7 3 Action Dispatch 110 ygl 43 Kapitel ActionDispatch Routing und 10 S 160 11 Vgl 43 Kapitel ActionDispatch Routing 11 Vgl 43 Kapitel ActionController Base und 42 Action Controller Overview 1 What Does a Controller Do Kapitel 3 Ruby on Rails 27 F r die Bearbeitung der Anfrage werden meistens weitere Daten gebraucht die aus einem Modell Active Model Record Resource geladen werden Nach der Bearbeitung der Anfrage werden die Daten evtl aktualisiert oder gespeichert und das Ergebnis der Bearbeitung direkt oder mithilfe der Komponente Action View zur ckgegeben Somit bernimmt der Controller die Aufgabe eines Vermittlers zwischen den Komponenten Active Model und Action View Action View Action View ist ein weiteres Sub Framework von Rails welches f r das Erstellen von Repr sentationen eingesetzt wird Action View bietet die Module Helper Renderer und Templates an welche die Generierung von Repr sentationen unterst tzen Allgemein wird zwischen zwei Vorlagen unterschieden e Vorlagen mit Dateierweiterungen erb oder rhtml stellen eine Mischung von Temp late Syste
11. Benutzers bei allen Interaktivit ten berpr ft werden denn nur die autorisierten Benutzer d rfen die entsprechenden Aktivit ten aus f hren Die Rechte der Benutzergruppe die in der Datenbank definiert ist sollen dabei der angeforderten Aktivit t entsprechen Die Gruppen Rechte werden statisch in den jeweiligen Anwendungen definiert wobei es vorteilhaft sein kann die Berechtigungen in der Datenbank festzulegen Rails bietet viele Authentifizierungsl sungen an die man in 2 Kategorien unterteilen kann sessionbasierte und HTTP basierte Authentifizierung Die sessionbasierte Au thentifizierung ist vor allem f r menschliche Benutzer die auf den Web Service direkt mit dem Webbrowser zugreifen gut geeignet F r computergesteuerte Clients sind die HTTP basierten Authentifizierungsmethoden wie Basic Authentication oder Digest Access Authentication besser geeignet Sie wer den jedoch durch die Webbrowser nicht optimal unterst tzt So gibt es z B keine M g lichkeit sich abzumelden bzw das Login Formular l sst sich nur ber Umwege umge stalten Trotz dieser Schwierigkeiten wird die Basic Authentication wegen ihrer Einfach heit und gro er Verbreitung zur Authentifizierung eingesetzt siehe Listing 5 10 90 Basisklasse fuer alle Controller class ApplicationController ActionController Base Pruefe vor jeder Aktion die Authentifizierung before filter authenticate Ueberpruefe die Authentifizierung des Benutzers oder a
12. CORBA RMI oder AMQP ausweichen 2 2 Grundlagen REST kann mit 5 folgenden Kernprinzipien charakterisiert werden eindeutig identifizierbare Ressourcen Repr sentationen Hypermedia Standardmethoden statuslose Kommunikation Unter einer Ressource kann ein Objekt vorgestellt werden Die Ressource soll eindeutig identifizierbar sein und mindestens eine Repr sentation Darstellung einer Ressource besitzen Ressourcen bilden die zentrale Idee in REST Repr sentationen sind also Darstellungen einer Ressource So kann ein Objekt ver schiedene Repr sentationen besitzen z B in Formaten XHTML XML JSON oder PDF Alle Repr sentationen sind gleicherma en g ltig Hypermedia ist ein zentrales Konzept der Anwendungssteuerung Unter diesem Kon zept verbergen sich die Idee der Verkn pfung zwischen den Ressourcen und die Idee der Steuerung des Anwendungszustands Somit kann eine Anwendung ohne Kenntnis der Struktur eines Services nicht nur an die n tige Ressource gelangen sondern auch den Ressourcenstatus ndern Standardmethoden sind ein Satz von Methoden welche alle Ressourcen unterst tzen aber nicht implementieren sollen Hiermit wird f r jede Ressource ein und dasselbe Interface verwendet welches f r alle Kommunikationspartner bekannt ist 14 Statuslose Kommunikation erm glicht Skalierbarkeit und Unabh ngigkeit zwischen aufeinanderfolgenden Anfragen Der Session Zustand bzw Benutzerstatus soll dabei ent
13. Formaten XML und JSON sehen dem XHTML Format hnlich e XHTML a rel self href http www example org person john e XML lt link rel self href http www example org person john gt e JSON rink c rel gelf href http www example org person john I 65 Vgl 53 S 55 56 66 Vgl 57 S 93 87 Vgl 53 S 10 11 und 45 S 94 68 ygl 57 S 97 69 Vgl 1 S 56 59 Kapitel 3 Ruby on Rails 17 3 Ruby on Rails Dieses Kapitel befasst sich mit der Programmiersprache Ruby und dem Web Framework Ruby on Rails Es werden vor allem wichtige Aspekte betrachtet die f r die Arbeit mit Ruby on Rails von Bedeutung sind Die Programmiersprache Ruby wurde im Jahr 1993 von Yukihiro Matsumuto entworfen und erstmals im Jahr 1995 ver ffentlicht Ruby ist eine dynamische Programmier sprache mit einer komplexen und ausdrucksstarken Grammatik welche auch f r C und Java Programmierer leicht zu erlernen ist Die Programmiersprache selbst wurde von Lisp Smalltalk und Perl inspiriert Sie ist eine rein objektorientierte Sprache eignet sich aber auch f r prozedurale und funktionale Programmierstile Ruby on Rails kurz Rails oder RoR ist ein in der Programmiersprache Ruby geschrie benes Web Framework Ruby on Rails wurde von David Heinemeier Hansson entwickelt und im Jahr 2004 unter MIT Lizenz als Open Source ver ffentlicht Rails wurde dabei aus einer bestehenden Webanwendung
14. Frameworks Ruby on Rails implementiert werden Die Aspekte der Sicherheit und Skalierbarkeit werden anschlie end n her betrachtet 5 1 Vor berlegungen Vor dem Erstellen einer neuen Architektur sollen neben der bestehenden Architektur die Lastverteilung analysiert und die Engp sse ermittelt werden Dadurch wird die m gliche architekturbedingte Performance Einbu e von vornherein vermieden Wie schon fr her erw hnt wurde werden die zahlreichen CLI Anfragen und das Par sen von den Anfragen als m gliche Ursachen f r lange Antwortzeiten vermutet Um zu bestimmen wie stark diese Faktoren tats chlich die Performance beeinflussen wurden mehrere Laufzeitmessungen durchgef hrt siehe Abbildung 5 1 und Tabelle 5 1 Die Messung hat einen linearen Zusammenhang zwischen der Laufzeit der Funktionen und der Knotenanzahl gezeigt Die Anzahl der Durchl ufe entspricht dabei der Anzahl der Funktionsaufrufe bei dem Cluster Monitoring mit der entsprechenden Knotenan zahl A0 Kapitel 5 Entwurf eines RESTful Web Services Funktion Durchlauf 1000 2000 3000 4000 5000 6000 7000 CLI 1 Thread 1 714 4 660 4 744 7 594 9 533 9 653 13 353 CLI 5 Threads 1 220 2 394 3 558 5 962 6 185 8 260 8 249 Daten Parsen 1 811 3 446 5 160 7 084 8 606 10 792 11 986 XML erzeugen 1 125 2 240 3 340 4 485 5 530 6 662 7 946 JSON erzeugen 0 229 0 449 0 680 0 960 1 127 1 343 1 567 Memcached Set 0 008 0 011 0 016 0 027 0 026 0 038 0 046 Memcached Get 0 029
15. Konvention Der Name soll mit einem Kleinbuchstaben bzw mit einem Unterstrich beginnen und die einzelnen W rter sollen durch einen Unterstrich getrennt sein Die Klammern sind in den meisten F llen optional Als R ckgabe wird der Wert des zuletzt ausgewerteten Ausdrucks zur ckge geben somit wird oftmals auf eine return Anweisung verzichtet siehe Zeile 8 in Listing 34 Da die Kombination von Getter und Setter Methoden sehr h ufig auftritt bietet Ruby vorgefertigte automatisierte Zugriffsmethoden an attr reader und attr accessor Beide Methoden erwarten eine beliebige Anzahl von Attributnamen als Symbole Die Metho de attr reader erstellt eine triviale Getter Methode die Methode attr accessor erstellt triviale Getter und Setter Methoden siehe Zeile 11 in Listing 3 1 9 77 Vgl 49 What is ruby und 17 Kapitel 8 Reflection and Metaprogramming 78 Vgl 17 Kapitel 7 1 1 Creating the Class 79 Vgl 51 S 38 80 Vgl 17 Kapitel 7 1 5 Accessors and Attributes 81 Vgl 51 S 38 40 82 Vgl 17 Kapitel 7 1 1 Creating the Class und 58 Kapitel 2 7 1 Getter und Setter 4 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Kapitel 3 Ruby on Rails 19 class Point Beginn der Klassendefinition def x x Setter Methode fuer x Ox x end def x Getter Methode fuer x Ox end attr_accessor y Zugriffsmethoden fuer y generieren def initialize x y Initialisiert ein neues Objekt ex
16. Qy x y end def to_s Gibt ein Objekt als Zeichenkette 0x 0y zurueck end end Ende der Klassendefinition Listing 3 1 Point Klasse Quelle angelehnt an 17 Kapitel 7 Classes and Modules Beim Erstellen von neuen Instanzen mit der Methode new wird die private Methode initialize automatisch aufgerufen Alle Argumente der Methode new werden dabei an die Methode initialize weitergegeben Diese Methode ist eine Art Konstruktor und hat die Aufgabe eine Instanz in einen definierten Anfangszustand zu berf hren indem sie z B die Attribute initialisiert 5 Jede Klasse sollte au erdem eine to s Methode beinhalten Diese Methode gibt eine Zeichenkette zur ck welche das Objekt repr sentiert Es wird zwischen 4 Variablenarten unterschieden lokale Variable ist in dem Block g ltig in dem sie definiert wurde Instanzvariable ist in einer Instanz g ltig e Klassenvariable ist in einer Klasse g ltig globale Variable ist berall im Programm g ltig Die Instanzvariablen beginnen mit einem At Zeichen und die Klassenvariablen be ginnen mit zwei At Zeichen Die globalen Variablen fangen mit Dollarzeichen an die lokalen Variablen haben kein Prefix 83 Vgl 17 Kapitel 7 1 3 Initializing a Point 84 Vgl 17 Kapitel 7 1 4 Defining a to s Method 85 Vgl 51 S 334 335 und 58 Kapitel 2 6 Variablen 86 Vgl 51 S 334 335 0 JO Om PS Go co 10 11 12 20 Kapitel 3 Ruby on Rails
17. Standard definiert Die Schlussel Wert Paare sind jedoch weit verbreitet und bei HTML Formularen standardisiert Die ebenfalls optionale Fragment Komponente referenziert die Ressourcenteile und wird immer clientseitig ausgewertet Ein bekanntes Beispiel f r die Verwendung von Fragmenten ist der Einsatz von Anker Elementen in HTML 2 4 1 Absolute URI und relative Referenz Eine absolute URI besteht aus den URI Komponenten wobei die Komponente Schema Authority oder und Path Pflichtbestandteile sind Die Komponente Query ist optional Die Beispiele sind e hitp example com e hitp example com user 12 e http example com orders year 20 10 amp month jan Neben einer absoluten URI ist die relative Referenz im Web weit verbreitet Man erkennt eine Referenz daran dass sie nicht mit einem Schema beginnt Eine relative Referenz besteht aus den Komponenten Authority Path Query und Fragment Die Komponenten 27 Vgl 35 Kapitel 3 4 Query und 53 S 40 8 ygl 53 S 40 44 und 45 S 117 119 29 Vgl 53 S 40 und 45 S 119 30 ygl 35 3 5 Fragment und 53 S 41 31 Vgl 35 4 3 Absolute URI 10 Kapitel 2 REST Architekturstil Authority Query und Fragment sind optional Eine relative Referenz bezieht sich immer auf eine Base URI Die Beispiele sind Base URI ist http example com sys order e 12 http example com sys order 12 e user 52 htip example com user 52 e orders year 2010
18. auguea o dann a wow d Row nn e 32 5 Active Model usd oes Ne a ERE a EOS 3 2 6 Action Pack aoaaa a a o A ad d ae ee EE une es 4 Cluster Management 41 Grundaufbau eines Clusters nn 17 17 18 20 20 21 21 23 24 24 25 26 27 29 42 EE 2 2 2 dob ue Be a en da 4 3 Cluster Managementsysteme 4 4 Megware Cluster Managementsoftware nn nn 4 4 1 4 4 2 4 4 3 4 4 4 Applianee Daemon a 24 mace za fr ak ea ea Appliance CL iut reme em Rocks ee ee Datenbank iu s a 42 pm o RR dew Rr We bos x ES EVE US E E a Ben tzeroberfl chen sis merrni i Reo moms kon Rom Xx TRO m eR a Entwurf eines RESTful Web Services 5 1 Voruberlegungen 2 uos be 244 dae x PEE EE ETE mE ees 5 2 Architekturentwurt x cm oh a te ace ee a an a 5 3 Parser 54 Ressourcen Und ROUEN lt lt os wa Xo yo Rex mI REL n 5 4 1 5 4 2 Wi lojo SAWA E A e Ee Ee af a er Controller 2 Na bib Reprasemtationen sx udo REX eA un ne oo DL ad ook eee Pes x S51 5 5 2 5 5 3 JSON rM Sas ee ee a e E a a en ARME ses ot aa Ge ag be o up isque e e reg 2 sa EDITI E EE dE 2 6 2 3 2 med ae ae o rep ts Se Gy a Deb ferus Bae 5 6 1 5 6 2 Authentifizierung und Autorisierung Verschl sselte Daten bertragung Bef Skaller hg o aran u au me Ex RE Rr ei EE EIN m Se EE ae 5 8 Clients 5 9 Benchmarks eebe tono oe ee bee aa be eee eA eae a 6 Fazit und Ausblick A Qualitatsmerkmale nach ISO 9126
19. bermittlung des Passwortes wird die HTTPS Verbindung mittels SSL TLS verschl sselt so dass auch das einfache Basic Verfahren ausreichend sicher ist Weiterhin kann die Kommunika tion gegen den Man in the middle Angriff durch Einsatz eines Public Key Zertifikates gesichert werden sodass letztendlich eine SSH equivalente Sicherheitsstufe erreicht werden kann 6 5 7 Skalierung Sollte die Performance des Web Services bei gro er Last trotz aller Optimierungen nicht ausreichen so soll es m glich sein die einzelnen Dienste auf mehrere Server zu vertei len und dadurch die Belastbarkeit zu erh hen Im Idealfall sollen folgende ClustWare Module horizontal skalierbar sein e Rails Webserver e MySQL Datenbank e Memcached Server e Appliance Daemon Das Framework Rails stellt selbst kein Hindernis bei der Skalierung dar somit k nnen mehrere Webserver die gleiche Rails Anwendung ausf hren und durch einen Load Ba lancer koordiniert werden Die Rails Anwendung sollte dabei parallelisierbar sein was 16 vgl 13 S 433 443 162 ygl 33 Kapitel 2 Basic Authentication Scheme Kapitel 3 1 1 Purpose Kapitel 4 8 Man in the Middle 163 ygl 34 Kapitel 3 1 Server Identity Kapitel 5 Entwurf eines RESTful Web Services 59 Appliance Web Service n ll Clients Abbildung 5 7 Dritter Architekturentwurf zum Teil schon im Kapitel 5 2 besprochen wurde Auch die MySQL Datenbank und der Memcached Server sind in eine skalie
20. die aktuellen Monitoring Daten f r jedes Ger t aus der Liste von dem Memcached Server abgeholt Holt die Device Liste abhaengig von dem ETag Attribut def self where attributes Berechnet die Device Liste measure list m etag etag lt attributes etag etag RING Q etag if m etag attributes etag RING UPDATES DEEP 10 11 12 13 14 15 16 52 Kapitel 5 Entwurf eines RESTful Web Services attributes etagl 1 m_etag to_a each Itl measure list lt lt measure t RING else return MDevice all end Holt die Monitoring Daten fuer jedes Device aus der Device Liste ab siehe self all end Listing 5 6 Zweiter Auszug aus dem Model MDevice 5 4 2 Controller Nachfolgend wird der Controller MDevicesController betrachtet Andere Controller wie MRackController weisen eine hnliche Funktionsweise auf und werden in dieser Arbeit nicht besprochen MDevicesController bernimmt die Rolle eines Vermittlers zwischen dem Model MDevi ce und der Views welche verschiedene Repr sentationen der Ressource Device anbie ten Obwohl die Zugriffe auf diese Schichten optimiert sind und die Anfragen teilweise zwischengespeichert werden sollen die redundante Berechnung und damit verbunde ne Daten bertragung trotzdem verhindert werden Dies wird durch die HTTP Header ETag und Last Modified erreicht Der ETag Header enth lt den Wert des Entity Tags welches durch die Inode Methode unter Beachtung d
21. namens Basecamp extrahiert Seitdem hat sich Ruby on Rails zu einem m chtigen und bekannten Framework f r die Entwicklung dynamischer Webanwendungen geworden Rails hat mehrmals bewiesen dass es sich schnell an neue Entwicklungen und Trends in der Web Technologie anpassen kann So hat Ruby on Rails als erstes Framework den REST Architekturstil beinah vollst ndig umgesetzt und bietet eine besonders gute Unterst tzung zum Erstellen von RESTful Webanwendungen 3 14 Ruby Grundlagen Ruby ist eine interpretierte Programmiersprache die f r schnelle und einfache objekt orientierte Programmierung entwickelt wurde Die Programme werden zur Laufzeit von einem Ruby Interpreter analysiert und ausgef hrt daraus folgt die relativ geringe Aus f hrungsgeschwindigkeit 7 Ruby ist eine vollst ndig objektorientierte Sprache In Ruby ist alles ein Objekt und folgt dem Prinzip von Klassen Methoden und Vererbung Die Funktionalit ten wie Singleton Methoden und Mixins Module werden direkt unterst tzt 9 70 Als weiterf hrende Literatur sind die Werke Programming Ruby 1 9 51 The Ruby Programming Language 17 Ruby on Rails 3 Tutorial 18 und Rails 3 in Action 21 empfehlenswert 71 Vgl 21 S 2 5 7 Vgl 17 Kapitel 1 Introduction 73 Vgl 21 S 2 5 74 Vgl 18 S 3 4 und 54 75 Vgl 49 What is ruby und 31 Kapitel 4 Einf hrung in Ruby 76 ygl 49 What is ruby und 17 Kapitel 7 Class
22. werden die Grenzwerte festgelegt die Ger tewerte zugeordnet und benannt Beim ber oder Unterschreiten von Grenzwerten werden die Meldungen in der Tabelle t alert erzeugt und ggf an eine vordefinierte E Mail Adresse versandt Die E Mail Adressen werden in die Tabelle t email eingetragen Die Nutzerdaten wer den in der Tabelle t user organisiert 36 Kapitel 4 Cluster Management F emaillD INT 11 userlD INT 11 emailAddress VARCHAR gt emailSend DATETIME 1 more 7 configlD INT 11 configClassID INT 11 valueName VARCHAR 255 valueType ENUM coefficient DOUBLE minimumCritical DOUBLE 19 more F alertID INT 11 unitlD INT 11 configID INT 11 state ENUM value DOUBLE 4 more Y commandLoglD INT 11 command VARCHAR 255 commandDate DATETIME source VARCHAR 255 3 more userID INT 11 userName VARCHAR 255 realName VARCHAR 255 password VARCHAR 255 userType ENUM 6 more unitlD INT 11 rackID INT 11 unitName VARCHAR 255 configClassID INT 11 powerSwitchingMode SE bootlD INT 11 batchEnabled ENUM 2 more interfacelD INT 11 unitID INT 11 ipAddress VARCHAR 16 servicePort INT 11 userName VARCHAR 16 6 more viewID INT 11 viewType ENUM configClassID INT 11 viewData TEXT 1 more F configCommandlD INT 11 co
23. 0 095 0 135 0 178 0 190 0 217 0 248 Tabelle 5 1 Laufzeitmessung der Funktionen Zeit in Sekunden Trotz der Erwartungen sind die CLI Aufrufe und das Parsen relativ effizient Durch Par allelisierung der CLI Aufrufe wurde der Datendurchsatz weiterhin optimiert Die Funk tionen aus der View Schicht welche die Repr sentationen erzeugen sind weniger per formant als vorher angenommen Die Funktionen f r das Generieren von XML HTML beeinflussen das Laufzeitverhalten genauso stark wie CLI Aufrufe Die Funktionen die auf einen Cache Memcached Server zugreifen sind hingegen sehr performant Bei einem Cluster mit 2000 Rechenknoten kann die Antwortzeit wie folgt berechnet werden Netzwerkschicht wird nicht beachtet Antwortzeit2ooo RcLi Abfrage RParsen RXML Generierung 2 3945 3 4465 2 240s 8 0805 8 1s R Rechenzeit Somit betr gt die Antwortzeit bei einem Cluster mit 2000 Knoten 8 1 Sekunden bei einem Cluster mit 4000 Knoten 17 5 Sekunden Bei mehreren gleichzeitigen Anfragen etwa bei mehreren Clients wird die Antwortzeit noch weiter ansteigen was evtl zur Prozessor berlastung f hren kann Um die Antwortzeit und Prozessorauslastung zu minimieren k nnen die rechenauf w ndigen Operationen weiterhin optimiert werden was allerdings nicht zur dauerhaften L sung des Problems f hrt Eine weitere M glichkeit die Systemperformance zu verbessern ist die Abh ngigkeit zwischen den Abfragen und den kompl
24. 011 adressiert so verweist die zweite URI auf einen stets aktuellen Bericht Somit sind es zwei unter schiedliche Ressourcen 7 3 Vgl 35 4 2 Relative Reference 33 Vgl 53 S 42 34 Vgl 53 S 42 43 35 Vgl 53 S 43 und 45 S 118 119 36 ygl 45 S 83 37 Vgl 45 S 83 Kapitel 2 REST Architekturstil 11 2 5 Repr sentationen Die Repr sentationen sind Darstellungen einer Ressource Die Ressourcen m ssen mindestens eine Repr sentation aufweisen Bei mehreren Repr sentationen ist zu be achten dass alle Repr sentationen gleicherma en g ltig sind 7 Allgemein l sst sich jede Ressource im REST auch als eine Idee betrachten Die Idee legt dabei fest wie die Informationen beim Anwendungsentwurf aufgeteilt werden Die Ressourcen stellen somit keine Daten sondern eine Entwickler Idee dar In diesem Sinne l sst sich eine Ressource ber ein Netzwerk nicht bertragen Die Idee muss zuerst auf die Daten abgebildet werden um sp ter als eine Repr sentation bertragen werden zu k nnen 7 Weiterhin kann die M glichkeit mehrere Repr sentationen f r eine Ressource anzubie ten den potenziellen Benutzerkreis erheblich erweitern Man kann mit mehreren Re pr sentationen viele unterschiedliche Formate anbieten und somit die Interoperabilit t stark verbessern Es wird zwischen standardisierten und benutzerdefinierten Formaten unterschieden Dabei ist ein standardisiertes Format einem benutzerdefinierten For
25. 2616 definiert e GET ruft die Information ab die durch die Request URI identifiziert ist e HEAD ruft die Meta Information ab die durch die Request URI identifiziert ist e POST erstellt eine neue Subressource e PUT erstellt bzw aktualisiert eine Ressource die durch die Request URI iden tifiziert ist e DELETE l scht eine Ressource die durch die Request URI identifiziert ist e OPTIONS ermittelt die F higkeiten und Kommunikationsm glichkeiten eines Servers e TRACE liefert eine Loop Back Anfrage zur ck e CONNECT stellt einen SSL Tunnel bei einem Proxyserver dynamisch zur Ver f gung RESTful Web Services verwenden haupts chlich nur die HTTP Methoden GET POST PUT DELETE selten auch HEAD und OPTIONS 6 Man unterscheidet zwischen siche ren und idempotenten Methoden e sichere Methoden d rfen auf dem Server nichts ver ndern dadurch sollen Sei teneffekte bei den Ressourcen vermieden werden e idempotente Methoden sollen auch bei mehrfacher Ausf hrung den gleichen Seiteneffekt haben allerdings ist es m glich dass eine Abfolge von mehreren Anfragen nicht idempotent ist auch wenn alle ausgef hrte Methoden idempotent sind Die folgende Tabelle 2 1 veranschaulicht die Eigenschaften der HTTP Methoden die durch RFC 2616 vorgegeben sind Die ersten zwei Spalten geben an ob eine Methode sicher und idempotent ist Die n chsten beiden Spalten geben an ob eine Ressour ce dabei durch eine URI ide
26. Active Model 100 vgl 10 S 157 159 und 42 Getting Started with Rails 6 4 The Model Kapitel 3 Ruby on Rails 25 lationales Mapping zur Verf gung stellt 1901 Die Active Resource Base Klasse wurde au erdem so konzipiert dass sie sich kaum von einer Active Record Base Klasse in der Benutzung unterscheidet Active Resour ce bietet alle Methoden zur Ver nderung eines Objekt Lebenszyklus Somit kann man beim Finden Erstellen Aktualisieren oder L schen einer Ressource direkt auf die an gebotene Funktionalit t zugreifen Die internen Active Resource Klassen sind auf den externen REST Ressourcen abge bildet hnlich wie Active Record Klassen auf Datenbanktabellen abgebildet sind Wird eine Anfrage an eine Active Resource Klasse erstellt so wird zuerst eine REST Anfrage erzeugt und ausgef hrt anschlie end wird das Ergebnis in ein gew hnliches Ruby Objekt serialisiert 1 M glich wird dieses Mapping durch die Einhaltung von Code und Protokoll basierten Konventionen die von beiden Kommunikationspartner eingehalten werden m ssen Die Konventionen sind in der Rails API Dokumentation 43 Kapitel ActiveResource Base genau dokumentiert 104 3 2 5 Active Model Active Record und Active Resource besitzen einen sehr gro en Funktionsumfang sind aber f r das Definieren von spezifischen Modellen nicht geeignet Aus diesem Grund wurde in der 3 Version von Rails eine neue Bibliothek namens Active Model aus dem Framework A
27. Alternative Template Systeme 158 ygl 31 Kapitel 8 1 ERB Templates 56 Kapitel 5 Entwurf eines RESTful Web Services HTTP Status 200 OK Abbildung 5 6 Aktualisierung der Monitoring Daten durch AJAX 5 6 Sicherheit Da die HPC Cluster vorwiegend f r die Forschung in gro en Institutionen eingesetzt werden spielt die Sicherheit eine wichtige Rolle Zurzeit werden die meisten Cluster Systeme in sicheren und gesch tzten Netzwerkumgebungen verwaltet wo externe Zu griffe nur sehr begrenzt erlaubt sind Die externen Zugriffe werden jedoch bei der Einf hrung von Web Service API sicher lich noch an Bedeutung gewinnen Somit kann die Steuerung eines Clusters auch von portablen Ger ten wie Smartphones oder Tablets stattfinden Damit das geforderte Sicherheitsma erreicht werden kann m ssen eine sichere Au thentifizierung genauso wie eine verschl sselte Daten bertragung bei dem Web Ser vice vorausgesetzt werden OONO Om P ON gt 10 11 12 13 14 15 Kapitel 5 Entwurf eines RESTful Web Services 57 5 6 1 Authentifizierung und Autorisierung Die Benutzer d rfen einen Cluster nur dann bedienen falls sie sich vorher authentifiziert haben Dabei sollen die Zugangsdaten des Benutzers wie Benutzername und Passwort mit den Daten in der Datenbank verglichen werden Falls die Identit t des Benutzers best tigt wurde wird der Benutzer authentifiziert andernfalls nicht Weiterhin sollen die Berechtigungen des
28. B Verwendete Werkzeuge Literatur und Quellenverzeichnis 39 39 41 45 48 50 52 54 54 54 55 56 57 58 58 60 61 63 65 67 69 Il Abbildungs und Tabellenverzeichnis Abbildungen 2 1 Aufbau einer WRI e laa mom E EN xx geo E x ea 8 3 1 MVC Architektur einer Rails Anwendung 24 4 1 Grundaufbau eines HPC Clusters mit 4 Knoten 0 30 4 2 Beispiel eines HPC Clusters mit 4 Knoten lll 31 4 3 Appliance bersicht usu 40d b 254 eGR Se GU ae E Ri RS wand es 33 4 4 EER Diagramm Martin Notation angelehnt an ClustWare Datenbankstruktur 36 5 1 Laufzeitmessung der Funktionen e 41 5 2 Erster Architekturentwurf 2 2222 ll llle 42 5 3 Zweiter Architekturentwurf 2 222 2 20m nn nn 44 5 4 Flussdiagramm des Parsers so a mon oo Rm E E in 45 5 5 Auswertung der Anfragen f r Listenressource Devices 2 222 2 222 53 5 6 Aktualisierung der Monitoring Daten durch AJAX 56 5 7 Dritter Architekturentwurf os soe aoas mosa a aa a a aa a a bai Tah a a ag aaa jae NR aa Tani D 59 5 8 Qt Benutzeroberfl8che aa 60 5 9 Die Web Service Benchmark bei 5 Clients e 62 Tabellen 2 1 HTTP Methoden und ihre Eigenschaften ss cs RR ERES 13 3 1 Projektverzeichnisstruktur einer Rails Anwendung l l 22 5 1 Laufzeitmessung der Funktionen 2 len 40 5 2 Ressourcen und ihre Routen 2 2 oaaae 49 5 3 Die Web Service Benchmark bei 5 Clients 62
29. BACHELORARBEIT Herr Sergius Beller Analyse und Entwurf eines RESTful Web Services f r eine Cluster Managementsoftware 2011 HOCHSCHULE ula MITTWEIDA UNIVERSITY OF RES APPLIED SCIENCES MEGWARE Fakult t Mathematik Naturwissenschaften Informatik BACHELORARBEIT Analyse und Entwurf eines RESTful Web Services f r eine Cluster Managementsoftware Autor Sergius Beller Studiengang Informatik Bachelor Seminargruppe IF08w1B Betreuer Prof Dr Ing habil Joachim Geiler Hochschule Mittweida Betreuer Dipl Math techn Robert Hommel MEGWARE Computer GmbH Mittweida Dezember 201 1 Bibliografische Angaben Beller Sergius Analyse und Entwurf eines RESTful Web Services f r eine Cluster Manage mentsoftware 75 Seiten 15 Abbildungen Hochschule Mittweida FH Fakult t Mathematik Na turwissenschaften Informatik Bachelorarbeit 2011 Firmen und Warennamen Warenbezeichnungen sind Eigentum ihrer jeweiligen Besitzer auch wenn sie nicht in dieser Arbeit entsprechend gekennzeichnet sind Satz ATEX Referat In der vorliegenden Bachelorarbeit wird ein Web Service API f r die Megware Cluster Manage mentsoftware entworfen und ansatzweise implementiert Der REST Architekturstil bildet dabei das Fundament des Entwurfes auf dem das Web Service aufgebaut wird Einen gro en Stellen wert nehmen die Performance Betrachtungen ein um die internen Einfl sse wie Lastverteilung und Caching zu ber c
30. Basis f r die Netzwerk und Kommu nikationsschicht Das ergab sich daraus dass f r die Cluster Managementsoftware zu diesem Zeitpunkt kein API f r netzwerkweite Kommunikation zur Verf gung stand Im Zuge der Entwicklung offenbarte das Qt als Netzwerk Framework jedoch einige Schw chen Zum einen war nur die Low Level Programmierung auf der Socket Ebene m glich zum anderen sollte das aktuellste Qt Framework auf allen Zielplattformen zur Verf gung stehen was auf den mobilen Betriebssystemen nur bedingt m glich ist Ein weiterer Grund das Qt Framework nicht f r die Netzwerkprogrammierung einzuset zen bestand in einer mangelhaften Anbindung der Programmiersprache Ruby 1 9 an das Qt Framework 4 7 Die Annahme man k nne den Qt Backend auch f r die in Ruby entwickelte Weboberfl che verwenden ist somit nicht ganz korrekt Als L sung dieses Problems bot sich der Einsatz von RESTful Web Services basierend auf dem Framework Ruby on Rails an Da dieses Framework bereits eine Anwendung bei der Megware Computer GmbH gefunden hat und der REST Ansatz sehr aktuell ist stellt dieses Thema eine besondere Herausforderung als Gegenstand der Bachelorar beit dar Qt Framework steht f r viele mobile Betriebssysteme zur Verf gung so wird die Entwicklung unter Symbian Maemo MeeGo Windows CE und Windows Mobile direkt unterst tzt vgl 36 F r andere weit verbreitete mobile Plattformen wie Android und Apple iOS gibt es keine Unterst tzung
31. Dabei wird unter anderem das Allow Feld mit den Methoden bermittelt die eine Ressource unterst tzt Die OPTIONS Methode ist dementsprechend als sicher und idempotent de finiert Die meisten Server und Frameworks unterst tzen diese Methode nicht Falls die OPTIONS Anfrage ordnungsgem verl uft wird der HTTP Ergebniscode 200 OK mit der Meta Information einer Ressource zur ckgeliefert 2 6 3 PUT Die PUT Methode erstellt bzw aktualisiert eine bestehende Ressource Die Ressource ist durch die Request URI vorgegeben Diese Methode ist idempotent aber nicht sicher Kommt z B nach einer PUT Anfrage keine Antwort zur ck so kann die Anfrage im Zweifelsfall mehrmals wiederholt werden Die PUT Anfrage bermittelt die Repr sentation einer Ressource zu dem Server Der Server soll dabei das Format der bermittelten Repr sentation unterst tzen und ber das vorliegende Format informiert sein ber URI Endung bzw HTTP Content Type Header Die Informationen werden sinngem bernommen das hei t dass der Ser ver die Daten ndern ignorieren oder erg nzen darf D Falls die PUT nderungsanfrage ordnungsgem verl uft und eine vorhandene Res source aktualisiert wird wird der HTTP Ergebniscode 200 OK mit einer Repr sen tation oder 204 No Content ohne Repr sentation zur ckgeliefert Wird der HTTP Ergebniscode 201 Created oder 202 Accepted zur ckgeliefert so wurde oder wird eine neue Resso
32. als Basis f r Netzwerk und Kommunikationsschicht verwendet Es hat sich aber gezeigt dass es nur eine mangelhafte Anbindung von der Program miersprache Ruby 1 9 an das Qt Framework 4 7 existiert Somit l sst sich das in Qt entwickelte API nur f r die Qt Oberflache und kaum f r die Ruby Weboberflache ver wenden Daher wird jetzt an einer RESTful basierten API L sung gearbeitet die in Ru by implementiert werden soll 38 Kapitel 5 Entwurf eines RESTful Web Services 39 5 Entwurf eines RESTful Web Services Dieses Kapitel befasst sich mit dem Entwurf und der Implementierung des Appliance API welches auf der REST Architektur basiert Ein API f r umfangreiche Cluster Mana gementsysteme wie ClustWare soll im Idealfall folgenden Funktionsumfang anbieten Cluster Installation Steuerung und Konfiguration des Clusters Monitoring des Clusters Verwaltung von Batch Jobs e Benutzerverwaltung und Autorisierung Im Rahmen dieser Arbeit soll das Cluster Monitoring vordergr ndig analysiert werden da es sich als Schwachpunkt bei fr heren Implementierungen erwiesen hat Weitere Funktionalit ten wie Batch Verwaltung Benutzerautorisierung etc werden dabei nur teilweise angesprochen sie sollen das API sp ter erweitern Das Cluster Monitoring wird auch bei der Implementierung an erster Stelle untersucht Somit sollen die entsprechenden Programmschichten Parser Modell Controller und View ansatzweise unter der Verwendung des
33. atz von Knoten ohne Festplatten engl diskless nodes erm glicht Portable Batch System ein Batch System TORQUE ein weiteres Batch System 4 4 2 Appliance CLI Das Appliance CLI vom Englischen command line interface f r Konsole bietet eine Schnittstelle zur ClustWare Steuerung Es kann mit dem Befehl appliance auf dem Appliance Knoten gestartet werden Die Kommunikation mit dem Appliance Daemon findet ber einen lokalen Dateisystem Socket statt 17 Die Befehlssyntax von Appliance CLI sieht wie folgt aus 14 appliance command parameter 1 parameter 2 parameter n Das Kommando und die Parameter werden durch den doppelten Doppelpunkt ge trennt Die Kommandos sind help nodes batch und tickets Sie k nnen durch die Pa rameter erweitert bzw erg nzt werden siehe Listing 4 3 Die Kommandos nodes get und nodes command unterst tzen Wildcards Somit ist es m glich gleich f r mehrere Ger te die Zustandsinformationen abzufragen bzw Steuer befehle auszuf hren Knoten node01 und node02 ausschalten appliance nodes command node01 node02 shutdown Zeige den Status aller Geraete im Cluster appliance nodes get system 139 vgl 26 Modul bersicht 149 ygl 26 Modul bersicht und Projektdokumentation 141 Vgl 27 S 9 142 Vgl 27 S 9 24 143 Vgl 27 S 24 25 144 Vgl 27 S 9 10 26 Kapitel 4 Cluster Management 35 Zustandsinformation des Knote
34. by http www skorks com 2010 04 serializing and deserializing objects with ruby Stand 2 12 2011 49 SLAGELL M Ruby User s Guide http www rubyist net slagell ruby Stand 19 08 2011 50 Sun MicROSYSTEMS MYSQL Leistungsoptimierung f r das Datenbanksys tem MySQL Cluster http krsteski de wp content uploads 2010 09 MySQL Cluster Perfomance WP deutsch pdf Stand 3 12 2011 51 THOMAS D FOWLER C HUNT A Programming Ruby 1 9 Pragmatic Program mers 2009 52 T kov S REST Der bessere Web Service Artikel bei JAXenter http it republik de jaxenter artikel REST Der bessere Web Service 2158 html Stand 19 08 2011 53 TiLKOv S REST und HTTP dpunkt verlag GmbH Heidelberg 2009 54 T Lkov S RESTful Web Services mit Rails RailsWay 2009 http www innoq com files RM_1 09_tilkov_REST pdf Stand 19 09 2011 55 W3C COMMUNICATIONS TEAM Web Services Architecture http www w3 org TR ws arch Stand 3 10 2011 Literatur und Quellenverzeichnis 73 56 W3C COMMUNICATIONS TEAM XML in 10 points http www w3 org XML 1999 XML in 10 points html en Stand 3 12 2011 57 WEBBER J PARASTATIDIS S ROBINSON l REST in Practice O Reilly Media Sebastopol 2010 58 WiNTERMEYER S Ruby on Hail 3 0 und 3 1 http www ruby auf schienen de Stand 19 08 2011 74 Erkl rung 75 Erkl rung Hiermit erkl re ich dass ich die vorliegende Arbeit selbstst nd
35. bzw als HTML zur ckgeliefert wo bei die XML HTML Repr sentationen meistens durch das Rendering von Action View Vorlagen entstehen 08 Action Dispatch Die Komponente Action Dispatch bietet eine Implementierung f r das Routing von An fragen in Rails Anwendungen Dabei kann sie nicht nur die HTTP Anfragen analysieren sondern auch die Cookies und Sessions verwalten 109 Ein wichtiger Teil von Action Dispatch das Modul Routing ist f r die Interpretation und Auswertung von Anfragen verantwortlich Dabei werden alle notwendigen Informatio nen aus der URL und dem HTTP Header herausgefiltert um eine passende Action zu bestimmen und auszuf hren Unter einer Action versteht man eine ffentliche Metho de einer Controller Klasse die von der Action Controller Klasse vererbt ist Wurde eine passende Action gefunden so wird eine neue Instanz des Controllers der die Action beinhaltet erstellt und die Action anschlie end ausgef hrt 19 Das Modul Routing bietet somit die Rewrite Engine Funktionalit t hnlich wie mod re write von Apache die aber direkt in Ruby implementiert ist Das Modul funktioniert un abh ngig vom darunterliegenden Webserver was die Routen Konfiguration vereinfacht da alle Routen in einer einzigen Datei config routes rb im Projektverzeichnis definiert werden Action Controller Nach dem das Routing den verantwortlichen Controller gefunden hat Ubernimmt dieser die weitere Bearbeitung der Anfrage Eine von
36. ch einen UNIX Domain Socket Somit k nnen die Anfragen direkt ohne Terminal von Appliance CLI beantwortet wer den Ruby stellt eine Bibliothek f r den Zugang zu den Netzwerkdiensten auch auf einer niedrigen Ebene zur Verf gung So unterst tzt die UNIXSocket Klasse die Interpro zesskommunikation mit Hilfe des streambasierten Unix Domain Protokolls siehe Listing m Rd require socket SOCKET tmp applianceSocket Socket Pfad device node01 Geraet result Ergebnis der Abfrage Verbindung zum Appliance Socket aufbauen client UNIXSocket open SOCKET Zustandsinformation zum Geraet abfragen client send nodes get device infolist n n n 0 Ergebnis der Abfrage abholen while tmp client recvfrom 1024 0 length gt 0 result lt lt tmp end Verbindung zum Socket schliessen client close Listing 5 1 CLI Abfrage Hash erstellen und serialisieren Nachdem eine Abfrage erfolgreich abgearbeitet wurde wird das Ergebnis in ein tem por res Hash umgewandelt Das tempor res Hash wird analysiert und es wird daraus ein weiteres Hash Ger t Hash generiert Das Ger t Hash kann dann anschlie end serialisiert und in einem Cache gespeichert werden siehe Listing 5 2 Obwohl das doppelte Erstellen eines Hashes ineffizient ist l sst es sich an viele Daten Variationen anpassen Der Parser ist somit an k nftige nderungen der Namenskonven tion bei den Abfragen gut vorbereitet Bei einer schlechten Per
37. che in den Appliance Daemon auszulagern Bei dieser L sung liegt die Schwierigkeit in der Koordination des Schreibzugriffs auf den Cache Weiterhin bleibt die lange Antwortzeit bei erster Anfrage als Problem bestehen Somit ist es zu erkennen dass durch alleinige Auslagerung des Cache die Performance Anforderungen nicht zu erf llen sind Wie die Abbildung 5 3 zeigt lassen sich diese Anforderungen mit gleichzeitigem Auslagern von Cache und Parser aus der Webserver Schicht erreichen 146 Vgl 32 Kapitel 13 Caching in HTTP A4 Kapitel 5 Entwurf eines RESTful Web Services Appliance Daemon RW sii Appliance Clients Abbildung 5 3 Zweiter Architekturentwurf Der Parser wird teilweise aus dem Web Service ausgelagert um rechenaufw ndige Be rechnungen zwischenzuspeichern Die Daten im Cache werden periodisch durch den Parser aktualisiert Kommt nun eine Client Anfrage die auf die Ergebnisse der rechen aufw ndigen Berechnungen zugreifen will werden die Daten nur aus dem Cache abge holt und direkt an den Client weitergereicht Anderenfalls werden die Anfragen von dem Web Service durch den Zugriff auf Applian ce CLI und Appliance Datenbank beantwortet falls das Zwischenspeichern der Daten nicht m glich ist bzw sich nicht lohnt Hiermit werden alle Client Anfragen innerhalb von 0 1 Sekunde beim Cluster mit 2000 Knoten beantwortet Die Aktualit t der Daten ist dabei von der Periodizit t der Aktua lisierun
38. ctive Record extrahiert 09 Diese Bibliothek bietet eine hnliche Funktionalit t wie die Frameworks Active Record oder Active Resource Somit lassen sich die Module f r Validierung Callbacks Seriali sierung und bersetzung unabh ngig von oben genannten Frameworks einsetzen was das DRY Prinzip widerspiegelt Active Model beinhaltet viele weitere n tzliche Module unter anderem solche Module die bei Interaktion mit Action Pack gebraucht werden Somit sind alle neu entwickelte ORM Klassen in der Lage mit Action Pack zu interagieren soweit sie die Active Model Schnittstelle implementiert haben 10 10 vgl 31 Kapitel 14 5 Zugriff auf einen Webservice mit ActiveResource 13 Kapitel 15 4 Active Re source und 43 Kapitel ActiveResource Base Vgl 12 Kapitel 8 Active Resource 103 ygl 43 Kapitel ActiveResource Base 104 Vgl 12 Kapitel 8 Active Resource und 43 Kapitel ActiveResource Base 105 ygl 13 S 561 und 42 Ruby on Rails 3 0 Release Notes 8 Active Model 106 ygl 13 S 561 107 Vgl 42 Ruby on Rails 3 0 Release Notes 8 Active Model 102 26 Kapitel 3 Ruby on Rails 3 2 6 Action Pack Die Komponente Action Pack besch ftigt sich mit der Behandlung von Anfragen und mit der Ausgabe von Ergebnissen Die Anfragen werden durch das Modul Action Dispatch ausgewertet und an den entsprechenden Action Controller weitergeleitet Die Ergebnis se werden dann entweder in XML JSON serialisiert
39. cues tp Secure Shell SOL iov er Secure Sockets Layer TOP Lexi ee Transmission Control Protocol TDD reus Test Driven Development TES atrio e Transport Layer Security UDP 5 bei sh User Datagram Protocol URI 222 ieiti Ees Uniform Resource Identifier WS EE ia Web Service WWW World Wide Web XHTML Extensible Hypertext Markup Language XML 15s Extensible Markup Language YAML Yet Another Multicolumn Layout Kapitel 1 Einleitung 1 1 Einleitung Die Hochleistungsrechner sind heutzutage aus unserer Welt nicht mehr wegzudenken Sie unterst tzen die Wissenschaftler auf den Gebieten der Biologie Chemie Geologie Klimaforschung Luft und Raumfahrt Medizin und Physik F r eine einfache Steuerung und Konfiguration der Hochleistungsrechner werden Cluster Managementsysteme ge braucht die den Verwaltungsaufwand erheblich minimieren k nnen Eine zukunftsori entierte Architektur der Managementsoftware spielt dabei eine entscheidende Rolle 1 1 Motivation Die Idee zur Entwicklung einer REST basierter Architektur f r Cluster Managementsoft ware entstand aus dem Praktikum bei der Megware Computer GmbH Die Hauptaufga be dieses Praktikums bestand in der Analyse des Qt Frameworks f r die Entwicklung einer grafischen Oberfl che f r die Megware Cluster Managementsoftware Das Qt Framework diente in diesem Zusammenhang nicht nur dem Zweck der Entwick lung einer Benutzeroberfl che sondern auch als
40. d keine Parameter bergeben werden 1 upto 5 x puts x x Quadrate fuer Zahlen 1 5 Ausgabe 1 4 9 16 25 a fi 35 Teate 4 Array definieren a each do x Element duplizieren puts x 2 Ausgabe 2 6 catcat end def verdreifach Definiere Funktion die jeden yield yield yield Anweisungsblock 3 fach ausfuehrt end verdreifach puts Ho Ausgabe Ho Ho Ho Listing 3 2 Bl cke und Iterationen Quelle angelehnt an 17 Kapitel 5 4 Blocks und 17 S 77 87 Vgl 51 S 43 44 88 Vgl 17 Kapitel 3 3 Arrays und 3 4 Hashes 89 Vgl 51 S 43 44 und 17 2 2 1 Block Structure in Ruby 90 Vgl 51 S 75 80 und 17 5 4 Blocks Kapitel 3 Ruby on Rails 21 3 2 Rails Grundlagen Die Rails Philosophie basiert auf zwei einfachen Konzepten Das erste Konzept hei t DRY Don t Repeat Yourself Wiederhole dich nicht Durch Anwendung des DRY Prinzips versucht Rails die Redundanz zu vermeiden in dem es z B an vielen Stellen Quellcode automatisch generiert Das zweite Konzept hei t Convention over Configu ration Das reduziert die Komplexit t der Anwendungskonfiguration erheblich solange die Entwickler sich an die blichen Rails Konventionen halten H Ein weiteres wichtiges Prinzip der Entwicklung von Rails Anwendungen ist TDD Test Driven Development oder testgesteuerte Programmierung dies erm glicht eine re lativ fehlerfreie Implementierung der Software mit h
41. den Status 304 Not Modified Data leer Status 200 OK Data Abbildung 5 5 Auswertung der Anfragen f r Listenressource Devices Unabh ngig davon welche Methoden der Client zur Vermeidung der redundanten Da ten bertragung verwendet wird die Anfrage mit dem HTTP Status 304 Not Modified beantwortet falls die clientseitigen Daten noch aktuell sind In diesem Fall findet keine bertragung der Monitoring Daten statt was die Performance enorm verbessert Wird dagegen festgestellt dass die clientseitigen Daten nicht mehr aktuell sind wird die An frage mit dem HTTP Status 200 OK beantwortet und die ver nderte Daten an den Client gesendet 54 Kapitel 5 Entwurf eines RESTful Web Services 5 5 Repr sentationen Der Client kann dank dem REST Architekturstil zwischen verschiedenen Repr sentatio nen ausw hlen So werden Repr sentationen im JSON XML und XHTML Format an geboten Das gew nschte Repr sentationsformat wird dabei durch den HTTP Accept Header festgelegt Weiterhin k nnen menschliche Benutzer das Format in der URI fest legen 5 5 1 JSON JSON ist ein kompaktes textbasiertes Datenaustauschformat welches auf einer Un termenge der Programmiersprache JavaScript basiert JSON bietet als ein Datenaus tauschformat zwischen Anwendungen viele Vorteile e verf gbar in beinahe allen verbreiteten Programmiersprachen C C C Ob jective C Java Ruby Python Perl PHP e g
42. ent 10 Datenbank Abbildung 3 1 MVC Architektur einer Rails Anwendung Vergleiche 18 S 55 3 2 3 Active Record Active Record ist ein Sub Framework das unabh ngig von Rails eingesetzt werden kann Es erlaubt den objektorientierten Zugriff auf relationale Datenbanken was durch objektrelationales Mapping ORM erreicht wird Diese Technologie kann die Effizienz beim Implementieren von datenbankgest tzten Anwendungen stark erh hen um Time to Market so weit wie m glich zu verk rzen Die DB Zugriff Details k nnen dadurch hinten angesetzt werden Das Framework ist an keine bestimmte Datenbank gebunden somit kann eine Anwen dung unabh ngig von der verwendeten Datenbank entwickelt und eingesetzt werden Active Record bietet jedoch nicht nur grundlegende CRUD Funktionalit ten wie Crea te Read Update und Destroy F higkeit einen Datensatz anlegen lesen aktualisieren und l schen sondern auch Datenmigration Datenvalidierung Objekt Callbacks und Suchunterst tzung 100 3 2 4 Active Resource Active Resource ist eine Rails Technologie welche Ruby Objekte und RESTful Web Services miteinander verbindet Somit ist man in der Lage auf die Ressourcen einer anderen REST Anwendung zuzugreifen Active Resource verfolgt eine identische Philo sophie wie Active Record sodass sie die externen Ressourcen auch ber ein objektre 99 Vgl 31 Kapitel 10 Datenbankzugriff mit ActiveRecord und 42 Getting Started with Rails 2 2 3
43. ent Faktor beachtet werden sodass das Web Service die Anfragen von 5 Clients gleichzeitig be antwortet muss Dadurch sollte die Umgebung eines Produktiv Clusters realit tsnah nachgebildet werden F r die Erstellung der Benchmark wird das Apache Benchmark Tool eingesetzt Das Apache Benchmark Tool f hrt die Benchmark Tests basierend auf dem HTTP Protokoll aus wobei eine definierte Anzahl der Anfragen an eine Webanwendung geschickt wird W hrenddessen wird die Bearbeitungszeit berechnet und analysiert Zur Bestimmung der Antwortzeit des Web Services muss eine der Cluster Gr e ent sprechende Anzahl der Client Anfragen generiert werden Die Anzahl der Client Anfrag en wird wie folgt zu berechnen Knotenanzahlsimulation Cluster Anfragenanzahlsjmulation EE x Clientanzahl est Liuster 1000 A hl x5 nfragenanzahlzo00 100 50 Die Menge der bertragenen Daten die Bearbeitungsdauer auf dem API Server und die Gesamtantwortzeit auf dem Test Cluster entsprechen somit den entsprechenden Messdaten auf dem simulierten Cluster soweit die Reprasentationen mit Paginierung max 100 Knoten pro Anfrage Ubertragen werden Soweit alle Test Parameter bekannt sind wird der Benchmark Test durch das Apache Benchmark Tool ausgef hrt Startet einen Benchmark Test fuer einen simulierten Cluster mit 1000 Knoten mit 5 Clients ab n 50 c 5 http 10 1 0 200 4000 racks json 62 Kapitel 5 Entwurf eines RESTful Web Services
44. es Zeitpunktes der letzten Datei nderung berechnet wird Weiterhin ist es m glich den Datei Hashwert bzw die Datei Versionsnummer zur Berechnung des ETag miteinzubeziehen Da die Performance des Web Services von gro er Bedeu tung ist wird nur die Versionsnummer der letzten Device Aktualisierung bei der ETag Berechnung beachtet 5 Weiterhin wird die Ermittlung der Aktualit t der Daten durch Last Modified Header un terst tzt Bei einem Last Modified Header wird der Zeitpunkt der letzten Daten nderung bertragen Obwohl die Header ETag und Last Modified die gleiche Funktion erf llen empfiehlt RFC 2616 beides zu senden Um auch zum Teil redundante bertragung der Monitoring Daten bei Listenressource Devices zu verhindern wird ein Aktualit tsfilter eingesetzt Dabei bermittelt der Client die Versionsnummer der zuletzt erhaltener Daten an den Server Der Server bermittelt dann nur die Daten die seither ge ndert wurden siehe Abbildung 5 5 153 Vgl 32 Kapitel 14 19 ETag und Kapitel 14 26 If None Match 154 Vgl 32 Kapitel 13 3 1 Last Modified Dates Kapitel 14 25 If Modified Since und Kapitel 13 3 4 Rules for When to Use Entity Tags and Last Modified Dates Kapitel 5 Entwurf eines RESTful Web Services 53 Ist die clientseitige Version der Daten aktuell Die Monitoring Daten von allen Ger ten laden Die Ger te Liste berechen Die Monitoring Daten von den Ger ten aus der Liste la
45. es and Modules 18 Kapitel 3 Ruby on Rails Ruby ist eine dynamisch typisierte Sprache Die Variablen sind nicht typisiert und die Variablendeklarationen sind unn tig Au erdem f hrt Ruby eine automatische Speicher verwaltung durch und bietet ein API zur Reflexion und Metaprogrammierung an Man kann somit nicht nur die Methoden zur Laufzeit definieren bzw ndern sondern auch den Zustand und die Struktur des Programms vom Programm selbst ver ndern las sen 3 1 1 OOP in Ruby Die Definition einer Klasse beginnt mit dem Schl sselwort class und endet mit dem Wort end wie die meisten Ruby Konstrukte Der Name einer Klasse soll immer mit einem Gro buchstaben beginnen Bei Klassen und Modulen gilt die CamelCase Konvention Wie das Listing 3 1 zeigt werden die Semikolons am Ende der Anweisungen nicht ge braucht solange jede Anweisung auf einer neuen Zeile beginnt Einzeilige Kommentare beginnen mit einem Routen Zeichen Die Einr ckungen sind nicht signifikant trotz dem werden Zwei Leerzeichen Einr ckungen f r bessere Lesbarkeit empfohlen 7 Jedes Objekt ist eingekapselt somit ist ein Zugriff auf die Objekteigenschaften nur mit den Methoden des entsprechenden Objektes m glich F r diesen Zweck werden die Getter und Setter Methoden definiert siehe Zeilen 3 bis 9 in Listing 3 1 Die Definition einer Methode beginnt mit dem Schl sselwort def Bei der Namensge bung von Methoden und Variablen gilt die Unterstrich
46. exen Berechnungen aufzul sen Das hat dann eine bessere Gesamt Performance zur Folge wobei die Ausf hrungszeit einzelner Ope rationen unver ndert bleibt Kapitel 5 Entwurf eines RESTful Web Services 41 Memcached Get Memcached Set Anzahl der JSON erzeugen Durchl ufe m 1000 m 2000 3000 m 4000 m 5000 6000 m 7000 XML erzeugen Funktionen AM Daten Parsen CLI 5 Threads CLI 1 Thread 0 000 2 000 4 000 6 000 8 000 10 000 12 000 14 000 16 000 Sekunden Abbildung 5 1 Laufzeitmessung der Funktionen 5 2 Architekturentwurf Das Web Service API soll auf der REST Architektur basieren Die Performance hat eine hohe Priorit t und soll bei allen Architekturentscheidungen mitber cksichtigt werden Alle REST Regeln sollten somit befolgt werden solange sie sich nicht negativ auf die Performance auswirken Das Web Service soll auf einem Webserver unter Einsatz des Ruby on Rails Frame works laufen Dadurch wird die Appliance Architektur durch eine weitere Schicht erwei tert die der Entwurfsmuster Idee Fassade bzw Adapter nahe liegt Das Web Service API soll mehrere Repr sentationen anbieten um unterschiedliche Clients mit Daten versorgen zu k nnen Die Daten werden von der Datenbank und von dem Appliance CLI geholt geparst und in dem angeforderten Format an Client berge ben 145 Ygl 19 S 171 172 212 214 42 Kapitel 5 Entwurf eines RESTful Web Services Appliance Daem
47. formance kann dieses Verfahren optimiert werden sodass nur eine begrenzte Anzahl der Daten Variationen unterst tzt wird 147 Vgl 51 S 811 891 892 0 JO Om SS Go Kapitel 5 Entwurf eines RESTful Web Services 47 F r die Serialisierung der Daten wird das Format JSON eingesetzt Das Serialisieren und Deserialisieren in JSON nimmt wesentlich weniger Zeit in Anspruch als in den Formaten XML oder YAML Obwohl die Marshal Bibliothek noch bessere Performance aufweisen kann leidet dadurch die Plattformunabh ngigkeit was den Austausch von Daten beeintr chtigen kann Die Bibliothek YAJL wird anstatt der Standard JSON Bibliothek aufgrund einer besseren Performance verwendet 149 require yajl t hash temporaeres Hash device hash Geraet Hash temporaeres Hash erstellen result each line do lil temp i split t hash temp first temp Last end Geraet Hash erstellen if t_hash has_key id hostname device hash hostname t_hash id hostname end if t_hash has_key id boottime device hash boottime t_hash id boottime end Geraet Hash serialisieren device Yajl Encoder encode device hash Listing 5 2 Hash erstellen und serialisieren Cache aktualisieren Als Implementierung f r den Cache Server kommt Memcached zum Einsatz Memca ched ist ein hochperformantes verteiltes Objekt Caching System Es wird oftmals zur Erh hung der Leistung von dynamische
48. ft ware Architectures Doktorarbeit UNIVERSITY OF CALIFORNIA IRVINE http www ics uci edu fielding pubs dissertation top htm Stand 19 08 2011 15 FISCHER L A Beginners Introduction to HTTP and REST Ar tikel bei Nettuts http net tutsplus com tutorials other a beginners introduction to http and rest Stand 19 08 2011 16 FITZPATRICK B Distributed Caching with Memcached http www linuxjournal com article 7451 Stand 3 12 2011 17 FLANAGAN D MATSUMOTO Y The Ruby Programming Language O Reilly Se bastopol 2008 18 HARTL M Ruby on Rails 3 Tutorial Addison Wesley Longman Amsterdam 2010 19 JOHNSON R GAMMA E HELM R VLISSIDES J Entwurfsmuster Elemente wiederverwendbarer objektorientierter Software Addison Wesley M nchen 2004 20 JSON DEVELOPERS Einf hrung in JSON http www json org json de html Stand 3 12 2011 21 KATZ Y BIGG R Rails 3 in Action Manning Pubn Shelter Island 2011 22 KERSKEN S T Hanabuch f r Fachinformatiker Kapitel 13 Galileo Computing 4 Auflage 2009 http openbook galileocomputing de it_handbuch fachinformatiker 13 lamp 001 htm Stand 19 08 2011 23 LIEBEL O Linux Hochverf gbarkeit Galileo Press Bonn 2011 24 LoPEz B YAJL C Bindings for Ruby https github com brianmario yajl ruby Stand 2 12 2011 25 MANHART DR K TecChannel Networked Computing Grundlagen und Anwen dungen http www tecchan
49. g Delegate Installation Knoten Appliance Abbildung 4 3 Appliance bersicht Vgl 26 Modul bersicht 4 4 1 Appliance Daemon Appliance Daemon ist das Herz der ClustWare und enth lt folgende Module zur Admi nistration des Clusters 137 e RackView Server stellt Daten f r das TFT Bedienpanel RackView zur Verf gung Clustsafe Modul verarbeitet PDU Sensordaten und steuert den Stromverteiler ClustSafe e RRDTool Modul ist f r Monitoring und Archivierung aller Hardwareparameter zu st ndig SNMP Ger te Modul verwaltet Ger te wie Switches Power Switches und Rack Monitoring Systeme die per SNMP angesteuert werden k nnen Auf jedem Knoten l uft ein Daemon welcher zusammen mit IPMI eigene Hardware und Softwareparameter verwaltet und nach einer Anfrage seitens des Appliance Daemons zur ckliefert Die IPMI Karte sorgt f r den Zugriff auf ausgeschaltete Knoten 138 137 Vgl 26 Modul bersicht 138 vgl 26 Modul bersicht 34 Kapitel 4 Cluster Management Die Benutzerverwaltung und Knoten Einstellungen werden in der Datenbank gespei chert Der Appliance Daemon und somit auch die ClustWare werden ber das Applian ce CLI gesteuert Module Delegate Installation und Delegate Queuing stellen Erweiterungs Interfaces be reit Damit ist es m glich weitere Softwareprodukte dynamisch anzubinden unter ande 140 rem Sysinst Installationsmodul von Megware Perceus Installationsmodul welches Eins
50. g des Parsers abh ngig Auf die Aktualisierung der Daten wird im Kapitel 5 3 n her eingegangen Kapitel 5 Entwurf eines RESTful Web Services 45 Liste der aktualisierten e Cache Ger ten parsen Alle Ger te aus der Liste parsen Warte 5 Sekunden Abbildung 5 4 Flussdiagramm des Parsers 5 3 Parser Der Parser wird in der Appliance als ein weiterer Daemon definiert Die Hauptaufgabe des Parsers ist die Monitoring Daten des Clusters m glichst aktuell im Daten Cache zu halten Die Konfiguration des Clusters wird bei der Initialisierung aus der Datenbank gelesen serialisiert und im Cache gespeichert siehe Abbildung 5 4 Darauf folgt die berpr fung welche Ger tedaten im Cache veraltet sind Diese Ger tedaten werden dann wie folgt aktualisiert 1 eine CLI Abfrage wird erstellt und ausgef hrt 2 das Ergebnis der Abfrage wird in ein Hash Objekt geparst 3 das Hash Objekt wird serialisiert und im Cache gespeichert Der Parser wird in der Programmiersprache Ruby implementiert Sollte sich sp ter her ausstellen dass der Parser die Monitoring Daten nicht effizient genug verarbeitet so kann das Parsen in der Programmiersprache C implementiert und in den Appliance Daemon als ein Modul integriert werden 0 JO Om PS Go co 10 11 12 13 14 15 16 17 18 19 46 Kapitel 5 Entwurf eines RESTful Web Services CLI Abfragen ausf hren Das Appliance CLI erm glicht die Kommunikation dur
51. ig und nur unter Verwen dung der angegebenen Literatur und Hilfsmittel angefertigt habe Stellen die w rtlich oder sinngem aus Quellen entnommen wurden sind als solche kenntlich gemacht Diese Arbeit wurde in gleicher oder hnlicher Form noch keiner anderen Pr fungsbe h rde vorgelegt Mittweida 13 Dezember 2011
52. ine Art Tunnel f r alle anderen nicht unterst tzten Methoden hergestellt werden indem ein zus tzliches Feld in das Formular aufgenommen wird Der Webbrowser bermittelt dann die Daten im mer noch mithilfe der POST Methode Auf der Serverseite l sst sich eine Umleitung einrichten die solche Anfragen direkt an die Funktion die auch andere PUT Anfragen bearbeitet weiterleitet Diese L sung wird unter anderem auch von Ruby on Rails ein gesetzt 2 7 Hypermedia Das Konzept der Hypermedia l sst sich beim Surfen im Web gut nachvollziehen Beim Navigieren zwischen den Seiten wird der Zustand einer Anwendung durch das Klicken auf die Hyperlinks oder durch das Ausf llen von Formularen stets ge ndert Hyperme dia ist ein fester Bestandteil der menschlichen Online Aktivit ten und wird nun auch zur Interaktion zwischen den Anwendungen eingesetzt Hypermedia stellt die zentrale Idee der Steuerung des Anwendungszustands beim REST Architekturstil dar Die Verkn pfungen zwischen Ressourcen erlauben die Steuerung und die Kommunikation zwischen verschiedenen Ressourcen Somit kann eine Anwen dung auch ohne Kenntnis der Struktur eines Services an die n tige Ressource gelangen und den Ressourcenstatus ndern Es gibt viele f r Hypermedia geeignete Formate diese k nnen sich in der Realisierung leicht unterscheiden Das bekannteste Format ist XHTML welches durch Hyperlinks die Informationen verkn pft Die Implementierungen in den
53. k devices d rack id rack lt rack id Rack1 gt devices each dev d device id dev lt device id node01 gt lt rack gt lt racks gt Listing 5 7 XML Builder f r Listenressource Racks 5 5 3 XHTML Zur Generierung von XHTML Repr sentationen bietet Rails das Template System ERB an Die ERB Templates sind sehr flexibel einsetzbar und k nnen beliebige Textdateien JSON XML XHTML CSV generieren Dabei wird der Ruby Code hnlich wie bei JSP oder PHP eingebettet siehe Listing 5 8 lt div class rack gt lt h2 gt lt rack id gt lt h2 gt lt rack devices each do device gt lt link to device controller gt m devices action show id device gt lt br gt lt end gt lt div gt Listing 5 8 ERB Template f r die Ressource Racks Die ERB Templates sind jedoch weniger performant als JSON Serialisierung bzw XML Builder Aus diesem Grund wird bei Generierung von XHTML Repr sentationen auf die Einbettung der Monitoring Daten verzichtet Stattdessen werden die Monitoring Daten im JSON Format per AJAX Anfrage nachgeladen und per JavaScript in XHTML trans formiert Bei der Aktualisierung der Monitoring Daten wird die AJAX Anfrage erneut gestartet und es wird gepr ft ob die Daten inzwischen ge ndert wurden HTTP Status 200 OK Ist das der Fall wird die XHTML Repr sentation clientseitig aktualisiert siehe Abbildung 5 6 157 Vgl 31 Kapitel 8 7
54. ksichtigen l Inhaltsverzeichnis Inhaltsverzeichnis Abbildungs und Tabellenverzeichnis Abk rzungsverzeichnis 1 Einleitung LE MONYANG 2 4 002 aa ze a em A ee ee a A 1 2 Problemstellung a 22 2 8 eine Reus Se E en ne AR 1 3 Zielsetzung ir ee al ee zer 1 4 Methodisches Vorgehen 222A 2 REST Architekturstil Zul Wam RESTE Sara ar sun dde er eeh e e Sr Wise ee e a 22 Grundlagen uox ar do E ia E er do A 2 3 RESSOUICEM 4 2 4 2 4 ox ied ad ee ea E e a 2 4 RessourcenidentifiRation nu nn 2 4 1 Absolute URI und relative Referenz 2 4 2 UBI Design ime Remo Ye e ee PUER X X Roe X de we 25 Repr sentationen 2 llle 2 6 NEIDEN uL oa bee Bem Gc XO Go go de er Wed AC ROUEN 2 64 GE Und HEAD x usu 0 4 20 0 wo de a omo nod ES Rd Rs RU 26 2 DELETE und OFTIONS a xe ue am ne dete e tak SR E ie os 26 3 P T e tee ute E e ied dieu oec qm E E O EI A ON BG Gg a ag 2 6 5 Unterst tzung von HTML Formularen 2 1 Hypermedia x e bene Sox bed To bm bie bd ea Sie bes 3 Ruby on Rails 31 Ru by Grundlagen er Hr aan Rem Xo ome Axes baw boo omes Ng PP 3 1 2 Kontroll und Datenstrukturen 3 1 3 Bl cke und Iterationen 2 e 3 2 Rails Grundagen 3 2 1 Projektverzeichnisstruktur und Arbeitsumgebung 3 2 2 Model View Controller 2 4r 3 2 8 Active Record an ENG a ai e E Ga a a NR aa a a a 3 24 Active Resource
55. latz Temperatur und Energieverbrauch zum effektiven Cluster Einsatz bei Auf dem Cluster Markt werden vielf ltige L sungen zum HPC Cluster Management an geboten 129 130 J OSCAR Open Source Cluster Application Resources Rocks Cluster Distribution e SCore Cluster System Software LCFG Local ConFiGuration system DCC Debian Cluster Components Bright Cluster Manager Viele Cluster Managementsysteme bieten jedoch nur beschr nkte Funktionalit t Kon figurierbarkeit und Flexibilit t bzw werden distributions oder herstellerspezifisch entwi ckelt Aus diesem Grund bem ht sich die Megware GmbH um die Entwicklung eigener Cluster Managementprodukte wie ClustWare Appliance 4 4 Megware Cluster Managementsoftware Die ClustWare ist modular aufgebaut und basiert auf anderen Soft und Hardware produkten Die wichtigsten Komponenten sind Appliance Daemon Knoten Daemon Appliance Datenbank Appliance CLI sowie Erweiterungsmodule f r Stapelverarbeitung und Knoten Installation Siehe Abbildung 4 3 129 129 vgl 5 S 162 164 130 Siehe http svn oscar openclustergroup org trac oscar 131 Siehe http www rocksclusters org 132 Siehe http www pccluster org 133 Siehe http www lcfg org 134 Siehe http dcc irb hr 135 Siehe http www brightcomputing com Bright Cluster Manager php 136 ygl 27 S 5 6 und 26 Modul bersicht Kapitel 4 Cluster Management 33 Delegate Queuin
56. m ERB und HTML dar sie erzeugen die HTML Repr sentationen e Vorlagen mit Dateierweiterungen builder oder rxml verwenden f r die Generie rung von XML Repr sentationen die Bibliothek Builder XmlMarkup Es existieren au erdem weitere Erweiterungen und Module zur vereinfachten Generie rung von Repr sentationen wie z B Haml Sass oder JavaScript Helper mit Unterst t zung f r JS Frameworks Prototype und jQuery 3 2 7 Scaffolding Scaffolding vom Englischen f r Grundger st bietet einen schnellen Weg eine daten bankgest tzte Rails Anwendung mittels Meta Programmierung zu generieren Scaffol ding wird bei der Entwicklung und vor allem im Prototyping eingesetzt 116 Beim Scaffolding werden anfangs die Spezifikationen wie Modellnamen und Attribute festgelegt Daraus werden alle n tigen Routen Actions Modelle Views und Tests er zeugt Das Scaffolding Ergebnis ist eine voll funktionsf hige Rails Anwendung 113 Vgl 42 Action Controller Overview 1 What Does a Controller Do 114 vgl 43 Kapitel ActionView Base und 10 S 159 115 vgl 43 Kapitel ActionDispatch http haml1 lang com und http sass lang com 116 gl 10 S 161 und 58 Kapitel 5 1 Einleitung 117 Vgl 10 S 161 und 42 Getting Started with Rails 5 Getting Up and Running Quickly with Scaffolding 28 Kapitel 4 Cluster Management 29 4 Cluster Management Dieses Kapitel bietet einen groben berblick zu Cluster und Clus
57. mat nach M glich keit vorzuziehen Ein standardisiertes Format verstehen ohne weiteres mehr potenzi elle Clients obwohl es meistens nicht optimal zu den Anforderungen einer spezieller Anwendung passt Die meistverbreiteten Repr sentationsformate sind XHTML XML und JSON Wobei Mi kroformate wie hCard hCalendar Nofollow etc in letzter Zeit eindeutig an Bedeutung gewonnen haben Sie erweitern XHTML mit semantischen Annotationen welche leich ter aus Webseiten extrahiert werden k nnen Dies erm glicht den Einsatz von identi schen Formaten f r den Menschen und die Maschine Einen hnlichen Ansatz verfolgt das System RDF Es dient zur Beschreibung von Res sourcen ist jedoch weitaus komplexer und m chtiger als die Mikroformate Das gew nschte Repr sentationsformat wird in dem HTTP Accept Header festgelegt Weiterhin kann die Angabe des Formates auch in der URI erfolgen was den mensch lichen Benutzern sehr entgegen kommt sodass der Webbrowser alle zur Verf gung stehende Repr sentationen aufrufen kann 77 38 Val 53 S 31 39 Vgl 45 S 81 40 Vgl 53 S 82 Vgl 45 S 259 263 42 Vgl 45 S 266 267 43 Vgl 45 S 390 12 Kapitel 2 REST Architekturstil 2 6 Verben Die Ressourcen stellen die Objekte dar mit denen man in der Lage sein soll zu in teragieren Diese Aufgabe bernehmen die Verben welche im Internet durch HTTP Methoden repr sentiert werden 77 Die HTTP Methoden sind in RFC
58. ml rfc3986 Stand 19 08 2011 36 NOKIA CORPORATION Supported Platforms http developer qt nokia com wiki Platform_Support Stand 19 08 2011 37 ORSINI R Rails Kochbuch O Reilly Verlag 2007 38 QT IPHONE COMMUNITY Qt iPhone http www qt iphone com Stand 19 08 2011 39 RAILSCASTS Authentication in Rails 3 1 http railscasts com episodes 270 authentication in rails 3 1 Stand 3 12 2011 40 RAILSCASTS HTTP Basic Authentication http railscasts com episodes 82 http basic authentication Stand 3 12 2011 41 RAILSGUIDES Action Pack On rails from request to response http ap rubyonrails org Stand 19 08 2011 72 Literatur und Quellenverzeichnis 42 RAILSGUIDES Getting Started with Rails http guides rubyonrails org Stand 19 08 2011 43 RAILSGUIDES Ruby on Rails v3 1 1 API Doc http api rubyonrails org Stand 19 08 2011 44 RAUBER T R NGER G Parallel Programming Springer Verlag Berlin Heidel berg 1 Auflage 2010 45 RICHARDSON L RUBY S RESTful Web Services O Reilly Media Sebastopol 2007 46 RODRIGUEZ A RESTful Web services The basics Webseite von IBM devel operWorks http www ibm com developerworks webservices library ws restful Stand 19 08 2011 47 Ruby S THOMAS D HEINEMEIER HANSSON D Agile Web Development with Rails The Pragmatic Bookshelf 2011 48 SKORKIN A Serializing And Deserializing Ob jects With Ru
59. n Web Anwendungen eingesetzt Die Kommunikation mit dem Memcached Server kann entweder ber Unix Domain Socket oder ber die Protokolle TCP UDP stattfinden Die abgespeicherten Daten wer den mit einem eindeutigen Schl ssel versehen und als Zeichenketten im Arbeitsspei cher abgelegt siehe Listing 5 3 148 Vgl 30 und 48 149 Vgl 24 150 ygl 28 15 vgl 29 Configuring Memcached 0 JO Om E ob PO N sch ech sch od oo do ld OO OO OO JO Oo CO nm O oO 48 Kapitel 5 Entwurf eines RESTful Web Services Komplexere Datenstrukturen wie Objekte oder Hashs m ssen im Vorfeld serialisiert wer den Daten k nnen dauerhaft oder zeitweise abgespeichert werden siehe Zeile 17 in Listing 5 3 Bei der Aktualisierung des Cache wird f r jedes Ger t ein Entity Tag Version der Ak tualisierung und ein Zeitstempel der letzten nderung gespeichert Damit wird eine redundante Daten bertragung vermieden Auf die Verwendung des E Tags und des Zeit stempels wird im Kapitel 5 4 2 n her eingegangen require memcached require yajl Verbindung zum Cache Server aufbauen CACHE Memcached new localhost 11211 no block gt true buffer requests gt false noreply gt true binary_protocol gt false Geraet Hash serialisieren device_json Yajl Encoder encode device_hash Geraet im Cache aktualisieren CACHE set device device_hash id json device_json Zeitstem
60. nce EJ nodeo3 node04 4 TestRack4 test75 test76 tear Overview CPU test78 ID appliance Hostname appliance 100 0 5 amp teo Type APPLIANCE Rack Rackl 701 ac testigo PS ES System online Kernel 2 6 18 238 12 1 el5 c El E system test82 State online Uptime 20d 10h 2m 7s CE test83 Wise tests reboot suspend softoff reset poweron power off Ds d d test85 PU Tux ore2 test86 test87 testes Memory Disks 2 memory size 1 96 GB swap size 2 00 GB sdal mount boot size 0 94 GB test90 testol tre testo2 S E E tree GD testoz rae x Bi uses Bi oc Bl aces testos reserved testos m sa testo6 r x Logging ax 19 57 01 Connected to 192 168 1 71 3000 Connected Abbildung 5 8 Qt Benutzeroberflache 5 8 Clients Die Qt Benutzeroberfl che und beliebige Webbrowser werden zurzeit als einzige Cli ents f r den entworfenen Web Service angesehen Da das Web Service die XHTML Repr sentationen anbietet ist es naheliegend sie in einem Webbrowser zu betrachten und zu bedienen Diese M glichkeit bestand jedoch auch vor der Entwicklung dieses Web Services Ein besonderes Interesse stellt die Anbindung an die Qt Benutzeroberfl che Die Be nutzeroberfl che wurde in dem vorangegangenen Praktikum entwickelt und war f r die Kommunikation mit dem Qt Backend vorgesehen Durch die Anpassung der Kommuni kationsschicht der Benutzeroberfl che lassen sich somit
61. nel de netzwerk wan 439222 networked_ computing grundlagen und anwendungen Stand 19 10 2011 26 MEGWARE COMPUTER GMBH ClustWare Appliance Dokumentation unver f fentlichte Entwicklerdokumentation Stand 25 10 2011 27 MEGWARE CoMPUTER GMBH ClustWare Benutzerhandbuch unver ffentlichte Dokumentation August 201 1 Literatur und Quellenverzeichnis 71 28 MEMCACHED DEVELOPERS Memcached a distributed memory object caching system http memcached org Stand 2 12 2011 29 MEMCACHED DEVELOPERS Memcached Wiki http code google com p memcached wiki NewStart tm 6 Stand 2 12 2011 30 MERCIER C YAML ZAML Marshal amp JSON benchmark in Ruby http blog carlmercier com 2010 11 19 yaml zaml marshal json benchmark in ruby Stand 2 12 2011 31 Morsy H OTTO T Ruby on Rails 2 Galileo Computing 2008 http openbook galileocomputing de ruby on rails Stand 19 09 2011 32 NETWORK WORKING GROUP RFC 2616 Hypertext Transfer Protocol HTTP 1 1 http tools ietf org html rfc2616 Stand 19 08 2011 33 NETwoRK WORKING GROUP HFC 2617 HTTP Authentication Basic and Di gest Access Authentication http tools ietf org html rfc2617 Stand 05 12 2011 34 NETWORK WORKING GROUP RFC 2818 HTTP Over TLS http tools ietf org html rfc2818 Stand 05 12 2011 35 NETWORK WORKING GROUP RFC 3986 Uniform Resource Identifier URI Ge neric Syntax http tools ietf org ht
62. net welches die Interoperabilit t zwischen den ver schiedenen Anwendungen im Netzwerk unterst tzt indem die Ressourcen durch deren Repr sentationen mit einer einheitlichen Menge der Standard Operationen manipuliert werden Obwohl die Prinzipien von REST auch mit anderen Protokollen umgesetzt werden k n nen sind nur das WWW mit dem HTTP Protokoll und der URI als Implementierung praxisrelevant HTTP ist das wichtigste Anwendungsprotokoll im WWW welches die Kommunikation zwischen Webserver und Webbrowser im Intranet bzw Internet erm g licht 2 1 Warum REST REST bietet einen einfachen Weg komplexe und unabh ngige Systeme miteinander zu verbinden Die Popularit t von REST w chst seit 2005 st ndig was auch die zahlrei chen Web Services von Google Yahoo Bing Twitter und Flickr belegen Das liegt daran dass REST direkt auf dem HTTP Protokoll basiert und selbst kein zus tzliches Protokoll bzw Standard einf hrt und damit den zus tzlichen Overhead vermeidet So kann REST berall dort angewendet werden wo auch HTTP eingesetzt werden kann 3 Vgl 15 46 und 14 Conclusions Vgl 6 und 15 5 Vgl 52 55 Kapitel 1 4 What is a Web service und Kapitel 3 1 3 Relationship to the WWW and REST Architectures 6 vgl 6 7 vgl 22 8 Vgl 15 6 Kapitel 2 REST Architekturstil Bei manchen kritischen Anwendungen kann das HTTP Protokoll nicht die n tige Effizi enz anbieten hier sollte man evtl auf
63. nfigClassID INT 11 unitlD INT 11 Y pduPortID INT 11 unitlD INT 11 2 more rackID INT 11 L rackName VARCHAR 20 Abbildung 4 4 EER Diagramm Martin Notation angelehnt an ClustWare Datenbankstruktur Kapitel 4 Cluster Management 37 Die Kommandos die z B beim ber oder Unterschreiten von Grenzwerten ausgef hrt werden sollen k nnen ger tespezifisch oder klassenweit in der Tabelle t configcomm and definiert werden Die Tabelle t commandlog f hrt ein Ereignisprotokoll f r alle aus gef hrte Befehle 4 4 4 Benutzeroberfl chen Die n tige Cluster bersicht kann bei einer gro en Anzahl von Knoten ohne Einsatz einer Benutzeroberfl che nicht gew hrleistet werden Aus diesem Grund wurde f r die ClustWare eine spezielle Rails Weboberfl che entwickelt die das Cluster Management effektiver gestaltet Der Einsatz von AJAX wurde im Vergleich zu der fr heren PHP Weboberfl che stark reduziert somit ist eine fl ssige Bedienung auch bei ber 1000 Knoten gew hrleistet Die Kommunikation zwischen der Weboberfl che und dem Appliance Daemon verl uft jedoch weiterhin direkt durch den Aplliance CLI Socket Dies f hrt z B dazu dass bei jeder neuen Anfrage die Knotendaten auf neu geparst werden m ssen Ein API das Zugriffe auf das Appliance CLI und auf die Datenbank kapselt kann die ses Problem l sen Dieser Ansatz wurde bei Entwicklung der Qt Oberfl che verfolgt das Qt Framework wurde dabei
64. ng der Anwendung notwendig sind test Hier werden die Testdateien abgelegt tmp Das ist Verzeichnis f r tempor re Dateien vendor In diesem Verzeichnis befindet sich der Quellcode von Drittanbietern Tabelle 3 1 Projektverzeichnisstruktur einer Rails Anwendung bersetzt und verk rzt aus 42 Getting Started with Rails 3 2 Creating the Blog Application Kapitel 3 Ruby on Rails 23 Haupts chlich wird in der Umgebung Development gearbeitet und beim Durchf hren von Tests in die Umgebung Testing gewechselt Die Umgebung Development bringt einen eingebauten und konfigurierten WEBrick Server und eine SQLite Datenbank mit was den Entwicklungsanfang erleichtert F r die Umgebung Production sollte man auf grund der geringen Performance auf einen anderen Server und auf eine andere Daten bank ausweichen z B auf Apache und MySQL 3 2 2 Model View Controller Ruby on Rails f rdert den Einsatz des MVC Entwurfsmuster somit wird die Entwick lungszeit verringert die Erweiterbarkeit und die Wartbarkeit der Anwendung verbessert Eine Rails Anwendung besteht meistens aus drei relativ unabh ngigen Schichten e Model repr sentiert die Gesch ftslogik einer Anwendung welches alle Funktio nalit ten zur Erf llung des eigentlichen Zweckes zur Verf gung stellt e View k mmert sich um die Pr sentationslogik die aus der Model Schicht stam mende Daten darstellt e Controller stellt die Programmsteuerungsl
65. nicht nur die Performance und die Stabilit t des Web Services berpr fen sondern auch die Komplexit t und Attrakti vit t der Entwicklung mit der fr heren L sung vergleichen Die Qt Benutzeroberfl che ist nun als eine hybride Webanwendung zu betrachten Die Qt Views werden zu einem Teil direkt vom Qt Framework generiert Cluster Rack View und Claster Tree View und zum anderen Teil werden die Views durch AJAX aktualisiert und mithilfe des jQuery Frameworks dargestellt Device View Dadurch wird eine ma ximale Performance erreicht wobei die Layouts in HTML JavaScript und CSS definiert werden k nnen siehe Abbildung 5 8 Kapitel 5 Entwurf eines RESTful Web Services 61 5 9 Benchmarks Zuletzt soll ein API Benchmark erstellt und ausgewertet werden Dabei soll der Einsatz des APIs auf unterschiedlich gro en Cluster Systemen analysiert werden indem die Client Anfragen und die Cluster Gr e auf einem Test Cluster simuliert werden Seitens der Megware Computer GmbH wurde ein Test Cluster f r die Benchmark Tests zur Verf gung gestellt Der Cluster besteht aus 4 Rechenknoten 2 PDUs und einem Appliance Knoten Durch eine Appliance interne Simulation wurde der Knotenanzahl auf knapp 100 erh ht Aus diesem Grund ist von einem Test Cluster mit insgesamt 100 Knoten auszugehen Bei der Benchmark sollten die Cluster mit jeweils 1000 2000 3000 4000 5000 6000 und 7000 Knoten simuliert werden Bei der Simulation soll au erdem der Cli
66. nres source Devices Die Device Listenressource wird durch die Klassen Methoden self alt und self where berechnet Dabei werden nach M glichkeit nur Teilaktualisierungen bzw keine Aktualisierungen durchgef hrt Das soll die Performance des Web Services zu s tzlich verbessern und wird im n chsten Kapitel n her betrachtet Bei der Methode zelt al wird zuerst die Liste aller Ger te ermittelt siehe Zeile 5 in Listing 5 5 Anschlie end werden die aktuellen Monitoring Daten f r jedes Ger t vom Memcached Server abgeholt Holt alle Devices vom Memcached Server ab def self all Holt die Device Liste ab device list Yajl Parser parse CACHE get devices Holt die Monitoring Daten fuer jeden Device aus der Device Liste ab devices device list each lid Vorbereite Memcached Multiget devices lt lt device id json small Q0json array CACHE get devices values each ldev 00json array lt lt dev Memcached Multiget ausfuehren self end Listing 5 5 Erster Auszug aus dem Model MDevice Die Methode self where berechnet zuerst die Liste aller Ger te die seit letzter client seitiger Aktualisierung ge ndert wurden Die Berechnung der letzten Aktualisierungen findet im Restklassenring Zr ng statt Die sinnvolle Tiefe der verfolgten Aktualisierungen wird durch die Konstante UPDA TES DEEP festgelegt Bei berschreitung dieser Tiefe werden alle Ger te aus dem Cache abgeholt Anschlie3end werden
67. ns node01 abfragen appliance nodes get node01 infolist Ausgabe kann wie folgt aussehen gekuerzt node01 boottime 1317469229 node01 cpu 0 idle 99 88333 node01 cpu 0 user 0 41667 node01 disk sdal mountpoint boot node01 disk sdal size 103512064 node01 disk sdal used 12129280 node01 fan 1 10300 node01 fan 2 8800 node01 memory buffer 154169344 node01 memory cached 293863424 node01 memory free 2217013248 node01 network eth0 link state up node01 network eth0 receive bytes 1355 78333 node01 network eth0 transmit bytes 14673 05 node01 pdustate on node01 powersupply 12v 11 712 node01 powersupply 3 3v 3 248 node01 powersupply 5v 4 92 node01 system online node01 temperature system 36 node01 uptime 2019407 node01 user count 0 Listing 4 3 Abfragen der Zustandsinformation eines Knotens 4 4 3 Datenbank Die Datenbank beinhaltet die Informationen ber Ger tezuordnung Benutzerverwal tung und Monitoring siehe Abbildung 4 4 Alle Ger te werden in der Tabelle t unit kon figuriert wobei die Tabelle t configclass die passenden Ger teklassen und die Tabelle t rack das dazugeh rige Rack beinhalten Weiterhin werden in der Tabelle t pduport die Zuordnung von PDU Ports und in der Tabelle t interface die Netzwerkschnittstellen der jeweiligen Ger te konfiguriert In der Tabelle t view wird das Aussehen der Verlaufs Grafiken zu jeder Ger teklasse konfiguriert In der Tabelle t config
68. ntifiziert und gecacht werden kann bzw darf Die letzte Spalte gibt an bei welcher Methode eine Anwendungsinfrastruktur die Semantik und die Bedeutung erkennen und nachvollziehen kann 44 Vgl 57 S 11 45 Vgl 32 Kapitel 9 Method Definitions 46 Vgl 45 S 97 47 Vgl 32 Kapitel 9 1 Safe and Idempotent Methods 9 Die OPTIONS Methode kann laut 32 RFC 2616 Kapitel 9 2 OPTIONS nicht gecacht werden Laut Stefan Tilkov 53 S 54 ist es allerdings m glich falls es explizit angezeigt wird 49 Vgl 53 S 54 Kapitel 2 REST Architekturstil 13 Methode sicher idempotent identifizierbare Cache f hig sichtbare Ressource Semantik GET x x x x x HEAD x x X X X PUT X X X POST OPTIONS X X O x DELETE x x x Tabelle 2 1 HTTP Methoden und ihre Eigenschaften Quelle 53 S 54 2 6 1 GET und HEAD Die wichtigste und meist verbreitete HTTP Methode ist GET Sie ruft die Repr senta tionen der Ressourcen ab die durch die URI identifiziert sind Die HEAD Methode ist der GET Methode sehr hnlich sie liefert jedoch nur Meta Information HTTP Header und keine Repr sentationen HTTP Body zur ck Beide Methoden sind als sicher und idempotent definiert Die GET Methode ist sehr vielf ltig So kann eine bedingte GET Methode conditio nal GET erstellt werden indem man in dem Anfrage Header die Felder If Modified Since If Unmodified Since If Match lf None Ma
69. nvoll die Menge aller Kunden zu identifi zieren indem man eine Listenressource definiert die Listen k nnen auch gefiltert werden indem die Filterkriterien festlegt werden z B alle Kunden aus Chemnitz oftmals k nnen die Listenressourcen sehr gro werden was mit Paginierung sei tenweise Aufteilung gehandhabt wird e Projektionen und Aggregationen sollen die zu bertragende Datenmengen reduziert werden so ist es n tzlich nur eine Attributuntermenge einer Ressource zu bertragen sollen Client Server Interaktionen reduziert werden so kann es angebracht sein die Attribute verschiedener Ressourcen zusammenzufassen e Aktivit ten sind prozessbedingte Ressourcen z B wie Stornierung einer Rech nung oder Aus Einschalten eines Computers Wie bereits erw hnt geh ren die Ressourcen zu dem zentralen Konzept im REST Beim Entwurf stehen die Ressourcen im Mittelpunkt der Betrachtungen und nicht die Methoden wie beim objektorientierten Entwurf Aus diesem Grund werden die RESTful Architekturen auch als ROA Resource Oriented Architecure bezeichnet 16 Vgl 45 S 81 17 Vgl 53 S 36 18 Vgl 45 S 81 1 Vgl 53 S 32 35 20 Vgl 53 S 18 31 32 und 45 S 79 80 8 Kapitel 2 REST Architekturstil 2 4 Ressourcenidentifikation Jede Ressource muss mindestens eine eindeutige Identifikation eine URI besitzen Bei einer URI Universal Resource Identifier handelt es sich um Name und Adresse einer Res
70. oftmals ausreichend sein e Interprozess Netzwerk erm glicht Kommunikation zwischen Prozessen w h rend der Berechnungen hier kommt mindestens 10 Gigabit Ethernet zum Ein satz bei hohen Anforderungen an die Prozesskommunikation ist eine schnellere und latenz rmere Technologie wie InfiniBand mit Daten bertragungsraten mit bis zu 60 Gbit s von Vorteil Das Stromverteilungssystem auch PDU engl power distribution unit genannt sorgt f r die Bereitstellung der Stromversorgung der Knoten Es erm glicht Echtzeit berwa chung von Stromverbrauch Spannung und Stromst rke Intelligent managebare Strom schalter engl intelligent switched PDU bzw intelligent power switch erlauben au er dem koordiniertes und verz gertes Hoch und Herunterfahren von Ger ten sowie Echt zeit berwachung von Umgebungsdaten wie Temperatur und Luftfeuchtigkeit Abh ngig von den Anforderungen k nnen HPC Cluster durch Grafik Prozessoren sym metrische Multiprozessoren Bandlaufwerke und RAID Systeme erweitert werden 127 Vgl 26 Projektdokumentation 128 vo 26 Projektdokumentation 32 Kapitel 4 Cluster Management 4 3 Cluster Managementsysteme Bei steigender Knotenzahl ist der Einsatz eines Cluster Managementsystems nahe liegend Die Installation und Konfiguration eines Clusters werden dadurch stark ver einfacht Au erdem tragen die Benutzerverwaltung und das Monitoring von wichtigen Knoten Parametern wie Auslastung Speicherp
71. ogik dar welche Model und View Schi chte koordiniert und steuert Die strikte Implementierung des MVC Entwurfsmusters in Rails spiegelt sich auch in der Architektur des Rails Frameworks wider Die Rails Komponenten werden in einer hnlichen Weise aufgeteilt um den Entwicklungsprozess optimal zu unterst tzen Das Zusammenspiel von Rails Komponenten zeigt die Abbildung 3 1 Die von Rails verfolgte Strategie wird in folgenden 10 Schritten beschrieben 1 Der Webbrowser Client sendet eine Anfrage an den Webserver 2 Der Webserver leitet die Anfrage an die Komponente Action Dispatch 3 Die Komponente Action Dispatch analysiert die Anfrage bestimmt den verant wortlichen Action Controller und leitet die Anfrage an diesen Controller weiter 4 Action Controller fragt die ben tigten Daten bei der Komponente Active Model nach 5 Active Model fragt die Daten bei der Datenbank ab optional 6 Active Model gibt die Daten dem Action Controller zur ck 7 Die Komponente Action View greift auf die Daten zu und rendert die Vorlage als HTML XML JSON Repr sentation 8 Die Repr sentation wird an Action Controller zur ckgegeben 9 Action Controller leitet die Repr sentation an den Webserver weiter 10 Der Webserver beantwortet die Anfrage mit der Repr sentation 96 Vgl 58 Kapitel 3 1 1 Arbeits Umgebung Development 97 Vgl 10 S 155 157 98 vgl 18 S 49 58 24 Kapitel 3 Ruby on Rails MZA O Webbrowser Cli
72. oher Komplexit t Auch das Model View Controller Entwurfsmuster hat Rails stark beeinflusst sodass die Entwicklung von Ruby Anwendungen meistens in drei voneinander unabh ngigen Schichten stattfindet Rails geh rt au erdem zu den wenigen Frameworks die den REST Architekturstil nicht nur gut unterst tzen sondern auch konsequent umsetzen Bereits ab der Version 2 0 setzt Rails die REST Prinzipien standardm ig um 3 2 1 Projektverzeichnisstruktur und Arbeitsumgebung Beim Anlegen eines neuen Projektes wird eine feste Verzeichnisstruktur incl aller Kon figurationsdateien angelegt siehe Tabelle 3 1 Die gesamte Organisation des Projektes wird somit durch Rails bernommen was die Wartbarkeit von Rails Anwendungen un terst tzt und die Einarbeitungszeit stark verk rzt Rails kennt drei unterschiedliche Umgebungen die Environments genannt werden e Development wird bei Entwicklung eingesetzt alle Fehler werden geloggt und die Debug Information wird zur Auswertung angeboten e Testing wird bei Entwicklung von eigenen Tests eingesetzt die Test Fehler k n nen mitgeloggt werden e Production wird beim produktiven Einsatz verwendet die Debug und Testin formationen werden hier nicht angeboten 91 Vgl 31 Kapitel 1 1 Wie entstand Rails und 37 Kapitel 1 Einf hrung 92 gl 31 Kapitel 6 1 Was ist TDD und 18 3 2 Our First Tests 33 Vgl 54 9 Vgl 31 Kapitel 1 1 Wie entstand Rails 95 Vgl 10
73. on Appliance Clients Abbildung 5 2 Erster Architekturentwurf Um zeitliche Abh ngigkeiten zwischen den Client Anfragen und der rechenintensiven Operationen aufzuheben sollen die Ergebnisse der CLI Aufrufe und des Parsens zwi schengespeichert werden F r diesen Zweck sind die Daten Caches besonders gut geeignet Die hohe Zugriffsgeschwindigkeit sorgt f r die kurze Antwortzeit der Client Anfragen vgl Diagramm 5 1 Memcached Die Schreib und Leseoperationen sind sehr schnell und effizient was in einer schnell aktualisierbaren Umgebung sehr wichtig ist Die Fl chtigkeit des Cache ist dabei unbedeutend da die Daten tempor r sind Dank der neuen Architektur siehe Abbildung 5 2 werden die Daten nur bei der ersten Anfrage berechnet und im internen Daten Cache gespeichert Folgt danach eine gleiche oder eine hnliche Anfrage werden die Daten aus dem Daten Cache zur ckgegeben soweit diese noch aktuell sind Die folgende Rechnung zeigt die Antwortzeit bei der ersten Anfrage als Daten Cache wird Memcached verwendet Antwortzeitzooo RcLi Abfrage RParsen RxML Generierung RMemchached Set 2 3945 3 4465 2 2405 0 0115 8 0915 8 1s Kapitel 5 Entwurf eines RESTful Web Services 43 Die Antwortzeit bei der ersten Anfrage ist unwesentlich angestiegen Bei weiteren Anfra gen entspricht die Antwortzeit der Zeit die f r das Abrufen der serialisierten Monitoring Daten aus dem Daten Cache ben tigt wird
74. oten alle 5 Client Anfragen innerhalb einer Sekunde beantwortet werden k nnen Kapitel 6 Fazit und Ausblick 63 6 Fazit und Ausblick Das Ziel dieser Arbeit war es ein RESTful Web Service API zu erarbeiten Dabei soll te die neue Architektur nicht nur eine hohe Performance sondern auch eine bessere Wartbarkeit und Plattformunabhangigkeit im Vegleich zu Qt basierten L sung aufwei sen Weiterhin sollte der Entwicklungsprozess der auf dem Web Service aufbauenden Endanwendungen effizienter gestaltet werden Als Einf hrung in das Thema wurden die Prinzipien des REST Architekturstils der Auf bau und die Funktionsweise eines Clusters sowie der modulare Aufbau der Megwa re Cluster Managementsoftware n her betrachtet Weiterhin wurde das Ruby on Rails Framework als Grundlage f r die Implementierung untersucht Der REST Architekturstil wurde als Fundament zur Realisierung der neuen Architektur ausgew hlt Aufgrund der Vermutung dass diese Architektur kaum an die Leistungsf higkeit einer Qt basierten L sung heranreichen kann wurde beim Entwurf besonders gro er Wert auf die Performance und Skalierbarkeit des APIs gelegt Darauf aufbauend wurde das Web Service API ansatzweise implementiert wobei die einzelnen Programmschichten wie Parser Modell Controller und View durch alle Ebe nen hindurch umgesetzt wurden Weiterhin wurde die Qt Benutzeroberfl che an die neue Architektur angepasst was die Analyse der Performance und die Bewert
75. pel der letzter Aenderung setzen modified Time now getutc CACHE set device device_hash id modified modified ETag fuer 4 Minuten setzen CACHE set device device_hash id etag etag 240 Listing 5 3 Cache aktualisieren 5 4 Ressourcen und Routen Die Funktionalitat des Web Service API wird auf die Ressourcen abgebildet siehe Ta belle 5 2 Die Ressourcen werden in 2 Bereiche unterteilt Die Primarressourcen aus dem Monitoring Bereich sind Racks Devices und Jobs Die Primarressourcen aus dem Konfigurations Bereich sind Racks Devices und PDUs Alle Primarressourcen stellen entsprechende Listenressourcen die nur eine Attribut untermenge der Primarressourcen beinhalten bereit Die Monitoring Primarressource Devices besitzt die Subressource Charts Die Aktivitatsressourcen Tickets und Meldun gen stellen die prozessbedingten Ressourcen dar welche auch als Subressourcen bei Monitoring Prim rressourcen Devices und Racks betrachtet werden k nnen Bei allen Ressourcen wird vorerst auf das Filtern und Paginierung verzichtet 152 ygl 29 What Memcached Is Kapitel 5 Entwurf eines RESTful Web Services 49 Ressource Methode GET PUT DELETE Listet Links zu den Ressourcen auf racks Listet alle Racks auf racks id Zeigt den Rack mit der ID id an devices Listet alle Devices auf devices id Zeigt den Device mit de
76. r ID id an devices id charts Zeigt das Device cid Diagramm mit der DevicelD id und der ChartID cid an jobs Listet alle Batch Jobs auf jobs id Zeigt den Batch Job Andert den Batch L scht den Batch mit der ID id an Job mit der ID id Job mit der ID id tickets Listet alle Tickets auf tickets id Zeigt den Ticket mit der ID id an alerts Listet alle Meldungen auf config Listet Links zu den Konfigurations ressourcen auf config devices Listet alle Devices auf config devices fid Zeigt den Device mit ndert den Device L scht den Device der ID id an mit der ID id oder mit der ID id f gt einen neuen Device mit der ID id hinzu config racks Listet alle Racks auf config racks id Zeigt den Rack mit ndert den Rack mit L scht den Rack mit der IDzid an der ID id oder f gt der ID id einen neuen Rack mit der ID id hinzu config pdus Listet alle PDUs auf config pdus fid Zeigt die PDU mit ndert die PDU mit L scht die PDU mit der ID id an der ID id oder f gt der ID id eine neue PDU mit der ID id hinzu config users Listet alle Benutzer auf config users id Zeigt den Benutzer ndert den Benutzer L scht den Benutzer mit der ID id an mit der ID id Tabelle 5 2 Ressourcen und ihre Routen mit der ID id 4 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 50 Kapitel 5 Entwurf eines RESTful Web Services
77. rbare Architektur relativ leicht integrierbar da sie f r diesen Zweck entsprechende Mittel bereitstellen 194 Es ist schwierig die richtigen Aussagen ber die Skalierbarkeit des Appliance Daemons zu treffen da das System bei der Entwicklung nicht prim r f r die Skalierbarkeit aus gelegt war Dennoch besitzt der Appliance Daemon eine beachtliche Kapazit t sodass ein Cluster mit sch tzungsweise bis zu 10000 Knoten verwaltet werden kann Wird das Appliance CLI neben dem Unix Socket auch den Internet Socket f r die Kommunikati on zur Verf gung stellen so wird der Skalierbarkeit nichts mehr im Wege stehen siehe Abbildung 5 7 164 Vgl 9 Kapitel 2 Concepts of Server Load Balancing 50 und 16 60 Kapitel 5 Entwurf eines RESTful Web Services MainWindow EE File Window Help Cluster overview 8 caster 4 Rackl er Rack Test TestRackl TestRack2 TestRack3 TestRackd apati appliance apal O test100 O testl test25 test50 test75 2 clustsafe01 appliance testl0 test26 testsl test76 node01 clustsafe01 testi test27 test52 test77 nodeo2 node01 testl2 test28 test53 test78 node node02 testi3 test29 test54 test79 2 Ge 8 node03 tests test30 test55 test80 ge nodeos testis test31 test56 testi ach ra testi6 test32 test57 O test82 TestRack2 ES te E tect22 GB tectsR Di tectR2 TestRack3 applia
78. rms Stand 04 10 2011 3 ANDROID LIGHTHOUSE COMMUNITY Qt for Android http code google com p android lighthouse Stand 19 08 2011 4 kel APIDocK NODETA Authenticate or request with http basic http apidock com rails ActionController HttpAuthentication Basic ControllerMethods authenticate_or_request_with_http_basic Stand 3 12 2011 5 BAUKE H MERTENS S Cluster Computing Springer Verlag Berlin Heidelberg 1 Auflage 2006 6 BAYER T REST Web Services Webseite von Orientation in Objects GmbH http www oio de public xml rest webservices htm Stand 19 08 2011 7 BELLER S Praktikumsbericht Entwicklung einer Qt basierten grafischen Benut zeroberfl che f r die Megware Cluster Managementsoftware Technischer Bericht Hochschule Mittweida 201 1 8 BoNGERS F VOLLENDORF M jQuery Das Praxisbuch Galileo Press Bonn 2010 9 BOURKE T Server Load Balancing O Reilly Media Sebastopol 2001 10 CARL D Praxiswissen Ruby on Rails O Reilly Verlag 2007 11 CARNEIR C AL BARAZI R Beginning Rails 3 Apress 2010 12 FAUSER C MACAULAY J OCAMPO GOODING E GUENIN J Rails 3 in a Nutshell O Reilly Verlag 2010 http ofps oreilly com titles 9780596521424 Stand 29 09 2011 13 FERNANDEZ O THE RAILS 3 WAY Addison Wesley 2011 70 Literatur und Quellenverzeichnis 14 FiELDING R T Architectural Styles and the Design of Network based So
79. roller ansatzweise implementiert werden Idealerweise soll ein bestimmter Teil des Sys tems durch alle Ebenen hindurch implementiert werden um die Qualit ten wie Perfor mance oder Datendurchsatz durch eine Anbindung an die Qt Oberflache praxisnah zu berpr fen Eine umfangreichere Funktionalit t soll das Programm sp ter erweitern Es muss bemerkt werden dass die Performance eines auf dem Web Service basierten API kaum an die Performance einer Qt basierten L sung heranreichen kann Trotzdem ist dieser Nachteil durchaus vertretbar da dadurch eine bessere Plattformunabh ngig keit und Wartbarkeit erreicht werden kann Ein weiterer wichtiger Faktor ist der Durchsatz Damit die zu erarbeitende L sung auch mit steigender Last nicht kollabiert soll die neue Architektur gleich von Anfang an auf eine h here Skalierbarkeit ausgelegt werden Siehe Qualit tsmerkmale nach ISO 9126 im Anhang A Kapitel 1 Einleitung 3 1 4 Methodisches Vorgehen Die vorliegende Arbeit besteht aus einem theoretischen und einem praktischen Teil In dem theoretischen Teil wird eine Literaturrecherche durchgef hrt und eine einheitliche Begriffsbasis f r die Technologien REST und Ruby on Rails geschaffen Weiterhin sorgt ein kurzer berblick zu den Themen Cluster und Cluster Managementsysteme f r ein besseres Verst ndnis der Problematik dieser Arbeit In dem praktischen Teil wird die Megware Cluster Managementsoftware n her betrach tet und ausschni
80. seitens Nokia sondern nur Community Portierungen im Alpha Stadium vgl 3 und 38 2 Kapitel 1 Einleitung 1 2 Problemstellung Da die Cluster Managementsoftware kein produktionsreifes API besitzt ergeben sich folgende Probleme e direkte Kommunikation mit dem Appliance Daemon ber das Appliance CLI ver ursacht viele berfl ssige Anfragen e jeder Client Weboberfl che Qt GUI TFT Bedienpanel RackView implementiert einen eigenen Parser dies erh ht die Komplexit t und Fehleranf lligkeit der En danwendungen e flache Lernkurve erschwert die Entwicklung weiterer Anwendungen die auf die Daten der Cluster Managementsoftware zugreifen Der Entwurf eines neuen API f r die Megware Cluster Managementsoftware soll somit die Defizite bei der Client Server Kommunikation beseitigen Da das Qt Framework eine plattformunabh ngige Kommunikation nur sehr bedingt er m glicht soll eine neue Architektur erarbeitet werden welche leicht an die bestehenden L sungen anpassbar und durch neue Module erweiterbar ist Dadurch soll die Entwick lung leichter moderner und attraktiver werden 1 3 Zielsetzung In dieser Arbeit soll ein Web Service API ausgearbeitet werden welches auf der REST Architektur basiert Ferner soll berpr ft werden inwieweit diese Architektur f r die API Entwicklung geeignet ist und wie hoch ihre Leistungsf higkeit ist Hierbei sollten insbesondere einzelne Programmschichten wie Parser Modell und Con t
81. source Die URI wird f r die Identifikation von Ressourcen im WWW eingesetzt Besitzt ein Teil der Information keine URI so stellt das keine Ressource dar sondern h chstens einen Teil einer Ressource Eine URI besteht aus 5 folgenden Komponenten Schema Authority Path Query und Fragment siehe Abbildung 2 1 https luser pass myserver com 8000 systemlaccount id 596 contact Schema Authority Path Query Fragment Abbildung 2 1 Aufbau einer URI Das Schema befindet sich am Anfang der URI und ist f r die Interpretation der folgen den Komponenten wichtig F r RESTful Web Services sind nur die URI Schemata http und https von Bedeutung Das erste Schema deutet auf eine unverschl sselte und das zweite Schema auf eine ber SSL TLS verschl sselte HTTP Verbindung hin Darauf folgt die Authority Komponente mit optionaler Benutzerinformation einem Host namen und ebenfalls optionalem Port Die optionale Angabe eines Passwortes in der Benutzerinformation ist veraltet und sollte nicht mehr verwendet werden da diese Infor mationen im Klartext bertragen werden Der Path Pfad enth lt Angaben die meist hierarchisch organisiert sind Er identifiziert die Ressourcen vollst ndig oder teilweise zusammen mit Query Komponente die ein zelnen Path Elemente werden durch Schr gstriche getrennt 7 Die optionale Query Komponente Abfrage Komponente enth lt Angaben die nicht hierarchisch organisiert sind Sie identifizier
82. t die Ressourcen zusammen mit der Path Komponente und wird mit einem Fragezeichen eingeleitet 9 Gem RFC 3986 ist die Auswertung von Query Inhalt anwendungsabh ngig So wer den h ufig die Schl ssel Wert Paare zur Identifizierung von Ressourcen verwendet 21 Vgl 45 S 81 22 Vgl 35 Kapitel 3 Syntax Components 23 Vgl 53 S 38 24 gl 35 Kapitel 3 2 Authority 25 Vgl 35 Kapitel 3 3 Path 26 Vgl 35 Kapitel 3 4 Query Kapitel 2 REST Architekturstil 9 Die Paare werden durch das Kaufmanns Und A verkettet 2 Als Alternative zur Query Komponente kann man Matrixparameter verwenden Die Pa rameter werden durch das Semikolon verkettet Statt Semikolon kann auch ein Komma f r Verkettung von Parametern verwendet werden falls die Ordnung von bergebenen Werten wichtig ist Die Verwendung von Matrixparameter bzw kommagetrennter Para meter kann in folgenden F llen sinnvoll sein e Zwischenspeichern von Ressourcen durch Proxy Server die URIs mit Query Komponente werden durch einige Proxy Server nicht zwischengespeichert e bergabe von booleschen Werten http example com customers descending e Festlegung einer Untermenge http example com users start 100 e bergabe von Parameter in der Mitte von Hierarchien http example com earth 50 59 12 59 Mittweida Weder die Schl ssel Wert Paare noch die Matrixparameter oder die kommagetrenn ten Parameter sind in HTTP oder URI
83. tch oder If Range definiert Das If Modified Since Feld teilt z B mit dass eine Repr sentation zur ckgeliefert werden soll falls die Ressource seit dem definierten Datum ge ndert wurde Falls die GET oder HEAD Anfrage ordnungsgem verl uft wird der HTTP Ergebnisco de 200 OK mit der Repr sentation bzw mit der Meta Information einer Ressource zu r ckgeliefert Bei einer If Modified Since GET Anfrage kann HTTP Ergebniscode 304 Not Modified zur ckgeliefert werden falls die Ressource seit dem definierten Datum nicht aktualisiert wurde P Obwohl die GET Methode als sicher und idempotent definiert ist l sst sich das Ver halten in einer eigenen Applikation fast beliebig anpassen sodass die Semantik nicht mehr erkennbar ist Daraus k nnen sich weitreichende Nachteile ergeben welche die Vorteile des REST Architekturstils zunichtemachen 50 Ygl 53 S 49 52 5 Vgl 32 Kapitel 9 3 GET 52 Vgl 32 Kapitel 10 2 1 200 OK und Kapitel 10 3 5 304 Not Modified 53 Vgl 53 S 50 14 Kapitel 2 REST Architekturstil 2 6 2 DELETE und OPTIONS Die DELETE Methode ist nicht als sicher aber als idempotent definiert Sie ist f r das L schen einer Ressource zust ndig Wird der HTTP Ergebniscode 200 OK 204 No Content oder 204 Accepted zur ckgeliefert so wurde oder wird die Ressource ge l scht Die OPTIONS Methode liefert die Meta Information ber eine Ressource zur ck
84. ter Managementsoft ware an Anschlie end wird die Megware Cluster Managementsoftware n her be trachtet und analysiert Dieses Kapitel basiert auf den Kapiteln 2 3 und 5 aus dem Praktikumsbericht Ent wicklung einer Qt basierten grafischen Benutzeroberfl che f r die Megware Cluster Managementsoftware 7 Die fr heren Darlegungen und Analysen wurden f r diese Arbeit allerdings weitestgehend erweitert und berarbeitet 4 1 Grundaufbau eines Clusters Ein Cluster vom Englischen f r Gruppe Schwarm oder Haufen kann sehr unter schiedlich aufgebaut sein die Cluster Grundkomponenten sind jedoch immer gleich So besteht ein Cluster aus einer Ansammlung von mindestens 2 Knoten auch Nodes engl genannt Die Knoten arbeiten parallel und ihre Prozesse kommunizieren ber ein Netzwerk Siehe Abbildung 4 1 Die Knoten werden unterschieden in Server Knoten engl server nodes und Rechen knoten engl compute nodes Die Server Knoten sind f r Zugriff Verwaltung Lastver teilung etc zust ndig Die Rechenknoten verrichten die eigentliche Rechenarbeit und werden oftmals einfach als Knoten bezeichnet Als Netzwerk kommt meistens ein geswitchtes Hochgeschwindigkeitsnetzwerk mit Stern Topologie zum Einsatz Abh ngig von dem Einsatzszenario und der Auslastung k nnen andere Netzwerktechnologien besser geeignet sein Die Anforderungen sind von dem Einsatzfeld des Clusters und von der Problemstellung abh
85. tionalit t x Richtigkeit X e nteroperabilit t X Sicherheit X e Ordnungsm Rfigkeit X Zuverl ssigkeit A Reife A Fehlertoleranz X Absturzsicherheit e Konformit t X Benutzbarkeit X e Verst ndlichkeit X e Erlernbarkeit X e Bedienbarkeit X Attraktivit t A Effizienz A e Zeitverhalten X Antwortzeit 5 10 Sek e Verbrauchsverhalten X CPU Entlastung nderbarkeit X Analysierbarkeit X e Modifizierbarkeit X Stabilit t X e Testbarkeit X bertragbarkeit X e Anpassbarkeit X Installierbarkeit X e Koexistenz X e Austauschbarkeit X 66 Anhang B Verwendete Werkzeuge 67 Anhang B Verwendete Werkzeuge Entwicklungsumgebung e Ubuntu 11 10 e Microsoft Windows 7 e Ruby 1 9 3 e Ruby on Rails 3 1 0 e Nokia Qt SDK 4 7 1 e Nokia Qt Creator 2 3 1 e Oracle MySQL Workbench 5 2 36 e JetBrains RubyMine 3 2 4 Dokumentation IATEX und IATEX Vorlagen von Prof Klaus Dohmen Texmaker 3 1 Doxygen 1 7 4 RDoc 3 11 yWorks yEd 3 8 Test Umgebung e Megware Test Cluster 4 Rechenknoten 2 PDUs 1 Appliance Knoten 1 Rack View 1 Rack Management Modul e Thin Ruby Webserver 1 3 0 e Apache Benchmark Tool 2 0 40 68 Literatur und Quellenverzeichnis 69 Literatur und Quellenverzeichnis 1 ALLAMARAJU S RESTful Web Services Cookbook O Reilly Media Sebastopol 2010 2 AMUNDSEN M Supporting PUT and DELETE with HTML FORMS http amundsen com examples put delete fo
86. ttsweise analysiert Anschlie end sind ein erster Entwurf des RESTful Web Services zu entwickeln und verschiedene Skalierungsm glichkeiten zu diskutie ren Wichtige Sicherheitsaspekte sollen dabei betrachtet und zum Teil implementiert werden Abschlie end wird auf die erstellten Prototypen eingegangen und die Benchmarks wer den ausgewertet Zuletzt werden die gewonnene Erkenntnisse zusammengefasst und die Aussichten vorgestellt Kapitel 2 REST Architekturstil 5 2 REST Architekturstil Motiviert durch den technischen Erfolg des WWW wurde der Begriff REST Represen tational State Transfer erstmals von Roy Fielding in seiner Doktorarbeit aus dem Jahr 2000 formuliert In dieser Arbeit versucht der Autor die wichtigsten architektonischen Prinzipien des WWW zu verstehen und zu erfassen um diese dann in web hnlichen Architekturen richtig anwenden zu k nnen Allgemein versteht man unter REST einen abstrakten Architekturstil welcher beschreibt wie die Standards in einer gerechten Weise f r die Entwicklung von verteilten Hyperme dia Systemen eingesetzt werden sollen REST ist kein Standard bzw keine Technologie Man sollte REST als eine Anleitung bzw Referenz f r die Entwicklung von Webanwendungen betrachten Die Architektu ren die sich an dem REST Architekturstil orientieren und deren Regeln befolgen wer den somit als RESTful bezeichnet Als RESTful Web Service wird ein eindeutig identifi zierbares Software System bezeich
87. ung der Praxistauglichkeit erm glichte Die positive Resonanz und die kurze Entwicklungszeit zeigten dabei dass bei der Qt Benutzeroberfl che der richtige Ansatz gew hlt wurde und die Entwicklung durch die Umstellung auf das Web Service API merkbar verein facht wurde Zuletzt wurden die Benchmarks ausgewertet Diese haben gezeigt dass das Web Ser vice API eine hohe Performance aufweist was durch die Skalierung und Optimierung der bestehenden Appliance Architektur erreicht wurde Damit wurde best tigt dass das RESTful Web Service API alle am Anfang formulierten Anforderungen erf llt Gleichzeitig haben die Benchmark Tests und die Anbindung der Qt Benutzeroberflache auch de momentanen Grenzen des API gezeigt So muss z B die Parser Stabilit t verbessert und das API durch weitere Funktionalit t wie Benutzerverwaltung erweitert werden Im Hinblick auf die Zukunft bietet sich an dieses API bei der Entwicklung von neuen Benutzeroberfl chen f r Smartphones und Tablets einzusetzen Zurzeit wird auch an einer neuen RackView Benutzeroberfl che gearbeitet die auf das entwickelte API mit hoher Wahrscheinlichkeit zugreifen wird Somit kann man von einer Weiterentwicklung des RESTful Web Service API ausgehen 64 Anhang A Qualit tsmerkmale nach ISO 9126 65 Anhang A Qualit tsmerkmale nach ISO 9126 Qualit tsmerkmale wichtig normal unwichtig Notizen Funk
88. urce erstellt 2 6 4 POST Die POST Methode ist weder als sicher und noch als idempotent definiert Sie hat im Wesentlichen zwei Einsatzfelder 54 Vgl 53 S 53 und 32 Kapitel 9 7 DELETE 55 Vgl 32 Kapitel 9 2 OPTIONS 56 ygl 53 S 52 57 Vgl 53 S 52 58 Vgl 32 Kapitel 9 6 PUT und Kapitel 10 2 2 201 Created 59 Vgl 45 S 99 Kapitel 2 REST Architekturstil 15 e REST konformes Anlegen einer neuen Ressource e eine an den RPC Stil angelehnte Verwendung wobei die Methode berladen wird dadurch kann eine beliebige Verarbeitung angesto en werden Die Methode POST kann genauso wie PUT f r das Anlegen einer neuen Ressource verwendet werden Dabei wird im Gegensatz zu der PUT Methode eine untergeordnete Ressource erstellt welche nur in Bezug auf eine andere Eltern Ressource existiert Die Anfrage enth lt nur die URI einer Eltern Ressource und keine Ressource URI da diese unbekannt ist Die Ressource URI wird erst durch den Server bestimmt und dem Client mitgeteilt Der wichtigste Unterschied zwischen PUT und POST ist folgender e die PUT Methode wird verwendet falls der Client die neue URI kennt bzw selbst generieren kann e die POST Methode wird verwendet falls der Client die neue URI nicht kennt und nicht generieren kann der Server ist dann f r die Generierung einer neuen URI zust ndig Das zweite Einsatzfeld von POST ist sehr allgemein und kommt aus dem RPC Stil her
89. ute bis sehr gute Performance e einfacher Syntax e geringer Overhead Aus diesem Grund wird JSON beim Zwischenspeichern von Monitoring Daten im Cache verwendet und sollte nach M glichkeit auch bei den Clients bevorzugt werden Weiterhin wird auf das erneute Parsen und Encodieren von Monitoring Daten in der View Schicht verzichtet was f r zus tzliche Performance Verbesserungen bei der bermittlung von JSON Repr sentationen sorgt Um Verbesserungen der Performance zu erreichen wurde das MVC Architekturmuster von Rails nicht strikt umgesetzt sodass der JSON View teilweise in den Parser ausge lagert wurde 5 5 2 XML Als ein weiteres Repr sentationsformat wird XML angeboten XML ist eine Auszeich nungssprache welche die Daten in einer hierarchisch strukturierten Textform darstellt Das XML Format ist weit verbreitet und ist genauso plattformunabh ngig und gut unter st tzt wie JSON Es besitzt jedoch einen relativ hohen Overhead und wird in Ruby nicht so effizient wie JSON verarbeitet 155 vgl 20 156 Vgl 56 OO OO Jo Oo P OON NOOR WD Kapitel 5 Entwurf eines RESTful Web Services 55 Zum Generieren von XML Repr sentationen wird die XML Builder Bibliothek eingesetzt Mit einem XML Builder lassen sich die XML Dateien mit einem einfachen Ruby Code generieren siehe Listing 5 7 1957 xml instruct lt xml version 1 0 encoding UTF 8 gt xml racks d lt racks gt racks racks eachf rac
90. uthentifiziere den Benutzer def authenticate authenticate or request with http basic ClustWare Administration do username password Den Benutzer finden und den Passwort ueberpruefen user User find_by_name username user has_password password end end end Listing 5 9 Basic Authentication bei ApplicationController 159 Vgl 42 Action Controller Overview 10 HTTP Authentications und 39 160 vgl 40 und 4 58 Kapitel 5 Entwurf eines RESTful Web Services Weiterhin bietet Ruby on Rails ganze Frameworks wie Authlogic oder Device an wel che die Aufgaben der Authentifizierung und der Autorisierung bernehmen an Die se Frameworks ziehen jedoch weitreichende Ver nderungen der bestehenden Sicher heitsstruktur nach sich sodass alle ClustWare Anwendungen angepasst werden m ss ten 161 5 6 2 Verschl sselte Daten bertragung Ein gro er Nachteil der Basic Authentication ist dass der Benutzername und das Pass wort im Klartext bertragen werden Dagegen setzt die Digest Access Authentication bei der bertragung der Zugangsdaten eine Hashfunktion ein sodass das Passwort nicht rekonstruiert werden kann Leider sind beide Methoden nicht gegen Man in the middle Angriff gesch tzt was in beiden F llen zus tzliche Sicherheitsma nahmen er fordert 162 Die komplette Verschl sselung der Kommunikation zwischen Client und Server wird dabei als eine ausreichende Ma nahme angesehen Bereits vor der
91. weder vollst ndig auf dem Client gehalten werden oder als eine eigene Ressource auf dem Server hinterlegt werden vgl 6 10 Vgl 53 S 9 11 Vgl 53 S 31 12 Vgl 53 S 31 und 45 S 81 13 Vgl 53 S 10 11 und 45 S 94 14 Vgl 53 S 11 13 15 Vgl 53 S 15 und 45 S 217 218 Kapitel 2 REST Architekturstil 7 2 3 Ressourcen Allgemein gilt im REST alles als Ressource was referenziert werden soll Falls man etwas verlinken repr sentieren bearbeiten oder auflisten kann dann soll dies ebenfalls als eine Ressource definiert werden Die Ressourcen kann man mit den Objekten aus der objektorientierten Programmierung vergleichen mit dem Unterschied dass die Ressourcen viel langlebiger sind und deren Geltungsbereich viel gr er ist Die Definition einer Ressource ist sehr abstrakt So k nnen einige Ressourcen auf der Festplatte gespeichert werden andere Ressourcen sind wiederum physischer oder ab strakter Natur und lassen sich nur bedingt speichern Hier sind einige Beispiele e ein Weblog Eintrag vom 06 06 2006 e ein SciFi Buch Der W stenplanet von Frank Herbert Heyne Verlag 2001 e ein Flugzeug Airbus A380 Baujahr 2007 Weiterhin k nnen die Ressourcen in unterschiedliche Kategorien unterteilt werden e Prim r und Subressourcen die Prim rressource Kunde kann z B mit einer Subressource Adresse assoziiert werden e Listen und Filter es ist oftmals sin
92. zust ndig Ein Frontend Knoten ist f r Anmeldung und Stapelverarbeitung verantwortlich 124 Die Stapelverarbeitungssysteme engl batch systems werden f r die optimale Auftei lung der Rechenlast gebraucht Das Stapelverarbeitungssystem nimmt die Rechenauf tr ge engl batch jobs entgegen und verteilt diese an die Rechenknoten weiter Die Nutzer m ssen sich jedoch vorher an dem Frontend Knoten anmelden um Rechenauf tr ge vergeben zu k nnen Das Netzwerk besteht aus 3 unabh ngigen Netzwerk Komponenten 128 123 Vgl 23 S 170 171 124 Ygl 5 S 52 125 Vgl 5 S 151 126 ygl 26 Projektdokumentation Kapitel 4 Cluster Management 31 Service Switch ll Power Switch Management System ATI 5 Administrator MEI lt E Benutzer Frontend node01 ams J Interprozess Switch node04 Service Netzwerk PMI Netzwerk nterprozess Netzwerk Abbildung 4 2 Beispiel eines HPC Clusters mit 4 Knoten Vgl 26 Projekt Dokumentation e Service Netzwerk stellt Dienste zum cluster bergreifenden Management bereit Managementsysteme benutzen es zur Durchf hrung von Installationen und War tung es kommt meistens 1 Gigabit bzw 10 Gigabit Ethernet zum Einsatz e PMI Netzwerk dient dem Management und Monitoring einzelner Knoten es er m glicht unter anderem Ein Ausschalten BIOS Zugriff und Sensoren berwach ung f r diesen Zweck kann 100 Megabit Ethernet
Download Pdf Manuals
Related Search
Dokument_1. dokument 1 word dokument 1 microsoft word
Related Contents
Bedienungsanleitung Tapemaster Digital+ Musclez vos cultures Télécharger (pdf - 6.7 Mo) (BULLETIN N° 207 Octobre 2014) Home Decorators Collection 0807000970 Instructions / Assembly Manual – MAIA PRIDES Bâtiments Durables Méditerranéens Copyright © All rights reserved.
Failed to retrieve file