Clusterbau
Motivation
• IaaS stellt APIs zur Automatisierung 
bereit 
• Verständnis der zu automatisierenden 
Aufgaben gewinnen
Software im Netz
Der Klassiker 
- 
Ein Server, eine App
• Betriebssystem = Linux 
• Webserver = Apache 
• Datenbank = MySQL / Postgres 
• App Deployment
• Alles auf einem Server = SPOF 
• App 
• Datenbank 
• Dateien (z.B. Profilbilder von 
Benutzerprofilen)
DB 
APP 
Files
• Eine Komponente fällt aus 
⇒ Ausfall des Gesamtsystems 
• Wenn die Last zu groß wird, schnelle 
Skalierung nicht möglich.
Zwei Server, 
App / DB Server getrennt
APP 
Files 
DB
• Erfahrungswert: einer der Server 
langweilt sich 
> Suboptimale Lastverteilung 
• Fällt eine Komponente aus, fällt das 
gesamte System aus. 
• Kein Schutz vor Datenverlust.
2-4 Server, 
App / DB Server getrennt, 
LB, DB Replikation
APP 
NFS SRV 
Mount 
APP 
NFS Mount 
Slave 
DB 
Master 
DB 
Load 
BalaLnoceard 
Balancer
• Load Balancer verteilt Anfragen 
• Pacemaker benötigt für 
• LB Failover 
• DB Failover 
• NFS Failover 
• Volle Redundanz erreichbar 
• Aufwändige Einrichtung
Das erste Scale-Out hin zur Redundanz 
bringt die meisten Herausforderungen 
mit sich.
Ab hier ist die 
Skalierung der App 
einfach.
APP 
NFS SRV 
Mount 
APP 
NFS Mount 
Slave 
DB 
Master 
DB 
Load 
BalaLnoceard 
Balancer 
APP 
NFS Mount 
APP 
NFS Mount 
APP 
NFS Mount
• RDBMS skalieren oft nur vertikal 
• Skalierbarkeit und Robustheit wird 
durch die Auswahl der (Persitenz)- 
Dienste wesentlich mitbestimmt. 
• NFS Server 
• skalieren schlecht 
• Hochverfügbarkeit nicht inhärent
APP 
NFS Server 
NFS SRV 
Mount 
APP 
NFS Mount 
Slave 
DB 
Master 
DB 
Load 
Balancer 
Elastic 
Search 
Server 
RabbitMq 
Starling 
RabbitMq 
Starling 
RabbitMq 
Starling 
... 
RabbitMq 
Starling 
... 
... 
... 
APP 
NFS Mount 
APP 
NFS SRV 
Mount 
APP 
NFS Mount 
APP 
NFS SRV 
Mount 
Load 
Balancer 
iSCSI 
Storage 
Servers 
iSCSI 
Storage 
Servers 
iSCSI 
Storage 
Servers 
Swift 
Storage 
Servers 
Yuhuu! 
Elastic 
Search 
Server 
Elastic 
Search 
Server
Begriffe der Skalierung
Horizontale Skalierung 
= 
Mehr Hardware
Vertikale Skalierung 
• Einen besseren Server als den Besten 
gibt es nicht. 
• = Begrenztes Wachstum 
• Nicht-linearer Kostenverlauf
Vertikale Skalierung 
= 
Bessere Hardware
Vertikale Skalierung 
• Mehr RAM 
• Mehr CPUs 
• Mehr und schnellere Festplatten 
• 10 GBit/s LAN 
• Bond LANs 
• etc.
Systeme mit hohem 
Lastvorkommen sollten 
auf horizontale Skalierung 
ausgelegt werden.
Deployment
Deployment 
• Deployments werden mit steigender 
Systemkomplexität zur Herausforderung 
• Deployment-Werkzeuge notwendig 
• Capistrano 
• PaaS 
• CI/CD
Installations- 
Automatisierung
Installationsautomatisierung 
• Skalierbarkeit und Selbstheilung 
erfordern eine möglichst vollständige 
Installationsautomatisierung 
• Populäre Technologien für HW Cluster 
• Puppet 
• Chef
Puppet
https://docs.puppetlabs.com/ 
learning/
Chef
http://learn.getchef.com 
https://www.youtube.com/watch?v=S5lHUpzoCYo
Bosh
http:// 
docs.cloudfoundry.org/bosh/
Pacemaker
• Überwacht und Repariert Anwendungen 
und Dienste (z.B. Datenbanken, Load Balancer, etc.) 
• Konfigurierbare Quorum-Strategien 
• Unterstützt viele Clustertypen
Storage
Warum NFS keine Lösung ist
• Kapazität skaliert schlecht horizontal 
• Performance skaliert schlecht horizontal 
• Keine Ausfallsicherheit aufgrund 
fehlender Redundanz
Arten von Storage
• Block Storage 
• Remote Filesystem 
• Object Storage
• GlusterFS (block, filesystem) 
• Ceph (block, object, filesystem) 
• OpenStack Swift (object) 
• Riak (object)
OpenStack Swift
• Distributed object store 
• Skaliert in den Petabyte-Bereich 
• Skaliert horizontal 
• Ausfallsicherheit durch Redundanz 
• Grad der Redundanz ist Einstellbar 
• Gewöhnliche Server-HW genügt 
• Kostenlos und Open Source
• Proxy Server 
• The Ring 
• Object Server 
• Container Server
• Account Server 
• Replication 
• Updaters 
• Auditors
GusterFS
• Skaliert in den Petabyte-Bereich 
• Skaliert horizontal 
• Ausfallsicherheit durch Redundanz 
• Gewöhnliche Server-HW genügt 
• Kostenlos und Open Source
Application Server
• = Web Server 
• Liefert die Anwendung aus 
• Schlägt die Brücke zur 
Programmiersprache / Web-Framework
• Apache httpd Web Server 
• Apache Tomcat 
• Unicorn (Rails) 
• …
Load Balancer
• Verteilt eingehende Anfragen auf 1-n 
Application Server (Lastverteilung) 
• Erkennt Ausfälle > Liefert nur an 
lebende App-Server (Failover) 
• Sollte redundant ausgelegt sein 
(pacemaker)
• Apache mit mod_proxy_balancer 
• Nginx 
• keepalived
Message Queues
• Meist asynchrone Kommunikation 
• Entkopplung von 
Anwendungskomponenten
Beispiel 
RabbitMQ
• Verlässlich 
• Persistent 
• Sendebenachrichtigungen 
• Empfangsbenachrichtungen 
• Hochverfügbarkeit durch Clustering
• Flexibles Routing 
• HA Queues im Cluster 
• Clients in fast jeder Sprache verfügbar
http://www.rabbitmq.com/getstarted.html 
Hello World Worker Queue 
Pub/Sub Routing 
Topics RPC
Fragen?
Danke!
j@avtq.de 
@fischerjulian

Vorlesung - Cloud Infrastrukturen - Clusterbau | anynines