Vorlesung - Cloud infrastrukturen - Clusterbau

Post on 20-Jun-2015

104 views 0 download

description

Um die Bedeutung moderner Cloud-Technologien einschätzen zu können, werden zunächst Grundlagen herkömmlicher Cluster-Architekturen behandelt. Darunter zählen Konzepte wie vertikale und horizontale Skalierung, Load-Balancing, Storage-Arten, usw.

Transcript of Vorlesung - Cloud infrastrukturen - Clusterbau

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!

j@avtq.de @fischerjulian