Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Building high-available application with Red Hat Cluster Suite
1. Einführung
RH Cluster Suite
Anwendungsbeispiel
Tipps/Tricks
Ende
Red Hat Cluster Suite
Building high-available Applications
Thomas Neidhart
Grazer Linuxtage 2008
Neidhart RH Cluster Suite
2. Einführung
RH Cluster Suite
Anwendungsbeispiel
Tipps/Tricks
Ende
Outline
1 Einführung
Clusterarten
2 RH Cluster Suite
Technische Details
Komponenten
3 Anwendungsbeispiel
Architektur
Konfiguration
4 Tipps/Tricks
Neidhart RH Cluster Suite
3. Einführung
RH Cluster Suite
Anwendungsbeispiel Clusterarten
Tipps/Tricks
Ende
Einführung
Was ist eigentlich ein Cluster?
Wozu braucht man so etwas?
Welche Probleme kann ich damit lösen?
Wie kann ich so einen Cluster aufbauen?
Welche Komponenten werden dazu benötigt?
Neidhart RH Cluster Suite
4. Einführung
RH Cluster Suite
Anwendungsbeispiel Clusterarten
Tipps/Tricks
Ende
Arten von Clustern
Storage cluster - data access
High availability - failover
Load balancing - scalability
High performance - parallel computation
Neidhart RH Cluster Suite
5. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Was bietet jetzt die RH Cluster Suite?
kann bis zu 128 Knoten verwalten
shared data storage (NFS, CIFS, GFS)
bietet automatisches failover
bietet load-balancing
Neidhart RH Cluster Suite
6. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Komponenten der Cluster Suite
Die Cluster Suite besteht aus mehreren Komponenten, die
einzelne Bereiche abdecken:
Cluster infrastructure (config-file management,
membership management, locking, fencing)
HA Service Management
Administration Tools
Linux Virtual Server (LVS - IP Load Balancing)
Neidhart RH Cluster Suite
7. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Grundbegriffe
Quorum
zur Überprüfung der Funktionstüchtigkeit des Clusters
Minimum an nötigen Stimmen
jeder Knoten hat eine Stimme
Quorum = 50% Knoten + 1 Stimme
verhindert “split-brain” Situationen
Neidhart RH Cluster Suite
8. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Cluster und Lock Management
Überwacht Quorum und Cluster Membership mit Hilfe von
Heartbeat Nachrichten (Ethernet)
Synchronisiert Zugriff auf gemeinsame Resourcen
Locking Arten
distributed: CMAN/DLM (Cluster Manager, Distributed
Lock Manager)
client-server: GULM (Grand Unified Lock Manager)
Neidhart RH Cluster Suite
9. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
CMAN Variante
Neidhart RH Cluster Suite
10. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
GULM Variante
Neidhart RH Cluster Suite
11. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Locking
Erlaubt Zugriff auf gemeinsame Resourcen (GFS-Partition)
Gewährleistet Datenintegrität
Knoten die sich nicht im Cluster befinden, können nicht auf
gemeinsame Resourcen zugreifen
Neidhart RH Cluster Suite
12. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Fencing
Notwendig für die Datenintegrität des Clusters
Ist ein Knoten ausgefallen (kein Heartbeat), wird sämtliche
Aktivität eingefroren, bis der Knoten erfolgreich gefenced
wurde.
Fencing Arten
Power fencing
Fibre Channel
switch fencing
DRAC, IPMI, ...
Achtung bei
redundanten
Power Supplies
Neidhart RH Cluster Suite
13. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Cluster Configuration System
Verwaltet die Cluster Konfiguration.
Neidhart RH Cluster Suite
14. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Cluster Configuration System
Im Cluster Configuration File (/etc/cluster/cluster.conf) stehen
folgende Infos:
Allgemeine Clusterinfo (Name, Locking Type, Fence
Timing)
Cluster Knoten (Name, Fence Methode, Quorum Votes)
Fence Devices
Managed Resources (Failover Domains, IP addresses)
Neidhart RH Cluster Suite
15. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
HA Service Management
Definition von Services die ausfallsicher im Cluster laufen
sollen.
Wird verwaltet vom rgmanager (Resource Group Manager)
Service Definition
Service Name
Init Script (z.B. /etc/init.d/httpd)
Verwendete Resourcen (floating IP Address)
Failover Domain
Neidhart RH Cluster Suite
16. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Failover Domains
Wo soll ein Dienst laufen?
Neidhart RH Cluster Suite
17. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Shared Resources
Cluster FS GFS
Gemeinsame Datenquelle für alle Cluster Knoten
Anbindung z.B. an ein SAN
Vereinfacht Deployment und Backup von Applikationen
Neidhart RH Cluster Suite
18. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Linux Virtual Server
Verteilt die Last auf mehrere “echte” Server:
Neidhart RH Cluster Suite
19. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
LVS
Load-Balancing Algorithmen
(weighted) Round-Robin
(weighted) Least-Connections
Source Hash Scheduling
...
Routing Methoden
NAT
direct routing
Neidhart RH Cluster Suite
20. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
NAT Routing
Sowohl intern als
auch extern wird
eine “floating IP”
verwendet
Backend-Server
haben interne
floating-IP als
default Route
eingetragen
Neidhart RH Cluster Suite
21. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Direct Routing
LVS Router
verarbeitet nur
eingehende
Pakete
Antworten
werden von den
Servern direkt an
die Clients
geschickt
Neidhart RH Cluster Suite
22. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Wichtige Kommandos
Befehle
ccs_tool update der Cluster Configuration
cman_tool steuert Cluster Manager
clustat zeigt Status des Clusters an
clusvcadm verwaltet Services
Neidhart RH Cluster Suite
23. Einführung
RH Cluster Suite
Technische Details
Anwendungsbeispiel
Komponenten
Tipps/Tricks
Ende
Member S t a t u s : Quorate
Member Name Status
−−− −−
−−− −− −−−
−−−
c l−node−70 Online , rgmanager
c l−node−72 Online , Local , rgmanager
c l−node−74 Online , rgmanager
S e r v i c e Name Owner ( L a s t ) State
− − − −− −
−−− −− − − −− − −
−− −−− −−−
−−
PgSQL c l−node−70 started
Neidhart RH Cluster Suite
24. Einführung
RH Cluster Suite
Architektur
Anwendungsbeispiel
Konfiguration
Tipps/Tricks
Ende
Wir wollen eine kleine, feine Internet Applikation bauen, die
dynamische Inhalte ausliefert:
Beschreibung
Webserver (z.B. apache) liefert die Seiten aus welche z.B.
mit php generiert wurden
Datenbankserver hält den dynamischen Content bereit
Anforderungen
Applikation muss skalierbar sein, d.h. zusätzliche Last soll
durch weitere Knoten abgedeckt werden können.
Datenbank muss ausfallsicher laufen.
Konsistentes Backup der Daten muss möglich sein.
Neidhart RH Cluster Suite
25. Einführung
RH Cluster Suite
Architektur
Anwendungsbeispiel
Konfiguration
Tipps/Tricks
Ende
Stufen
Stufe 1
Load-Balancing
Server
Stufe 2
Application
Servers
Stufe 3
Database Server
Stufe 4 GFS
Data Source
Neidhart RH Cluster Suite
26. Einführung
RH Cluster Suite
Architektur
Anwendungsbeispiel
Konfiguration
Tipps/Tricks
Ende
Knotenkonfiguration
< c l u s t e r c o n f i g _ v e r s i o n = " 1 " name="DEMO" >
<fence_daemon p o s t _ f a i l _ d e l a y = " 0 " p o s t _ j o i n _ d e l a y = " 3 " / >
<clusternodes >
< c l u s t e r n o d e name=" c l−node−70" v o t e s ="1" >
<fence >
<method name="1" >
< d e v i c e name=" apc−71" p o r t = " 1 " / >
< d e v i c e name=" apc−73" p o r t = " 1 " / >
</ method>
<method name="2" >
< d e v i c e name=" ipmi −71"/>
</ method>
</ fence >
</ c l u s t e r n o d e >
< c l u s t e r n o d e name=" c l−node−72" v o t e s ="1" >
....
</ c l u s t e r n o d e >
</ c l u s t e r n o d e s >
< fencedevices >
< f e n c e d e v i c e agent =" fence_apc " i p a d d r = " 1 7 2 . 1 0 . 7 3 . 7 1 " . . . / >
</ fencedevices >
Neidhart RH Cluster Suite
27. Einführung
RH Cluster Suite
Architektur
Anwendungsbeispiel
Konfiguration
Tipps/Tricks
Ende
Servicekonfiguration
<rm>
<failoverdomains >
< f a i l o v e r d o m a i n name="PgSQL_Domain " ordered = " 1 " r e s t r i c t e d ="1" >
< f a i l o v e r d o m a i n n o d e name=" c l−node−70" p r i o r i t y = " 1 " / >
< f a i l o v e r d o m a i n n o d e name=" c l−node−72" p r i o r i t y = " 2 " / >
< f a i l o v e r d o m a i n n o d e name=" c l−node−74" p r i o r i t y = " 3 " / >
</ f a i l o v e r d o m a i n >
</ f a i l o v e r d o m a i n s >
<resources / >
< s e r v i c e a u t o s t a r t = " 1 " domain ="PgSQL_Domain " name="PgSQL" r e c o v e r y =" r e l o c a t e " >
< i p address = " 1 7 2 . 1 0 . 7 3 . 9 0 " m o n i t o r _ l i n k ="1" >
< s c r i p t f i l e = " / e t c / i n i t . d / c l _ p g s q l " name=" i n i t p g s q l " / >
</ i p >
</ s e r v i c e >
< s e r v i c e a u t o s t a r t = " 1 " domain ="PgSQL_Domain " name=" Clus_Cron " r e c o v e r y =" r e l o c a t e " >
< s c r i p t f i l e = " / e t c / i n i t . d / c l u s _ c r o n d " name=" i n i t c l u s _ c r o n " / >
</ s e r v i c e >
</rm>
Neidhart RH Cluster Suite
28. Einführung
RH Cluster Suite
Anwendungsbeispiel
Tipps/Tricks
Ende
Tipps
Seperates Netzwerk für Cluster und Applikation
Interface-bonding für internes Cluster-LAN
Anpassung tcp send und receive Buffer
Genügend Journals in der GFS Partition anlegen (pro
zugreifendem Node muss ein Journal existieren)
Neidhart RH Cluster Suite
29. Einführung
RH Cluster Suite
Anwendungsbeispiel
Tipps/Tricks
Ende
Resourcen
http://www.redhat.com/docs/manuals/csgfs/
browse/4.6/Cluster_Suite_Overview/
http://sourceware.org/cluster/faq.html
http://sources.redhat.com/cluster/wiki/FAQ
Neidhart RH Cluster Suite
30. Einführung
RH Cluster Suite
Anwendungsbeispiel
Tipps/Tricks
Ende
Ende
Vielen Danke für die Aufmerksamkeit!
Fragen?
Neidhart RH Cluster Suite