37
Skalieren von Rails Anwendungen mit Amazon S3 und EC2 Jonathan Weiss, Peritor Wissensmanagement GmbH 22.06.2007, Rails Konferenz

Skalieren von Rails Anwendungen mit Amazon S3 und EC2

Embed Size (px)

DESCRIPTION

A talk on how to leverage Amazon S3 and EC2 for your Rails applications. Presented at the German Rails Konferenz 2007 in Frankfurt, Germany.

Citation preview

Page 1: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

Skalieren von Rails Anwendungenmit Amazon S3 und EC2

Jonathan Weiss, Peritor Wissensmanagement GmbH22.06.2007, Rails Konferenz

Page 2: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

2

Ausgangslage

Eine Maschine:

• Apache

• Ruby / Rails

• MySQL

Page 3: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

3

Worst Case Popularität

Page 4: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

4

Steiniger Weg

Page 5: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

5

Problem: Backup

• Hochverfügbar

• Redundant

• Große Datenmengen

Page 6: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

6

Problem: File System

• Wichtige Dateien müssen allen Systemen zugänglich sein

• NFS / Samba unpraktikable Lösungen

Page 7: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

7

Problem: Plötzliche Lastspitzen

Page 8: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

8

Problem: UngleichmäßigeBelastung

Page 9: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

9

Don‘t reinvent the wheel!

Page 10: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

10

Amazon Web Services

Simple Storage Service - S3

Redundanter Speicherplatz

$0,15 per GB Speicherplatz

$0,10 - $0,20 pro GB Traffic

Virtueller Server pro Stunde

$0,10 pro CPU Stunde

$0,10 - $0,20 pro GB Traffic

Elastic Compute Cloud - EC2

…….

E-Commerce S..

Page 11: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

11

S3 - Simple Storage Service

• Beliebig viel redundanter, hochverfügbarer Speicherplatz

• max. 5 GB pro Datei

• Organisiert in „Buckets“

• Upload über Web Service API

• Abruf über

• Web Service

• HTTP / HTTPS

• BitTorrent

Page 12: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

12

S3 - Buckets

• Unique über ganz S3

• Enthalten beliebigviele Key-Value-Metadata Tupel

• Enthalten keine Buckets!

• Key kann „/“ enthalten

MyBucket_name

S3

foto_5.jpg

/backups/januar.tgz

/fotos/2007/001.png

www.peritor.com

/site/screen.css

/site/script.js

FreeBSD-6.2.iso

Page 13: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

13

S3 mit AWS::S3Upload

Download

Page 14: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

14

EC2 - Elastic Compute Cloud

• XEN basiert

• (Beliebig) viele virtuelle Server steuerbar über Web Service

• 1,7 GHz

• 1,75 GB RAM

• 160 GB lokaler Speicherplatz (nicht persistent!)

• Einsatz der Linux Distribution der Wahl (Linux 2.6.16),Verwaltung der Amazon Machine Images (AMI) auf S3

• ACLs regeln Zugriff auf Hosts / Ports

Page 15: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

15

EC2 ToolsVerfügbare Images auflisten

Neue Instanz starten

Einloggen per SSH

Instanz beenden

Page 16: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

16

Und jetzt?

Wie löse ich meineProbleme damit?

Page 17: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

17

S3 - Backup

• s3sync.rb

• Brackup

• Jungle Disk

• S3 FUSE

• s3DAV

• Duplicity

• S3Browser

• Firefox S3 Organizer extension

• …

Page 18: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

18

s3sync.rb

Backup

Restore

Page 19: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

19

S3 als asset host

Page 20: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

20

S3 als asset host

Setup DNS

Setup Rails Konfiguration

Page 21: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

21

S3 als asset host

welcome.rhtml Template

Output

Page 22: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

22

S3 - User Data Speicher

Page 23: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

23

attachment_fu Rails plugin

Setup

Page 24: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

24

attachment_fu Rails plugin

Upload

Download

Page 25: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

25

On-Demand Computing mit EC2

Zeitgesteuert, z.B. mit cron

Page 26: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

26

On-Demand Computing mit EC2

Lastgesteuert, z.B. mit Monit

Page 27: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

27

On-Demand Computing mit EC2

Page 28: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

28

Load Balancer / Proxy

Am Beispiel mod_proxy_blancer:

• Ansprechen von multiplen Backend-Servern (Mongrel)

• Zentrale Proxy/Load-BalancerKonfiguration mit Wissen über Nodes

• Typischerweise Neustart des Proxy beiVeränderung der Backend-Server

Page 29: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

29

Swiftiply

Swiftiply Proxy:

• Multiple Backend-Clients verbindensich persistent zum Backendport

• Proxy nimmt Anfragen überClusterport entgegen und verteilt sieauf verbundene Clients

Keine Re-Konfiguration nötig

Page 30: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

30

Swiftiply Proxy

Konfiguration

Start

Installation

Page 31: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

31

Swiftiplied Mongrel

• Gem plugin um Mongrel zu patchen

• Wandelt Mongrel in Swiftiply-Client um

• Noch experimentell

Start

oder

Page 32: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

32

EC2 on Demand vor Swiftiply

Page 33: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

33

EC2 on Demand mit Swiftiply

Page 34: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

34

EC2 on Demand mit Swiftiply

Page 35: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

35

Ressourcen

• Amazon Web Serviceshttp://aws.amazon.com

• Swiftiplyhttp://swiftiply.swiftcore.org

• Attachment_fuhttp://svn.techno-weenie.net/projects/plugins/attachment_fu/

• Elastic Railshttp://www.elasticrails.com

• Capazonhttp://capazon.rubyforge.org

• RightScalehttp://www.rightscale.com

• WeoCEOhttp://weoceo.weogeo.com/

Page 36: Skalieren von Rails Anwendungen mit Amazon S3 und EC2

36

Peritor Wissensmanagement GmbH

Lenbachstraße 212157 Berlin

Internet: www.peritor.comE-Mail: [email protected]

© Peritor Wissensmanagement GmbH - Alle Rechte vorbehalten

Telefon: +49 (0)30 69 40 11 94Telefax: +49 (0)30 69 40 11 95