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 BalancerLoad
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 BalancerLoad
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
NFS Server
APP
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!
[email protected] @fischerjulian
Top Related