Mehrserver Lösungen

1.211 Aufrufe

Veröffentlicht am

Wie baut man einen Server-Cluster zum Betrieb einer hochverfügbaren Ruby on Rails-Anwendung.
Themen: Load Balancing, Storage, NFS, iSCSI Phusion Passenger, Wahl des Rechenzentrums, ...

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

Mehrserver Lösungen

  1. 1. Rails Cluster Mehrserverlösung zum Betrieb von RoR Applikationen Julian Fischer fischer@enterprise-rails.de http://www.enterprise-rails.de
  2. 2. Einleitung
  3. 3. Einleitung Über mich
  4. 4. Über mich Julian Fischer ‣Geschäftsführender Gesellschafter der Avarteq GmbH ‣Twitter: http://www.twitter.com/railshoster ‣E-Mail: fischer@enterprise-rails.de
  5. 5. Ü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
  6. 6. Ü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
  7. 7. Ü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
  8. 8. Einleitung Über die Avarteq GmbH
  9. 9. Über die Avarteq GmbH
  10. 10. Über die Avarteq GmbH ‣ Gegründet im Nov. 2008 aus zwei Einzelunternehmungen
  11. 11. Ü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
  12. 12. Ü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
  13. 13. Einleitung Portfolio
  14. 14. Über die Avarteq GmbH
  15. 15. Über die Avarteq GmbH ‣ Umfasst alle Phasen eines Web- Projekts
  16. 16. Über die Avarteq GmbH ‣ Umfasst alle Phasen eines Web- Projekts ‣ Beratung
  17. 17. Über die Avarteq GmbH ‣ Umfasst alle Phasen eines Web- Projekts ‣ Beratung ‣ Konzeption und Screendesign
  18. 18. Über die Avarteq GmbH ‣ Umfasst alle Phasen eines Web- Projekts ‣ Beratung ‣ Konzeption und Screendesign ‣ Ruby on Rails Enticklung. Inhouse & vorort.
  19. 19. Ü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
  20. 20. Wie erstellt man einen hochwertigen Rails Cluster?
  21. 21. Vorbarbeit
  22. 22. Vorarbeit Wahl des Rechenzentrums
  23. 23. 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!
  24. 24. Vorarbeit Dimensionierung
  25. 25. Dimensionierung
  26. 26. Dimensionierung ‣ Wieviele Server werden benötigt?
  27. 27. Dimensionierung ‣ Wieviele Server werden benötigt? ‣ Welche Server-Rollen wird es geben? App, DB, LB, BG-Jobs, ...
  28. 28. 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?
  29. 29. 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? ‣ ...
  30. 30. Vorarbeit System-Design
  31. 31. System-Design
  32. 32. System-Design ‣ Welche System-Komponente kommt auf welchen Server?
  33. 33. System-Design ‣ Welche System-Komponente kommt auf welchen Server? ‣ APP und DB auf die gleichen Server?
  34. 34. System-Design ‣ Welche System-Komponente kommt auf welchen Server? ‣ APP und DB auf die gleichen Server? ‣ Dedizierte DB Server?
  35. 35. System-Design ‣ Welche System-Komponente kommt auf welchen Server? ‣ APP und DB auf die gleichen Server? ‣ Dedizierte DB Server? ‣ Wohin mit dem Suchserver?
  36. 36. 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?
  37. 37. 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? ‣ ...
  38. 38. Hardware
  39. 39. Hardware Load Balancer
  40. 40. Load Balancer
  41. 41. Load Balancer ‣ Selten der Flaschenhals
  42. 42. Load Balancer ‣ Selten der Flaschenhals ‣ Oft Single Point of Failure (SPOF)
  43. 43. Load Balancer ‣ Selten der Flaschenhals ‣ Oft Single Point of Failure (SPOF) ‣ Zwei sind besser als einer!
  44. 44. Load Balancer ‣ Selten der Flaschenhals ‣ Oft Single Point of Failure (SPOF) ‣ Zwei sind besser als einer! ‣ Was tun wenn einer kaputt geht?
  45. 45. 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!
  46. 46. Hardware Storage
  47. 47. Load Balancer
  48. 48. Load Balancer ‣ Wohin etc. den Uploads? Profilbilder, mit
  49. 49. Load Balancer ‣ Wohin etc. den Uploads? Profilbilder, mit ‣ NFS?
  50. 50. Load Balancer ‣ Wohin etc. den Uploads? Profilbilder, mit ‣ NFS? ‣ SPOF
  51. 51. Load Balancer ‣ Wohin etc. den Uploads? Profilbilder, mit ‣ NFS? ‣ SPOF ‣ Vergleichsweise langsam
  52. 52. Load Balancer
  53. 53. Load Balancer ‣ Redundante iSCSI Storage Appliance
  54. 54. Load Balancer ‣ Redundante iSCSI Storage Appliance ‣ Jeder App Server wird mit einer separaten GBit-Leitung angeschlossen
  55. 55. Load Balancer ‣ Redundante iSCSI Storage Appliance ‣ Jeder App Server wird mit einer separaten GBit-Leitung angeschlossen ‣ iSCSI = SCSI über TCP = Remote Blockdevice
  56. 56. 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
  57. 57. 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, ...
  58. 58. Hardware Netzwerk
  59. 59. Netzwerk
  60. 60. Netzwerk ‣ Wie sind die Rechner des Clusters miteinander verbunden?
  61. 61. Netzwerk ‣ Wie sind die Rechner des Clusters miteinander verbunden? ‣ Privates (!) physikalisches Netzwerk
  62. 62. Netzwerk ‣ Wie sind die Rechner des Clusters miteinander verbunden? ‣ Privates (!) physikalisches Netzwerk ‣ >= 1 GBit/s
  63. 63. Netzwerk ‣ Wie sind die Rechner des Clusters miteinander verbunden? ‣ Privates (!) physikalisches Netzwerk ‣ >= 1 GBit/s ‣ Minimale Latenz durch die Verteilung der Komponenten
  64. 64. Hardware Scale out
  65. 65. Netzwerk
  66. 66. Netzwerk ‣ Neue Server sollen ins private Netzwerk aufgenommen werden.
  67. 67. Netzwerk ‣ Neue Server sollen ins private Netzwerk aufgenommen werden. ‣ Rechner sollten an einem gemeinsamen Switch hängen.
  68. 68. Netzwerk ‣ Neue Server sollen ins private Netzwerk aufgenommen werden. ‣ Rechner sollten an einem gemeinsamen Switch hängen. ‣ RZ mit Flexibilität ist gefragt.
  69. 69. 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.
  70. 70. Software
  71. 71. Software Application Server
  72. 72. Application Server
  73. 73. Application Server ‣ = Phusion Passenger
  74. 74. Application Server ‣ = Phusion Passenger ‣ Speicherverbrauch abschätzen, # App-Instanzen einstellen
  75. 75. Application Server ‣ = Phusion Passenger ‣ Speicherverbrauch abschätzen, # App-Instanzen einstellen ‣ Auf Upload-Endungen achten und ggf. PHP deaktivieren
  76. 76. Application Server ‣ = Phusion Passenger ‣ Speicherverbrauch abschätzen, # App-Instanzen einstellen ‣ Auf Upload-Endungen achten und ggf. PHP deaktivieren ‣ ...
  77. 77. Application Server
  78. 78. Application Server ‣ Einen geeigneten Session-Store wählen
  79. 79. Application Server ‣ Einen geeigneten Session-Store wählen ‣ Cookie-St. ist ein guter Anfang
  80. 80. Application Server ‣ Einen geeigneten Session-Store wählen ‣ Cookie-St. ist ein guter Anfang ‣ Memcached-St., etw. vergesslich, memcached benötigt
  81. 81. 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
  82. 82. Application Server
  83. 83. Application Server ‣ Storage einbinden
  84. 84. Application Server ‣ Storage einbinden ‣ In App-Ordner verlinken
  85. 85. Application Server ‣ Storage einbinden ‣ In App-Ordner verlinken ‣ Storage-Mounts überwachen
  86. 86. Software Database Server
  87. 87. Database Server
  88. 88. Database Server ‣ MySQL, Postgres, ... CouchDB wird interessanter
  89. 89. Database Server ‣ MySQL, Postgres, ... CouchDB wird interessanter ‣ Scale-Out der DB ist immer hässlich
  90. 90. 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.
  91. 91. 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
  92. 92. 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
  93. 93. Software Database Replikation?
  94. 94. Database Server
  95. 95. Database Server ‣ Ja aber nicht unbedingt zum Last-Scale-out.
  96. 96. Database Server ‣ Ja aber nicht unbedingt zum Last-Scale-out. ‣ „Echtzeit“-Backup der Datenbank.
  97. 97. Database Server
  98. 98. Database Server ‣ Welche Art der Replikation?
  99. 99. Database Server ‣ Welche Art der Replikation? ‣ Fingereure AnwendungMultimaster-Gefrickel, es sei denn weg von löst Datensatzkonflikte auf.
  100. 100. Database Server ‣ Welche Art der Replikation? ‣ Fingereure AnwendungMultimaster-Gefrickel, es sei denn weg von löst Datensatzkonflikte auf. ‣ Master/Slave ist ein guter Anfang.
  101. 101. 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
  102. 102. 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.
  103. 103. Software Suchen und Finden
  104. 104. Suchen und Finden
  105. 105. Suchen und Finden ‣ Sphinx ist gut, Solr auch!
  106. 106. Suchen und Finden ‣ Sphinx ist gut, Solr auch! ‣ Suchserver laufen lange neben der Anwendung
  107. 107. 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.
  108. 108. Software Hintergrundverarbeitung
  109. 109. Hintergrundverarbeitung
  110. 110. Hintergrundverarbeitung ‣ BackgroundRB, Starling&Workling, ...
  111. 111. Hintergrundverarbeitung ‣ BackgroundRB, Starling&Workling, ... ‣ Arbeiter wollen auch irgendwann ein eigenes Zimmer.
  112. 112. 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.
  113. 113. Software Deployment
  114. 114. Deployment
  115. 115. Deployment ‣ Capistrano
  116. 116. Deployment ‣ Capistrano ‣ Anpassung des Deployment-Rezepts an die vorhandenen Server/Server-Rollen
  117. 117. Deployment ‣ Capistrano ‣ Anpassung des Deployment-Rezepts an die vorhandenen Server/Server-Rollen ‣ Initiales Deployment schmerzt am meisten.
  118. 118. Backups
  119. 119. Backups OMG!
  120. 120. Backups
  121. 121. Backups ‣ Automatisierte Backups erhalten die Freundschaft.
  122. 122. Backups ‣ Automatisierte Backups erhalten die Freundschaft. ‣ Dateisystem und Datenbank.
  123. 123. Backups ‣ Automatisierte Backups erhalten die Freundschaft. ‣ Dateisystem und Datenbank. ‣ Backups packen, verschlüsseln und verstauen. Duplicity sei dank!
  124. 124. 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.
  125. 125. Backups
  126. 126. Backups ‣ Wieviele Backups passen auf den Backupserver?
  127. 127. Backups ‣ Wieviele Backups passen auf den Backupserver? ‣ Backups sollten rotiert werden. z.B. tägliches Backup, 7 Backups werden vorhalten.
  128. 128. 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
  129. 129. 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
  130. 130. Monitoring
  131. 131. „Nur weil ich paranoid bin, heißt es nicht, dass sie nicht hinter mir her sind.“ (Werauchimmer)
  132. 132. Woher weiß der Admin, dass etwas kaputt ist?
  133. 133. Monitoring Nagios
  134. 134. Nagios
  135. 135. Nagios ‣ Nagios überwacht Schlüsselmerkmale eines jeden Rechners. So sollte er eingerichtet werden.
  136. 136. Nagios ‣ Nagios überwacht Schlüsselmerkmale eines jeden Rechners. So sollte er eingerichtet werden. ‣ Stimmt etwas nicht, benachrichtigt er der/die verantworliche Person(en). Dito.
  137. 137. Nagios
  138. 138. Nagios ‣ Was wird überprüft?
  139. 139. Nagios ‣ Was wird überprüft? ‣ Swap. Viel swap = wenig RAM = Laaaangsssaaahmm.
  140. 140. Nagios ‣ Was wird überprüft? ‣ Swap. Viel swap = wenig RAM = Laaaangsssaaahmm. ‣ LOAD. Mehr sysload als Cores? Prozesse müssen warten.
  141. 141. 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?
  142. 142. 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?
  143. 143. 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!
  144. 144. Monitoring Ressourcen-Historie
  145. 145. Ressourcen-Historie
  146. 146. Ressourcen-Historie ‣ Munin
  147. 147. Ressourcen-Historie
  148. 148. Ressourcen-Historie ‣ Zeichnet die Auslastung bestimmter Ressourcen auf.
  149. 149. Ressourcen-Historie ‣ Zeichnet die Auslastung bestimmter Ressourcen auf. ‣ Trend-Analyse
  150. 150. Ressourcen-Historie ‣ Zeichnet die Auslastung bestimmter Ressourcen auf. ‣ Trend-Analyse ‣ Was war nach meiner PR-Aktion auf den Servern los?
  151. 151. 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?
  152. 152. 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?
  153. 153. Wartung
  154. 154. Wartung
  155. 155. Wartung ‣ OS-Aktualisierungen. Minor-, Major-, Distributions-Updates.
  156. 156. 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.
  157. 157. 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, ...
  158. 158. 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.
  159. 159. 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.
  160. 160. 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. ‣ ...
  161. 161. Fazit Ist ja alles gut zu wissen, aber...
  162. 162. Fazit ... wer kommt neben all diesen Dingen noch zum programmieren?
  163. 163. Fragen?
  164. 164. 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

×