Jaka konfiguracja AWS jest potrzebna do uruchomienia aplikacji mapy sieci o niskiej do średniej przepustowości?


17

Czy ktoś ma doświadczenie w uruchamianiu map internetowych (serwer kafelków + skrypty JS klienta) w Amazon Web Services (S3, EC2 itp.)? Jaka konfiguracja AWS jest potrzebna do uruchomienia aplikacji mapy sieci o niskiej do średniej przepustowości, obejmującej mały (-ishish) obszar (od miasta do małego kraju)?

Wszystkie kafelki zostaną wstępnie renderowane i przesłane do S3. Idealnie potrzebowałbym aplikacji do serwowania kafelków na serwerze internetowym, która mogłaby obsługiwać MBTiles (zamiast przesyłać osobno setki tysięcy bitmap kafelkowych). Potrzebna byłaby więc jakaś instancja EC2, ale jaki?

Dzięki za wszelkie wskazówki.

AKTUALIZACJA: aby rozwinąć moje pytanie. W zasadzie szukam informacji zwrotnych na temat tego, jak opłacalne jest AWS do hostingu twoich własnych map internetowych jako osoby fizycznej (co oznacza, że ​​nie powinno to kosztować zbyt wiele, powiedzmy do 30 USD / miesiąc). Od jakiegoś czasu hostuję moje mapy internetowe za pośrednictwem „zwykłych” dostawców hostingu, ale mają one swoje własne ograniczenia (przepustowość przesyłania jest jedna, prędkość inna). Szukam również dobrych alternatyw dla AWS i wszystkiego, na co należy uważać, korzystając z usług chmurowych do map internetowych.


3
Jeden projekt „Budowanie narodowego serwera kafelków” Mapserver + MapProxy + AWS (EC2) Postgres na ubuntu speakerdeck.com/u/walkermatt/p/building-a-national-tile-server
Mapperz

1
@Mapperz dzięki za link. Ich konfiguracja jest nieco bardziej ambitna, z potokiem renderowania kafelków działającym całkowicie na AWS, więc to (jak sądzę) może być dość drogie. Ale jednym z objawień jest MapProxy, ponieważ obsługuje MBTiles.
Igor Brejc

1
korzystając z małego serwera i obsługując około 500 MB danych gis otrzymałem od amazona powiadomienie, że kwalifikuję się do darmowej warstwy. tylko mówię
Brad Nesom

Odpowiedzi:


6

Wybierając architekturę dla usługi, która w tak dużym stopniu opiera się na „klasycznej” architekturze, takiej jak mapy internetowe, nigdy nie lekceważ skuteczności bardziej tradycyjnych rozwiązań hostingowych, takich jak RackSpace Cloud Servers lub Linode .

Będziesz miał znacznie mniej opcji do wyboru (np. Użyj S3 lub nie, równoważenia obciążenia czy nie, kopii zapasowych itp., Czy nie, a ile to będzie kosztować?), Którego wynik trudno przewidzieć ORAZ, co ważniejsze, będziesz w stanie użyj narzędzi, które już znasz.

Przeszedłem to samo jakiś czas temu, mogę powiedzieć, że krytycznymi czynnikami mojej decyzji o hostowaniu usługi map internetowych w Rackspace zamiast AWS były:

  1. Serwer w chmurze jest (bardziej) odporny niż instancje EC2. Oczekuje się, że instancje EC2 zawiodą i zakończą się niepowodzeniem
  2. Wolumeny EBS również zawodzą (w wiadomościach jest wiele smutnych historii) i ogólnie mają słabe wejścia / wyjścia
  3. chyba że wybierzesz większe instancje Rywalizacja we / wy może stanowić problem (szczególnie jeśli planujesz wysiać kafelki na EC2, zamiast kopiować je). Może to być również problem z bazami danych MTBtiles
  4. Za każdym razem, gdy uruchomisz ponownie serwer, publiczny adres IP zmieni się: nie dzieje się tak na Linode ani w Rackspace
  5. Będziesz musiał sam wymyślić strategię tworzenia kopii zapasowych i przywracania, podczas gdy zarówno Linode, jak i Rackspace zapewniają codzienne i cotygodniowe automatyczne migawki i przywracanie
  6. Jeśli host z uruchomionym VPS zawiedzie, Rackspace zajmie się przeniesieniem instancji i ponownym uruchomieniem jej na innym serwerze i zrobi to w 4 godziny (jest to w ich umowie SLA). Zdarzyło mi się, kiedy byłem na wakacjach: czułem się bardzo profesjonalnie. Linode powinno zrobić to samo
  7. Linode ma doskonałą dostępność SLA: 99,9% i deklaruje doskonałą wydajność, ponieważ nie przesadza
  8. Rackspace ostatnio opracował strategię wolumenu, taką jak EBS, więc miejsce na dysku nie powinno już stanowić problemu. Wcześniej, jeśli potrzebujesz dużej ilości miejsca na dysku, MUSISZ uzyskać dużą instancję podczas korzystania z EC2, możesz zapewnić pamięć, procesor i pamięć z lepszą kontrolą

Nie twierdzę, że Amazon AWS jest gorszy od innych, po prostu mówię, że czasami tradycyjne rozwiązania hostingowe mogą być skalowane tak samo jak rozwiązania oparte na chmurze. Godnym uwagi przykładem jest sama sieć StackExchange .


Tak więc w twoim przypadku uruchomiłbym dużą instancję w Rackspace, a następnie załadowałem wszystkie dane do lokalnej instancji Postgis. Następnie, po skonfigurowaniu mechanizmu renderowania, zasiałbym pamięć podręczną. Duża instancja zakończy proces inicjowania wystarczająco szybko, aby jego uruchomienie nie stało się zbyt drogie. Możesz przechowywać kafelki w fs, MTBtiles, nawet na S3 (przy okazji możesz obsługiwać dane S3 na CDN za pomocą CloudFront ).

Po zakończeniu inicjowania zrestartowałem serwer i zmieniłem jego rozmiar na małą (może nawet 512 MB) instancję, ponieważ w tym momencie musiałby obsługiwać tylko dane statyczne.


To dość długa odpowiedź, więc zamierzam się tutaj zatrzymać. Jeśli chcesz, żebym rozwinął pewne aspekty, po prostu napisz komentarz.

Oświadczenie: Nie jestem powiązany z Rackspace, Linode ani żadnym innym cytowanym przeze mnie dostawcą.


1
Dziękuję za szczegółową odpowiedź. Wskazałeś na niektóre kwestie, których nie wziąłem pod uwagę (np. Zmiana adresu IP EC2). Wiele opcji do wyboru. W tej chwili nie szukam dużej mocy procesora w chmurze, ponieważ będę hostował tylko wstępnie renderowane kafelki (więc bez PostGIS itp.). Ale pojemność, przepustowość (i szybkość) ważne.
Igor Brejc,

Dobra rada! Z biegiem lat zdałem sobie sprawę, że powinieneś skorzystać z AWS, jeśli zamierzasz również korzystać z ich innych usług. Jeśli szukasz maszyn wirtualnych w chmurze, najlepiej jest wybrać innych dostawców, takich jak Digital Ocean, Linode itp. To będzie tańsze podstęp, ponieważ będzie bardziej wytrzymały.
Devdatta Tengshe,

5

Używam WebFaction do hostowania danych GIS w bazie danych Postgresql / PostGIS z MapServer i myślę, że usługa ta jest bezkonkurencyjna pod względem kosztu <$10miesięcznego. Jeśli chcesz korzystać z PostGIS 2.0, musisz go zainstalować samodzielnie, co jest nieco trudne, ale domyślnie zapewniają PostGIS 1.5 (musisz otworzyć bilet pomocy technicznej). Jest to wspólna usługa hostingowa w CentOS, w której masz pełną elastyczność, aby zainstalować cokolwiek we własnej części serwera.

Nie używałem Webfaction do wyświetlania kafelków, ale zapewniają one 100 GB miejsca; Nie jestem pewien, czy pamięć RAM byłaby zbyt kosztowna, ponieważ domyślnie jest to 256 MB (a każdy 256 blok kosztuje dodatkowo 7 USD miesięcznie)


Nawiasem mówiąc, czy można podać link polecający, odpowiadając na takie pytania? Nie wpływa to świadomie na mój pogląd, ale teoretycznie może!
djq

1
dzięki za podpowiedź. Ceny WebFaction wyglądają zachęcająco. Szkoda, że ​​nie oferują więcej informacji o aplikacjach, które oferują. Jak ciężko było na nim zainstalować PostGIS i MapServer, BTW?
Igor Brejc

Jeśli wystarczy PostGIS 1.5, to tylko bilet pomocy technicznej. PostGIS 2.0 nie jest zbyt trudny, ale wymaga jedynie pobrania i zainstalowania kilku pakietów, takich jak GDAL itp. Pracownicy pomocy technicznej są jednak bardzo pomocni i szybko reagują. (zdaj sobie sprawę, że podczas pisania usunąłem część mojej odpowiedzi; zaktualizuję ją).
djq

1
Niedawno zainstalowałem MapServer i TinyOWS na moim koncie WebFaction. Moje dane przestrzenne są przechowywane w bazie danych PostGIS 1.5 na tym samym koncie hostingowym. Opisałem kroki, które zrobiłem, aby uruchomić usługę WMS MapServer tutaj: link
jirikadlec2

5

Jeszcze jedna możliwość, która wykorzystuje AWS:

Być może warto przyjrzeć się metodzie AWS Lambda Tiler, którą opracował Seth Fitzsimmons. Używał go do projektu Open Aerial Map, a ja użyłem go do projektu prywatnego klienta podczas pracy w Stamen Design.

Istnieje dokładny post na blogu, który napisałem, który dokumentuje, jak skonfigurować AWS Lambda Tiler na Medium.com . Pamiętaj, że post na blogu dotyczy tylko kafelkowania danych rastrowych, ale wykorzystaliśmy ten proces również w Stamen do napędzania naszych globalnych kafelków mapy Terrain Classic, które są generowane z kombinacji danych OSM i Natural Earth za pośrednictwem PostgreSQL, PostGIS, Mapnik i CartoCSS.

Jedną z zalet tego podejścia jest to, że nie musisz utrzymywać serwera kafelków i płacisz tylko za każde wywołanie funkcji AWS Lambda, co, jestem pewien, jest niedrogie w przypadku mniejszych projektów, które nie otrzymywać ogromną ilość ruchu w sieci. Jedną z wad tego podejścia jest to, że kafelki są zasiewane przez użytkownika przesuwania i powiększania mapy, więc pierwsze renderowanie może odbywać się wolniej, chociaż wcześniej można było wstępnie przesiać kafelki. Płytki są zapisywane i przechowywane w S3 po ich pierwszym renderowaniu, więc kolejne ładowanie płytek jest znacznie szybsze.


Niezła odpowiedź. Czy istnieje zautomatyzowany sposób tworzenia kafelków Vector za pomocą usług AWS?
Devils Dream

Nie jestem pewien, co rozumiesz przez „automatyczny”, ale samouczek Brain Bancroft dotyczący konfigurowania serwera MVT przy użyciu Tegoli na AWS jako jednej z takich metod: bancroft.io/blog/mvt-server-2
clhenrick

3

Aby uzyskać szczegółowe ceny usług AWS, możesz skorzystać z kalkulatora online znajdującego się tutaj: http://calculator.s3.amazonaws.com/calc5.html

W przypadku małej instancji EC2 z systemem Linux, jeśli chcesz poświęcić rok, możesz kupić Instancję zarezerwowaną, która będzie kosztować około 25 USD miesięcznie. To jest w porównaniu do około 44 / miesiąc dla cen na żądanie lub cen bez umowy.

Myślę, że krótka odpowiedź na twoje pytanie brzmi: jeśli szukasz dostawcy infrastruktury, który zajmie się Twoimi osobistymi aplikacjami do mapowania sieci, AWS może być przesadą. Jeśli szukasz dostawcy IT dla aplikacji produkcyjnych, zwłaszcza jeśli wymagają one wysokiej dostępności i skalowalności, AWS jest Twoją odpowiedzią. Staje się to jeszcze bardziej prawdziwe, jeśli tworzysz aplikacje, które wykorzystują wiele usług klejenia, które zapewnia AWS, takich jak SQS, SNS, SWF itp.

Jakiego rodzaju EC2 potrzebujesz? Jest to funkcja specyficzna dla Twoich aplikacji. Chodzi o to, że informatyka oparta na chmurze polega na tym, że możesz spróbować przed zakupem. Przetestuj swoją aplikację bez zobowiązań i tylko wtedy, gdy wiesz, podejmij świadomą decyzję o zaangażowaniu się w typ EC2 w określonym czasie (zakup RI).


3

Nie jestem ekspertem, który nie ma dużej wiedzy na ten temat, poza tym, że od jakiegoś czasu prowadzę serwer internetowy na Amazon EC2, więc to nie jest odpowiedź.

Nie jestem pewien, czy używasz tych narzędzi do ich najlepszego wykorzystania poprzez wstępne renderowanie i przesyłanie.

  • Największa część moich kosztów aws dotyczy transferu danych (co mówisz o ładowaniu).
  • Co jeszcze musi zrobić Twój serwer (chyba że używasz licencji do renderowania kafelków i nie masz licencji na AWS).

Jeśli to nie powstrzymuje ani nie powoduje ponownego przemyślenia, Najprawdopodobniej najpierw wybierz swój ulubiony serwer map, Następnie wybierz obsługiwany system operacyjny dla tego serwera map, Następnie przejdź do AWS EC2 i znajdź Instancję, która najlepiej odpowiada Twoim potrzebom (rozmiar, pamięć, przestrzeń, region).
Może istnieć AMI zawierający cały stos, którego potrzebujesz, więc skonfiguruj go, a następnie zainstaluj.
Istnieje duża możliwość, że osiągniesz to wszystko „za darmo” lub tanio.


1
Dziękuję za odpowiedź. Zgadzam się, że wstępne renderowanie nie jest idealne, ale renderowanie na żądanie wymaga znacznie więcej zasobów aplikacji w chmurze, które są również dość drogie. W scenariuszu wstępnego renderowania serwer musi tylko pobierać kafelki z magazynu MBTiles (sqlite) i obsługiwać je, więc potrzebujesz znacznie mniej procesora, miejsca na dysku i nie ma prawdziwego RDBMS. A jeśli ograniczysz najwyższy poziom powiększenia do czegoś, co można zarządzać, nie będziesz musiał przesyłać wielu kafelków. BTW Trochę zaktualizowałem swoje pytanie.
Igor Brejc

0

To prawda, że ​​możesz skorzystać z AWS, jeśli korzystasz z różnych ich usług, ponieważ AWS jest dość kosztowny. Jeśli chcesz wybrać tańsze ceny z tymi samymi korzyściami, poleciłbym https://fxdata.cloud lub https://digitalocean.com, ponieważ oba mają znaczące usługi i najniższe ceny. Zasadniczo otrzymasz wszystkie opcje systemu operacyjnego i DBMS o wysokiej niezawodności.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.