Rails Cluster
Mehrserverlösung zum Betrieb von RoR
            Applikationen




                 Julian Fischer
          fischer@enterprise-rails.de
        http://www.enterprise-rails.de
Einleitung
Einleitung
 Über mich
Über mich
     Julian Fischer
     ‣Geschäftsführender Gesellschafter der Avarteq GmbH
     ‣Twitter: http://www.twitter.com/railshoster
     ‣E-Mail: fischer@enterprise-rails.de
Über mich
       Julian Fischer
       ‣Geschäftsführender Gesellschafter der Avarteq GmbH
       ‣Twitter: http://www.twitter.com/railshoster
       ‣E-Mail: fischer@enterprise-rails.de



‣ Lehrbeauftragter im Fach „Ruby on
  Rails“ an der HTWdS
Über mich
       Julian Fischer
       ‣Geschäftsführender Gesellschafter der Avarteq GmbH
       ‣Twitter: http://www.twitter.com/railshoster
       ‣E-Mail: fischer@enterprise-rails.de



‣ Lehrbeauftragter im Fach „Ruby on
  Rails“ an der HTWdS

‣ Ruby und Ruby on Rails Programmierer
Über mich
       Julian Fischer
       ‣Geschäftsführender Gesellschafter der Avarteq GmbH
       ‣Twitter: http://www.twitter.com/railshoster
       ‣E-Mail: fischer@enterprise-rails.de



‣ Lehrbeauftragter im Fach „Ruby on
  Rails“ an der HTWdS

‣ Ruby und Ruby on Rails Programmierer
‣ Entperise-Rails.de - Head of Hosting
Einleitung
Über die Avarteq GmbH
Über die Avarteq GmbH
Über die Avarteq GmbH


 ‣ Gegründet im Nov. 2008
   aus zwei Einzelunternehmungen
Über die Avarteq GmbH


 ‣ Gegründet im Nov. 2008
   aus zwei Einzelunternehmungen



 ‣ Beteiligung der Key-Systems GmbH
   verwaltet derzeit 2,5 Mio. Domains für Kunden aus über 200 Ländern
Über die Avarteq GmbH


 ‣ Gegründet im Nov. 2008
   aus zwei Einzelunternehmungen



 ‣ Beteiligung der Key-Systems GmbH
   verwaltet derzeit 2,5 Mio. Domains für Kunden aus über 200 Ländern



 ‣ Teamgröße:              14 Personen
   7 Vollzeit, 7 Teilzeit/Freelancer
Einleitung
 Portfolio
Über die Avarteq GmbH
Über die Avarteq GmbH


 ‣ Umfasst alle Phasen eines Web-
   Projekts
Über die Avarteq GmbH


 ‣ Umfasst alle Phasen eines Web-
   Projekts

  ‣ Beratung
Über die Avarteq GmbH


 ‣ Umfasst alle Phasen eines Web-
   Projekts

  ‣ Beratung
  ‣ Konzeption und Screendesign
Über die Avarteq GmbH


 ‣ Umfasst alle Phasen eines Web-
   Projekts

  ‣ Beratung
  ‣ Konzeption und Screendesign
  ‣ Ruby on Rails Enticklung. Inhouse & vorort.
Über die Avarteq GmbH


 ‣ Umfasst alle Phasen eines Web-
   Projekts

  ‣ Beratung
  ‣ Konzeption und Screendesign
  ‣ Ruby on Rails Enticklung. Inhouse & vorort.
  ‣ Ruby on Rails Hosting
    RailsHoster.de - Enterprise-Rails.de
Wie erstellt man einen
 hochwertigen Rails
       Cluster?
Vorbarbeit
Vorarbeit
Wahl des Rechenzentrums
Wahl des RZ

                            Hetzner                   Thomas Krenn AG

                          Software,                    2 LB Appliances,
 Load Balancer
                        Apache or Nginx               autom. IP-Failover
                                                  NetApp Storage Appliance,
    Storage                  NFS               redundante HW, separate 1GBit
                                               Verbindung zu jedem App-Server
                                              HW nach individuellem Bedarf, z.B.
                                               SuperMicro Basis, 2xIntel Xeon
  App-Servers              EQ4-EQ9
                                               Quad Core CPUs, redundantes
                                              Netzweil, Hardware-Raid mit BBU
                     Anzahl der Server muss      Neue Server können jederzeit
Privates Netzwerk
                     im Voraus bekannt sein       hinzugenommen werden.
                    HDD defekt? Ticket an RZ  Rechner piept? Anruf durch RZ:
 Support im RZ        Support. Downtime.     HDD könnte defekt sein. Diagnose.
                       Tausch der HDD.        HDD hotswap. Keine Downtime!
Vorarbeit
Dimensionierung
Dimensionierung
Dimensionierung


‣ Wieviele Server werden benötigt?
Dimensionierung


‣ Wieviele Server werden benötigt?
‣ Welche Server-Rollen wird es geben?
  App, DB, LB, BG-Jobs, ...
Dimensionierung


‣ Wieviele Server werden benötigt?
‣ Welche Server-Rollen wird es geben?
  App, DB, LB, BG-Jobs, ...

‣ Welche HW ist für die jeweilige Rolle am
  besten geeignet?
Dimensionierung


‣ Wieviele Server werden benötigt?
‣ Welche Server-Rollen wird es geben?
  App, DB, LB, BG-Jobs, ...

‣ Welche HW ist für die jeweilige Rolle am
  besten geeignet?

‣ ...
Vorarbeit
System-Design
System-Design
System-Design


‣ Welche System-Komponente kommt auf
 welchen Server?
System-Design


‣ Welche System-Komponente kommt auf
 welchen Server?

 ‣ APP und DB auf die gleichen Server?
System-Design


‣ Welche System-Komponente kommt auf
 welchen Server?

 ‣ APP und DB auf die gleichen Server?
 ‣ Dedizierte DB Server?
System-Design


‣ Welche System-Komponente kommt auf
 welchen Server?

 ‣ APP und DB auf die gleichen Server?
 ‣ Dedizierte DB Server?
 ‣ Wohin mit dem Suchserver?
System-Design


‣ Welche System-Komponente kommt auf
 welchen Server?

 ‣ APP und DB auf die gleichen Server?
 ‣ Dedizierte DB Server?
 ‣ Wohin mit dem Suchserver?
 ‣ Wo werden Job-Queues laufen?
System-Design


‣ Welche System-Komponente kommt auf
 welchen Server?

 ‣ APP und DB auf die gleichen Server?
 ‣ Dedizierte DB Server?
 ‣ Wohin mit dem Suchserver?
 ‣ Wo werden Job-Queues laufen?
 ‣ ...
Hardware
Hardware
Load Balancer
Load Balancer
Load Balancer


‣ Selten der Flaschenhals
Load Balancer


‣ Selten der Flaschenhals
‣ Oft Single Point of Failure (SPOF)
Load Balancer


‣ Selten der Flaschenhals
‣ Oft Single Point of Failure (SPOF)
‣ Zwei sind besser als einer!
Load Balancer


‣ Selten der Flaschenhals
‣ Oft Single Point of Failure (SPOF)
‣ Zwei sind besser als einer!
‣ Was tun wenn einer kaputt geht?
Load Balancer


‣ Selten der Flaschenhals
‣ Oft Single Point of Failure (SPOF)
‣ Zwei sind besser als einer!
‣ Was tun wenn einer kaputt geht?
‣ Redundanter LB mit automatischem IP
  Failover!
Hardware
 Storage
Load Balancer
Load Balancer


‣ Wohin etc. den Uploads?
  Profilbilder,
                mit
Load Balancer


‣ Wohin etc. den Uploads?
  Profilbilder,
                mit


‣ NFS?
Load Balancer


‣ Wohin etc. den Uploads?
  Profilbilder,
                mit


‣ NFS?
 ‣ SPOF
Load Balancer


‣ Wohin etc. den Uploads?
  Profilbilder,
                mit


‣ NFS?
 ‣ SPOF
 ‣ Vergleichsweise langsam
Load Balancer
Load Balancer


‣ Redundante iSCSI Storage Appliance
Load Balancer


‣ Redundante iSCSI Storage Appliance
‣ Jeder App Server wird mit einer
  separaten GBit-Leitung angeschlossen
Load Balancer


‣ Redundante iSCSI Storage Appliance
‣ Jeder App Server wird mit einer
  separaten GBit-Leitung angeschlossen

‣ iSCSI = SCSI über TCP
  = Remote Blockdevice
Load Balancer


‣ Redundante iSCSI Storage Appliance
‣ Jeder App Server wird mit einer
  separaten GBit-Leitung angeschlossen

‣ iSCSI = SCSI über TCP
  = Remote Blockdevice

‣ Weniger Overhead als NFS
Load Balancer


‣ Redundante iSCSI Storage Appliance
‣ Jeder App Server wird mit einer
  separaten GBit-Leitung angeschlossen

‣ iSCSI = SCSI über TCP
  = Remote Blockdevice

‣ Weniger Overhead als NFS
‣ Clusterdateisystem benötigt.
  OCFS2, GFS, ...
Hardware
 Netzwerk
Netzwerk
Netzwerk


‣ Wie sind die Rechner des Clusters
  miteinander verbunden?
Netzwerk


‣ Wie sind die Rechner des Clusters
  miteinander verbunden?

‣ Privates (!) physikalisches Netzwerk
Netzwerk


‣ Wie sind die Rechner des Clusters
  miteinander verbunden?

‣ Privates (!) physikalisches Netzwerk
‣ >= 1 GBit/s
Netzwerk


‣ Wie sind die Rechner des Clusters
  miteinander verbunden?

‣ Privates (!) physikalisches Netzwerk
‣ >= 1 GBit/s
 ‣ Minimale Latenz durch die Verteilung
    der Komponenten
Hardware
 Scale out
Netzwerk
Netzwerk


‣ Neue Server sollen ins private Netzwerk
  aufgenommen werden.
Netzwerk


‣ Neue Server sollen ins private Netzwerk
  aufgenommen werden.

 ‣ Rechner sollten an einem gemeinsamen
   Switch hängen.
Netzwerk


‣ Neue Server sollen ins private Netzwerk
  aufgenommen werden.

 ‣ Rechner sollten an einem gemeinsamen
   Switch hängen.

 ‣ RZ mit Flexibilität ist gefragt.
Netzwerk


‣ Neue Server sollen ins private Netzwerk
  aufgenommen werden.

 ‣ Rechner sollten an einem gemeinsamen
   Switch hängen.

 ‣ RZ mit Flexibilität ist gefragt.
 ‣ Massenhoster sind meist wenig flexibel.
Software
Software
Application Server
Application Server
Application Server


‣ = Phusion Passenger
Application Server


‣ = Phusion Passenger
 ‣ Speicherverbrauch abschätzen,
   # App-Instanzen einstellen
Application Server


‣ = Phusion Passenger
 ‣ Speicherverbrauch abschätzen,
   # App-Instanzen einstellen

 ‣ Auf Upload-Endungen achten und ggf.
   PHP deaktivieren
Application Server


‣ = Phusion Passenger
 ‣ Speicherverbrauch abschätzen,
   # App-Instanzen einstellen

 ‣ Auf Upload-Endungen achten und ggf.
   PHP deaktivieren

 ‣ ...
Application Server
Application Server


‣ Einen geeigneten Session-Store wählen
Application Server


‣ Einen geeigneten Session-Store wählen
 ‣ Cookie-St. ist ein guter Anfang
Application Server


‣ Einen geeigneten Session-Store wählen
 ‣ Cookie-St. ist ein guter Anfang
 ‣ Memcached-St., etw. vergesslich, memcached benötigt
Application Server


‣ Einen geeigneten Session-Store wählen
 ‣ Cookie-St. ist ein guter Anfang
 ‣ Memcached-St., etw. vergesslich, memcached benötigt
 ‣ ActiveRecord-St., nicht der Schnellste, benötigt keine
   Extra-Wurst
Application Server
Application Server


‣ Storage einbinden
Application Server


‣ Storage einbinden
 ‣ In App-Ordner verlinken
Application Server


‣ Storage einbinden
 ‣ In App-Ordner verlinken
 ‣ Storage-Mounts überwachen
Software
Database Server
Database Server
Database Server


‣ MySQL, Postgres, ... CouchDB wird interessanter
Database Server


‣ MySQL, Postgres, ... CouchDB wird interessanter
‣ Scale-Out der DB ist immer hässlich
Database Server


‣ MySQL, Postgres, ... CouchDB wird interessanter
‣ Scale-Out der DB ist immer hässlich
‣ Dennoch nicht den MySQL NDB Cluster
  verwenden, es sei denn ihr habt einen Fulltime-DB-Admin.
Database Server


‣ MySQL, Postgres, ... CouchDB wird interessanter
‣ Scale-Out der DB ist immer hässlich
‣ Dennoch nicht den MySQL NDB Cluster
  verwenden, es sei denn ihr habt einen Fulltime-DB-Admin.

‣ DB-Server gut ausrüsten bzw. aufrüstbar
  gestalten
Database Server


‣ MySQL, Postgres, ... CouchDB wird interessanter
‣ Scale-Out der DB ist immer hässlich
‣ Dennoch nicht den MySQL NDB Cluster
  verwenden, es sei denn ihr habt einen Fulltime-DB-Admin.

‣ DB-Server gut ausrüsten bzw. aufrüstbar
  gestalten

‣ Viele kleine, schnelle Festplatten
  verwenden
Software
Database Replikation?
Database Server
Database Server


‣ Ja aber nicht unbedingt zum Last-Scale-out.
Database Server


‣ Ja aber nicht unbedingt zum Last-Scale-out.
‣ „Echtzeit“-Backup der Datenbank.
Database Server
Database Server


‣ Welche Art der Replikation?
Database Server


‣ Welche Art der Replikation?
 ‣ Fingereure AnwendungMultimaster-Gefrickel,
   es sei denn
               weg von
                       löst Datensatzkonflikte auf.
Database Server


‣ Welche Art der Replikation?
 ‣ Fingereure AnwendungMultimaster-Gefrickel,
   es sei denn
               weg von
                       löst Datensatzkonflikte auf.



 ‣ Master/Slave ist ein guter Anfang.
Database Server


‣ Welche Art der Replikation?
 ‣ Fingereure AnwendungMultimaster-Gefrickel,
   es sei denn
               weg von
                       löst Datensatzkonflikte auf.



 ‣ Master/Slave ist ein guter Anfang.
   ‣ Kein automatisches Failover
Database Server


‣ Welche Art der Replikation?
 ‣ Fingereure AnwendungMultimaster-Gefrickel,
   es sei denn
               weg von
                       löst Datensatzkonflikte auf.



 ‣ Master/Slave ist ein guter Anfang.
   ‣ Kein automatisches Failover
   ‣ Manuelles Failover schneller als DB-
     Server neu aufzusetzen. Aber nehmt euch nach
     dem Recovery Zeit für die Reintegration des Masters.
Software
Suchen und Finden
Suchen und Finden
Suchen und Finden


‣ Sphinx ist gut, Solr auch!
Suchen und Finden


‣ Sphinx ist gut, Solr auch!
‣ Suchserver laufen lange neben der
  Anwendung
Suchen und Finden


‣ Sphinx ist gut, Solr auch!
‣ Suchserver laufen lange neben der
  Anwendung

‣ Wenn Sie groß werden, wollen Sie ein
  eigenes Zimmer! Munin hilft den richtigen Zeitpunkt zu
  erkennen.
Software
Hintergrundverarbeitung
Hintergrundverarbeitung
Hintergrundverarbeitung


‣ BackgroundRB, Starling&Workling, ...
Hintergrundverarbeitung


‣ BackgroundRB, Starling&Workling, ...
‣ Arbeiter wollen auch irgendwann ein
  eigenes Zimmer.
Hintergrundverarbeitung


‣ BackgroundRB, Starling&Workling, ...
‣ Arbeiter wollen auch irgendwann ein
  eigenes Zimmer.

‣ Bis dahin tut es auch ein beliebiger
  Rechner mit etwas Freiraum. CPU und RAM.
Software
Deployment
Deployment
Deployment


‣ Capistrano
Deployment


‣ Capistrano
‣ Anpassung des Deployment-Rezepts an
 die vorhandenen Server/Server-Rollen
Deployment


‣ Capistrano
‣ Anpassung des Deployment-Rezepts an
  die vorhandenen Server/Server-Rollen

‣ Initiales Deployment schmerzt am
  meisten.
Backups
Backups
 OMG!
Backups
Backups


‣ Automatisierte Backups erhalten die
  Freundschaft.
Backups


‣ Automatisierte Backups erhalten die
  Freundschaft.

‣ Dateisystem und Datenbank.
Backups


‣ Automatisierte Backups erhalten die
  Freundschaft.

‣ Dateisystem und Datenbank.
‣ Backups packen, verschlüsseln und
  verstauen. Duplicity sei dank!
Backups


‣ Automatisierte Backups erhalten die
  Freundschaft.

‣ Dateisystem und Datenbank.
‣ Backups packen, verschlüsseln und
  verstauen. Duplicity sei dank!

‣ Ab und zu ein Backup entpacken und
  kontrollieren. Kaputte Backups = keine Backups.
Backups
Backups


‣ Wieviele Backups passen auf den
  Backupserver?
Backups


‣ Wieviele Backups passen auf den
   Backupserver?

‣ Backups sollten rotiert werden.
  z.B. tägliches Backup, 7 Backups werden vorhalten.
Backups


‣ Wieviele Backups passen auf den
   Backupserver?

‣ Backups sollten rotiert werden.
  z.B. tägliches Backup, 7 Backups werden vorhalten.



‣ Größtes Backup * 7 <= Backupspace
Backups


‣ Wieviele Backups passen auf den
   Backupserver?

‣ Backups sollten rotiert werden.
  z.B. tägliches Backup, 7 Backups werden vorhalten.



‣ Größtes Backup * 7 <= Backupspace
‣ Backupspace überwachen
Monitoring
„Nur weil ich paranoid bin, heißt es nicht, dass
        sie nicht hinter mir her sind.“
                   (Werauchimmer)
Woher weiß der Admin,
dass etwas kaputt ist?
Monitoring
  Nagios
Nagios
Nagios


‣ Nagios überwacht Schlüsselmerkmale
 eines jeden Rechners. So sollte er eingerichtet werden.
Nagios


‣ Nagios überwacht Schlüsselmerkmale
  eines jeden Rechners. So sollte er eingerichtet werden.

‣ Stimmt etwas nicht, benachrichtigt er
  der/die verantworliche Person(en). Dito.
Nagios
Nagios


‣ Was wird überprüft?
Nagios


‣ Was wird überprüft?
 ‣ Swap. Viel swap = wenig RAM = Laaaangsssaaahmm.
Nagios


‣ Was wird überprüft?
 ‣ Swap. Viel swap = wenig RAM = Laaaangsssaaahmm.
 ‣ LOAD. Mehr sysload als Cores? Prozesse müssen warten.
Nagios


‣ Was wird überprüft?
 ‣ Swap. Viel swap = wenig RAM = Laaaangsssaaahmm.
 ‣ LOAD. Mehr sysload als Cores? Prozesse müssen warten.
 ‣ HTTP. Ist da noch ein Webserver?
Nagios


‣ Was wird überprüft?
 ‣ Swap. Viel swap = wenig RAM = Laaaangsssaaahmm.
 ‣ LOAD. Mehr sysload als Cores? Prozesse müssen warten.
 ‣ HTTP. Ist da noch ein Webserver?
 ‣ APP. Gibt meine Anwendung noch den String XY aus?
Nagios


‣ Was wird überprüft?
 ‣ Swap. Viel swap = wenig RAM = Laaaangsssaaahmm.
 ‣ LOAD. Mehr sysload als Cores? Prozesse müssen warten.
 ‣ HTTP. Ist da noch ein Webserver?
 ‣ APP. Gibt meine Anwendung noch den String XY aus?
 ‣ und vieles mehr!
Monitoring
Ressourcen-Historie
Ressourcen-Historie
Ressourcen-Historie


‣ Munin
Ressourcen-Historie
Ressourcen-Historie


‣ Zeichnet die Auslastung bestimmter
  Ressourcen auf.
Ressourcen-Historie


‣ Zeichnet die Auslastung bestimmter
  Ressourcen auf.

‣ Trend-Analyse
Ressourcen-Historie


‣ Zeichnet die Auslastung bestimmter
  Ressourcen auf.

‣ Trend-Analyse
‣ Was war nach meiner PR-Aktion auf den
  Servern los?
Ressourcen-Historie


‣ Zeichnet die Auslastung bestimmter
  Ressourcen auf.

‣ Trend-Analyse
‣ Was war nach meiner PR-Aktion auf den
  Servern los?

‣ Wann muss ich zusätzliche Server
  kaufen?
Ressourcen-Historie


‣ Zeichnet die Auslastung bestimmter
  Ressourcen auf.

‣ Trend-Analyse
‣ Was war nach meiner PR-Aktion auf den
  Servern los?

‣ Wann muss ich zusätzliche Server
  kaufen?

‣ Hat meine APP ein Speicherleck?
Wartung
Wartung
Wartung


‣ OS-Aktualisierungen.
  Minor-, Major-, Distributions-Updates.
Wartung


‣ OS-Aktualisierungen.
  Minor-, Major-, Distributions-Updates.


   ‣   Für größere Updates werden einzelne Server aus dem Verbund gelöst,
       aktualisiert und danach wieder eingefügt.
Wartung


‣ OS-Aktualisierungen.
  Minor-, Major-, Distributions-Updates.


   ‣   Für größere Updates werden einzelne Server aus dem Verbund gelöst,
       aktualisiert und danach wieder eingefügt.



‣ Ruby Updates. Ruby, Rails, Gems, ...
Wartung


‣ OS-Aktualisierungen.
  Minor-, Major-, Distributions-Updates.


   ‣   Für größere Updates werden einzelne Server aus dem Verbund gelöst,
       aktualisiert und danach wieder eingefügt.



‣ Ruby Updates. Ruby, Rails, Gems, ...
‣ Rotation und Stichproben der Logs.
Wartung


‣ OS-Aktualisierungen.
  Minor-, Major-, Distributions-Updates.


   ‣   Für größere Updates werden einzelne Server aus dem Verbund gelöst,
       aktualisiert und danach wieder eingefügt.



‣ Ruby Updates. Ruby, Rails, Gems, ...
‣ Rotation und Stichproben der Logs.
‣ Überprüfung der Backups.
Wartung


‣ OS-Aktualisierungen.
  Minor-, Major-, Distributions-Updates.


   ‣    Für größere Updates werden einzelne Server aus dem Verbund gelöst,
        aktualisiert und danach wieder eingefügt.



‣ Ruby Updates. Ruby, Rails, Gems, ...
‣ Rotation und Stichproben der Logs.
‣ Überprüfung der Backups.
‣ ...
Fazit




Ist ja alles gut zu wissen, aber...
Fazit




 ... wer kommt neben all diesen

Dingen noch zum programmieren?
Fragen?
Vielen Dank
              für Ihre
          Aufmerksamkeit!


Headquarter:            Rails Enterprise Hosting:
http://www.avarteq.de        http://www.enterprise-
                                           rails.de
Blog:
http://                            Rails Hosting:
www.treibstofff.de        http://www.railshoster.de

Mehrserver Lösungen