Welche Art von AWS-Konfiguration ist zum Ausführen einer Webkarten-App mit niedriger bis mittlerer Bandbreite erforderlich?


17

Hat jemand Erfahrung mit dem Ausführen von Webkarten (Kachelserver + Client-JS-Scripting) auf Amazon Web Services (S3, EC2 usw.)? Welche Art von AWS-Konfiguration ist erforderlich, um eine Webkarten-App mit niedriger bis mittlerer Bandbreite auszuführen, die einen kleinen (-ish) Bereich abdeckt (von Stadt zu Kleinland)?

Alle Kacheln würden vorgerendert und in S3 hochgeladen. Im Idealfall benötige ich eine Kachel-Serving-App auf dem Webserver, die MBTiles bereitstellen kann (anstatt Hunderttausende Kachel-Bitmaps einzeln hochzuladen). Es wäre also eine Art EC2-Instanz erforderlich, aber welche?

Vielen Dank für alle Hinweise.

UPDATE: Nur um auf meine Frage einzugehen . Was ich grundsätzlich suche, ist ein Feedback darüber, wie tragfähig AWS ist, um Ihre eigenen Webkarten als Einzelperson zu hosten (was bedeutet, dass es nicht zu viel kosten sollte, sagen wir bis zu 30 USD / Monat). Ich habe meine Webkarten für einige Zeit über "normale" Hosting-Anbieter gehostet, aber diese haben ihre eigenen Einschränkungen (Upload-Bandbreite ist eine, Geschwindigkeit ist eine andere). Ich suche auch nach guten Alternativen zu AWS und nach allem, was bei der Verwendung von Cloud-Diensten für Webkarten zu beachten ist.


3
Ein Projekt "Aufbau eines nationalen Kachelservers" Mapserver + MapProxy + AWS (EC2) Postgres auf ubuntu speakerdeck.com/u/walkermatt/p/building-a-national-tile-server
Mapperz

1
@Mapperz danke für den Link. Das Setup ist etwas ambitionierter, da die Kachel-Rendering-Pipeline vollständig auf AWS ausgeführt wird, was (wie ich mir vorstellen kann) ziemlich teuer sein kann. Eine Offenbarung ist jedoch MapProxy, da es MBTiles unterstützt.
Igor Brejc

1
Wenn ich den kleinen Server verwende und ungefähr 500 MB GIS-Daten bereitstelle, wird mir von Amazon mitgeteilt, dass ich mich für die kostenlose Stufe qualifiziere. nur zu sagen
Brad Nesom

Antworten:


6

Unterschätzen Sie bei der Auswahl einer Architektur für einen Service, der sich so sehr auf eine „klassische“ Architektur wie Webkarten stützt, niemals die Wirksamkeit herkömmlicher Hosting-Lösungen wie RackSpace Cloud Server oder Linode .

Sie haben viel weniger Auswahlmöglichkeiten (wie S3 verwenden oder nicht, Load Balancer oder nicht, Backups usw. oder nicht und wie viel kostet das?), Deren Ergebnis schwer vorherzusagen ist UND, was noch wichtiger ist, Sie können Verwenden Sie Tools, mit denen Sie bereits vertraut sind.

Nachdem ich das vor einiger Zeit selbst durchgemacht habe, kann ich Ihnen sagen, dass die entscheidenden Faktoren für meine Entscheidung, einen Webkarten-Service auf Rackspace anstatt auf AWS zu hosten, folgende waren:

  1. Cloud Server sind (stabiler) als EC2-Instanzen. Es wird erwartet , dass EC2-Instanzen tatsächlich fehlschlagen, und sie werden fehlschlagen
  2. EBS-Volumes scheitern ebenfalls (es gibt viele traurige Nachrichten) und weisen im Allgemeinen eine schlechte E / A auf
  3. Wenn Sie nicht die E / A-Konflikte für größere Instanzen auswählen, kann dies ein Problem sein (insbesondere, wenn Sie die Kacheln in EC2 einbinden möchten, anstatt sie zu kopieren). Es könnte auch ein Problem mit MTBtiles-Datenbanken sein
  4. Jedes Mal, wenn Sie Ihren Server neu starten, ändert sich die öffentliche IP-Adresse: Dies ist bei Linode oder Rackspace nicht der Fall
  5. Sie müssen selbst eine Backup- und Restore-Strategie entwickeln, während sowohl Linode als auch Rackspace tägliche und wöchentliche automatische Snapshots und Restores per Mausklick bereitstellen
  6. Wenn der Host, auf dem Ihr VPS ausgeführt wird, ausfällt, sorgt Rackspace dafür, dass Ihre Instanz verschoben und auf einem anderen Server neu gestartet wird. Dies geschieht in 4 Stunden (dies ist in ihrem SLA enthalten). Das ist mir im Urlaub passiert: Es fühlte sich sehr professionell an. Linode sollte dasselbe tun
  7. Linode hat eine SLA mit hervorragender Verfügbarkeit: 99,9% und sie behaupten, dass sie eine hervorragende Leistung erbringen, weil sie nicht zu viel Leistung erbringen
  8. Rackspace hat kürzlich eine Volume-Strategie wie EBS entwickelt, sodass der Speicherplatz kein Problem mehr sein sollte. Wenn Sie zuvor viel Speicherplatz benötigt haben, um eine große Instanz auf EC2 zu erhalten, konnten Sie Speicher, CPU und Speicher mit einer genaueren Steuerung bereitstellen

Damit sage ich nicht, dass Amazon AWS anderen unterlegen ist, sondern dass herkömmliche Hosting-Lösungen manchmal sowohl skalierbar als auch Cloud-basiert sind. Ein bemerkenswertes Beispiel ist das StackExchange- Netzwerk.


In Ihrem Fall würde ich also eine große Instanz auf Rackspace starten und dann alle Daten in eine lokale Postgis-Instanz laden. Nach der Konfiguration der Rendering-Engine würde ich dann den Cache aussortieren. Eine große Instanz führt den Seeding-Vorgang so schnell aus, dass die Ausführung nicht zu teuer wird. Sie können Kacheln in der Datei fs, MTBtiles, auch in S3 speichern (übrigens können Sie S3-Daten auf einem CDN mit CloudFront bereitstellen ).

Nach Abschluss des Seedings würde ich den Server neu starten und seine Größe in eine kleine Instanz (möglicherweise sogar 512 MB) ändern, da zu diesem Zeitpunkt nur statische Daten bereitgestellt werden müssten.


Dies wird eine ziemlich lange Antwort, also höre ich hier auf. Wenn Sie möchten, dass ich bestimmte Aspekte erläutere, schreiben Sie einfach einen Kommentar.

Haftungsausschluss: Ich bin nicht mit Rackspace, Linode oder einem anderen von mir genannten Anbieter verbunden.


1
Vielen Dank für Ihre ausführliche Antwort. Sie haben auf einige Punkte hingewiesen, die ich nicht berücksichtigt habe (z. B. die Änderung der IP-Adresse von EC2). Viele Optionen zur Auswahl. Im Moment suche ich nicht viel Cloud-CPU-Leistung, da ich nur vorgerenderte Kacheln hosten werde (also kein PostGIS usw.). Speicherkapazität, Bandbreite (und Geschwindigkeit) sind jedoch wichtig.
Igor Brejc

Guter Rat! Im Laufe der Jahre habe ich festgestellt, dass Sie sich für AWS entscheiden sollten, wenn Sie auch deren andere Dienste nutzen möchten. Wenn Sie nach VMs in der Cloud suchen, ist es am besten, andere Anbieter wie Digital Ocean, Linode usw. zu wählen. Dies ist billiger, da es robuster ist.
Devdatta Tengshe

5

Ich habe WebFaction zum Hosten von GIS-Daten in einer Postgresql / PostGIS-Datenbank mit MapServer verwendet und denke, dass der Service für die Kosten <$10pro Monat konkurrenzlos ist . Wenn Sie PostGIS 2.0 verwenden möchten, müssen Sie es selbst installieren, was etwas schwierig ist, aber standardmäßig wird PostGIS 1.5 bereitgestellt (Sie müssen ein Support-Ticket öffnen). Dies ist ein gemeinsam genutzter Hosting-Dienst unter CentOS, bei dem Sie die volle Flexibilität haben, um alles in Ihrem eigenen Teil des Servers zu installieren.

Ich habe Webfaction nicht für das Servieren von Kacheln verwendet, aber sie bieten 100 GB Speicherplatz. Ich bin mir nicht sicher, ob der Arbeitsspeicher zu teuer wäre, da der Standardwert 256 MB beträgt (und jeder 256-Block zusätzlich 7 USD pro Monat kostet).


Ist es im Übrigen in Ordnung, bei der Beantwortung solcher Fragen einen Empfehlungslink anzugeben? Es beeinflusst meine Sichtweise nicht bewusst, könnte es aber theoretisch!
djq

1
danke für den Tipp. Die Preise von WebFaction sehen sehr einladend aus. Schade, dass sie keine weiteren Informationen zu den von ihnen angebotenen Apps anbieten. Wie schwer war die Installation von PostGIS und MapServer?
Igor Brejc

Wenn nur PostGIS 1.5 erforderlich ist, handelt es sich nur um ein Support-Ticket. PostGIS 2.0 ist nicht zu knifflig, erfordert jedoch lediglich das Herunterladen und Installieren einiger Pakete wie GDAL usw. Die Support-Mitarbeiter sind jedoch sehr hilfsbereit und reagieren schnell. (Erkenne, dass ich einige meiner Antworten beim Schreiben gelöscht habe; werde es aktualisieren.)
Dienstag,

1
Ich habe kürzlich MapServer und TinyOWS auf meinem WebFaction-Webhosting-Konto installiert. Meine Geodaten werden in einer PostGIS 1.5-Datenbank auf demselben Webhosting-Konto gespeichert. Ich beschreiben die Schritte , die ich ein MapServer WMS - Service - up machen tat und laufen hier: Link
jirikadlec2

5

Eine weitere Möglichkeit, die AWS verwendet:

Möglicherweise möchten Sie die von Seth Fitzsimmons entwickelte AWS Lambda Tiler-Methode verwenden. Er hat es für das Open Aerial Map-Projekt verwendet und ich habe es für ein Privatkundenprojekt verwendet, als ich bei Stamen Design gearbeitet habe.

Es gibt einen ausführlichen Blogeintrag, in dem ich dokumentiert habe, wie der AWS Lambda Tiler auf Medium.com eingerichtet wird . Beachten Sie, dass der Blog-Beitrag nur Kachel-Rasterdaten behandelt. Wir haben diesen Prozess in Stamen jedoch auch verwendet, um unsere globalen Terrain Classic-Kartenkacheln zu steuern, die aus einer Kombination von OSM- und Natural Earth-Daten über PostgreSQL, PostGIS, Mapnik und CartoCSS generiert werden.

Einer der Vorteile dieses Ansatzes besteht darin, dass Sie keinen Kachelserver warten müssen und nur pro Nutzung jedes AWS Lambda-Funktionsaufrufs zahlen. Ich bin mir ziemlich sicher, dass dies für kleinere Projekte, die dies nicht tun, billig ist eine große Menge an Web-Traffic erhalten. Ein Nachteil dieses Ansatzes besteht darin, dass die Kacheln vom Benutzer verschoben und gezoomt werden, sodass das erste Rendern langsam ist, obwohl Sie die Kacheln vorzeitig aussäen können. Kacheln werden nach dem ersten Rendern in S3 geschrieben und gespeichert, sodass das anschließende Laden der Kacheln viel schneller erfolgt.


Gute Antwort. Gibt es eine automatisierte Möglichkeit, Vector Tiles mit AWS-Services zu entwickeln?
Devils Dream

Nicht sicher, was Sie mit "automatisiert" meinen, aber Brain Bancrofts Tutorial zum Einrichten eines MVT-Servers unter Verwendung von Tegola unter AWS als eine solche Methode: bancroft.io/blog/mvt-server-2
clhenrick

3

Um detaillierte Preise für AWS-Services zu erhalten, können Sie den Online-Rechner verwenden, der sich hier befindet: http://calculator.s3.amazonaws.com/calc5.html

Für eine kleine EC2-Instanz unter Linux können Sie, wenn Sie bereit sind, sich auf ein Jahr zu verpflichten, eine Reserved Instance kaufen, die etwa 25 USD pro Monat kostet. Das ist im Vergleich zu etwa 44 / Monat für On-Demand-Preise oder Preise ohne Vertrag.

Ich denke, die kurze Antwort auf Ihre Frage lautet: Wenn Sie einen Infrastrukturanbieter suchen, der sich um die Anforderungen Ihrer persönlichen Web-Mapping-Anwendung kümmert, ist AWS möglicherweise überfordert. Wenn Sie nach einem IT-Anbieter für Produktions-Apps suchen, insbesondere wenn diese HA und Skalierbarkeit erfordern, ist AWS Ihre Antwort. Dies gilt umso mehr, wenn Sie Apps erstellen, die die zahlreichen von AWS bereitgestellten Leimdienste wie SQS, SNS, SWF usw. nutzen.

Welche Art von EC2 brauchst du? Das ist eine Funktion, die Ihre Apps speziell benötigen. Der springende Punkt der Cloud-basierten IT ist, dass Sie es vor dem Kauf ausprobieren können. Testen Sie Ihre App unverbindlich und treffen Sie nur dann eine fundierte Entscheidung, ob Sie sich über einen bestimmten Zeitraum hinweg für einen EC2-Typ entscheiden (RI-Kauf).


3

Ich bin kein Experte mit viel oder gar keinem Wissen darüber, außer dass ich seit einiger Zeit einen Webserver auf Amazon EC2 betreibe. Das ist also keine Antwort.

Ich bin mir nicht sicher, ob Sie diese Tools optimal nutzen, indem Sie sie vorab rendern und hochladen.

  • Der größte Teil meiner Aws-Kosten entfällt auf meine Datenübertragung (wovon Sie beim Laden sprechen).
  • Was muss Ihr Server noch tun (es sei denn, Sie verwenden Lizenzen zum Rendern von Kacheln und haben keine Lizenz für AWS).

Wenn dies nicht abschreckt oder zu einem Umdenken führt, wählen Sie wahrscheinlich zuerst Ihren bevorzugten Kartenserver und dann ein unterstütztes Betriebssystem für diesen Kartenserver aus. Wechseln Sie dann zu AWS EC2 und suchen Sie die Instanz, die Ihren Anforderungen am besten entspricht (Größe, Speicher, Raum, Region).
Möglicherweise gibt es ein AMI, das den gesamten Stapel enthält, den Sie benötigen. Lassen Sie es als Nächstes konfigurieren und installieren Sie dann Ihren Stapel.
Es besteht die starke Möglichkeit, dass Sie all dies "kostenlos" oder kostengünstig erledigen.


1
Danke für deine Antwort. Ich stimme zu, dass Pre-Rendering nicht ideal ist, aber On-Demand-Rendering erfordert viel mehr Cloud-App-Ressourcen, die auch recht teuer sind. In einem Szenario vor dem Rendern muss der Server nur Kacheln aus einem MBTiles-Speicher (SQLite) abrufen und bereitstellen, sodass Sie viel weniger CPU, Festplattenspeicher und kein echtes RDBMS benötigen. Wenn Sie die höchste Zoomstufe auf etwas Verwaltbares beschränken, müssen nicht so viele Kacheln hochgeladen werden. Übrigens habe ich meine Frage ein bisschen aktualisiert.
Igor Brejc

0

Das stimmt, Sie können sich für AWS entscheiden, wenn Sie die verschiedenen Dienste von AWS nutzen, da dies recht kostspielig ist. Wenn Sie günstigere Preise mit den gleichen Vorteilen erzielen möchten, würde ich für https://fxdata.cloud oder https://digitalocean.com empfehlen, da beide über bemerkenswerte Services und die günstigsten Preise verfügen. Grundsätzlich erhalten Sie alle Betriebssystem- und DBMS-Optionen mit hoher Zuverlässigkeit.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.