Loại cấu hình AWS nào là cần thiết để chạy ứng dụng bản đồ Web băng thông thấp đến trung bình?


17

Có ai có kinh nghiệm với việc chạy bản đồ Web (máy chủ ô vuông + tập lệnh JS của máy khách) trên Amazon Web Services (S3, EC2, v.v.) không? Loại cấu hình AWS nào là cần thiết để chạy ứng dụng bản đồ Web băng thông thấp đến trung bình, bao phủ một khu vực nhỏ (-ish) (từ thành phố đến quốc gia nhỏ)?

Tất cả các ô sẽ được kết xuất trước và tải lên S3. Lý tưởng nhất là tôi sẽ cần một ứng dụng phục vụ lát trên máy chủ web có thể phục vụ MBTiles (thay vì tải lên hàng trăm nghìn bitmap gạch riêng lẻ). Vì vậy, một số loại EC2 sẽ là cần thiết, nhưng loại nào?

Cảm ơn cho bất kỳ gợi ý.

CẬP NHẬT: chỉ để giải thích về câu hỏi của tôi. Những gì tôi về cơ bản đang tìm kiếm là một số thông tin phản hồi về việc AWS khả thi như thế nào để lưu trữ bản đồ web của riêng bạn với tư cách cá nhân (có nghĩa là không nên tốn quá nhiều tiền, lên tới $ 30 / tháng). Tôi đã lưu trữ bản đồ web của mình một thời gian thông qua các nhà cung cấp dịch vụ lưu trữ "thông thường", nhưng chúng có những hạn chế riêng (băng thông tải lên là một, tốc độ là khác). Tôi cũng đang tìm kiếm bất kỳ lựa chọn thay thế tốt nào cho AWS và bất cứ điều gì cần chú ý khi sử dụng dịch vụ đám mây cho bản đồ web.


3
Một dự án "Xây dựng máy chủ lát gạch quốc gia" Maperver + MapProxy + AWS (EC2) Postgres trên ub
Mapperz

1
@Mapperz cảm ơn vì đường link. Thiết lập của họ có nhiều tham vọng hơn, với đường ống kết xuất gạch chạy hoàn toàn trên AWS, vì vậy điều này (tôi tưởng tượng) có thể khá tốn kém. Nhưng một tiết lộ là MapProxy, vì nó hỗ trợ MBTiles.
Igor Brejc

1
sử dụng máy chủ có kích thước nhỏ và phục vụ khoảng 500 MB dữ liệu gis tôi đã được amazon thông báo rằng tôi đủ điều kiện cho cấp miễn phí. chỉ cần nói
Brad Nesom

Câu trả lời:


6

Khi chọn một kiến ​​trúc cho một dịch vụ phụ thuộc rất nhiều vào kiến ​​trúc 'cổ điển' như bản đồ web không bao giờ đánh giá thấp hiệu quả của các giải pháp lưu trữ truyền thống hơn như RackSpace Cloud Servers hoặc Linode .

Bạn sẽ có ít lựa chọn hơn để thực hiện (như sử dụng S3 hay không, tải cân bằng hay không, sao lưu, v.v. hay không và chi phí sẽ là bao nhiêu?) Mà kết quả rất khó dự đoán VÀ, quan trọng hơn là bạn sẽ có thể sử dụng các công cụ mà bạn đã quen thuộc.

Đã từng trải qua chính tôi một thời gian trước đây tôi có thể nói với bạn rằng các yếu tố quan trọng trong quyết định của tôi để lưu trữ một dịch vụ bản đồ web trên Rackspace chứ không phải AWS là:

  1. Cloud Server có khả năng phục hồi (nhiều hơn) so với phiên bản EC2. Các trường hợp EC2 thực sự được dự kiến ​​sẽ thất bại và chúng sẽ thất bại
  2. Khối lượng EBS cũng thất bại (có rất nhiều câu chuyện buồn trong tin tức) và nói chung có I / O kém
  3. trừ khi bạn chọn các trường hợp I / O lớn hơn có thể là một vấn đề (đặc biệt nếu bạn có kế hoạch gieo hạt trên EC2, thay vì sao chép chúng). Nó cũng có thể là một vấn đề với cơ sở dữ liệu MTBtiles
  4. Bất cứ khi nào bạn khởi động lại máy chủ, ip công cộng sẽ thay đổi: điều này không xảy ra trên Linode hoặc Rackspace
  5. Bạn sẽ phải tự mình đưa ra một chiến lược sao lưu và khôi phục trong khi cả Linode và Rackspace đều cung cấp điểm và nhấp vào ảnh chụp nhanh tự động hàng ngày và hàng tuần và khôi phục
  6. Nếu máy chủ chạy VPS của bạn không thành công, Rackspace sẽ đảm nhiệm việc di chuyển cá thể của bạn và khởi động lại nó trên một máy chủ khác và họ sẽ thực hiện việc này trong 4h (đó là SLA của họ). Nó xảy ra với tôi khi tôi đang đi nghỉ: cảm thấy rất chuyên nghiệp. Linode nên làm như vậy
  7. Linode có SLA khả dụng lớn: 99,9% và họ yêu cầu hiệu suất tuyệt vời vì họ không cung cấp quá nhiều
  8. Rackspace gần đây đã đưa ra một chiến lược âm lượng như EBS để không gian đĩa không còn là vấn đề nữa. Trước đây nếu bạn cần nhiều dung lượng ổ đĩa, bạn phải lấy một thể hiện lớn trong khi trên EC2, bạn có thể cung cấp bộ nhớ, cpu và bộ nhớ với sự kiểm soát tốt hơn

Với điều này, tôi không nói rằng Amazon AWS kém hơn những người khác, tôi chỉ nói rằng đôi khi các giải pháp lưu trữ truyền thống có thể mở rộng cũng như các giải pháp dựa trên Đám mây. Một ví dụ đáng chú ý là mạng StackExchange .


Vì vậy, trong trường hợp của bạn, tôi sẽ khởi động một thể hiện lớn trên Rackspace và sau đó tải tất cả dữ liệu trong một cá thể Postgis cục bộ. Sau đó, sau khi cấu hình công cụ kết xuất, tôi sẽ chọn bộ đệm. Một ví dụ lớn sẽ hoàn thành quá trình gieo đủ nhanh để nó không trở nên quá đắt để chạy. Bạn có thể lưu trữ các ô trong fs, MTBtiles, thậm chí trên S3 (btw, bạn có thể cung cấp dữ liệu S3 trên CDN bằng CloudFront ).

Sau khi quá trình gieo hạt hoàn thành, tôi sẽ khởi động lại máy chủ và thay đổi kích thước của nó thành một thể hiện nhỏ (thậm chí là 512 MB) vì tại thời điểm đó, nó sẽ chỉ phải cung cấp dữ liệu tĩnh.


Đây là một câu trả lời dài nên tôi sẽ dừng ở đây. Nếu bạn muốn tôi giải thích về các khía cạnh nhất định, chỉ cần thả một nhận xét.

Tuyên bố miễn trừ trách nhiệm: Tôi không liên kết với Rackspace, Linode hoặc bất kỳ nhà cung cấp nào khác mà tôi đã trích dẫn.


1
Cảm ơn câu trả lời sâu sắc của bạn. Bạn đã chỉ ra một số vấn đề tôi chưa xem xét (như thay đổi IP của EC2). Rất nhiều lựa chọn để lựa chọn. Ngay bây giờ tôi không tìm kiếm nhiều sức mạnh của CPU trên nền tảng đám mây, vì tôi sẽ chỉ lưu trữ các ô kết xuất sẵn (vì vậy không có PostGIS, v.v.). Nhưng dung lượng lưu trữ, băng thông (và tốc độ) quan trọng.
Igor Brejc

Lời khuyên tuyệt vời! Những gì tôi đã nhận ra trong nhiều năm qua là bạn nên đi với AWS, nếu bạn cũng sẽ sử dụng các dịch vụ khác của họ. Nếu bạn đang tìm kiếm máy ảo trên đám mây, tốt nhất nên đến các nhà cung cấp khác như Digital Ocean, Linode, v.v ... Đây sẽ là một loại tiền rẻ hơn sẽ mạnh hơn.
Devdatta Tengshe

5

Tôi đã sử dụng WebFaction để lưu trữ dữ liệu GIS trong cơ sở dữ liệu Postgresql / PostGIS với MapServer và tôi nghĩ rằng dịch vụ này không có đối thủ về chi phí <$10mỗi tháng. Nếu bạn muốn sử dụng PostGIS 2.0, bạn cần phải tự cài đặt nó, điều này hơi khó, nhưng họ cung cấp PostGIS 1.5 theo mặc định (bạn cần mở một vé hỗ trợ). Đây là một dịch vụ lưu trữ được chia sẻ trên CentOS, nơi bạn có thể hoàn toàn linh hoạt để cài đặt mọi thứ trong phần máy chủ của riêng bạn.

Tôi chưa sử dụng Webfaction để phục vụ gạch, nhưng chúng cung cấp 100GB dung lượng; Tôi không chắc liệu RAM có quá tốn kém hay không vì mặc định là 256 MB (và mỗi khối 256 có giá thêm 7 đô la mỗi tháng)


Ngẫu nhiên, có thể bao gồm một liên kết giới thiệu khi trả lời các câu hỏi như thế này? Nó không có ý thức ảnh hưởng đến quan điểm của tôi, nhưng về lý thuyết nó có thể!
djq

1
cảm ơn vì gợi ý Giá của WebFaction trông thật hấp dẫn. Quá tệ, họ không cung cấp thêm thông tin về các ứng dụng họ cung cấp. Việc cài đặt PostGIS và MapServer khó khăn như thế nào trên BTW?
Igor Brejc

Nếu PostGIS 1.5 là tất cả những gì được yêu cầu thì đó chỉ là một vé hỗ trợ. PostGIS 2.0 không quá phức tạp nhưng nó chỉ yêu cầu tải xuống và cài đặt một vài gói như GDAL, v.v ... Nhân viên hỗ trợ rất hữu ích và nhanh chóng phản hồi. (nhận ra tôi đã xóa một số câu trả lời của mình khi viết; sẽ cập nhật nó.).
djq

1
Gần đây tôi đã cài đặt MapServer và TinyOWS trên tài khoản webhosting WebFaction của mình. Dữ liệu không gian của tôi được lưu trữ trong cơ sở dữ liệu PostGIS 1.5 trên cùng một tài khoản webhosting. Tôi đã mô tả các bước tôi đã làm để tạo dịch vụ WMS MapServer và chạy ở đây: link
jirikadlec2

5

Một khả năng khác sử dụng AWS:

Bạn có thể muốn xem xét bằng cách sử dụng phương pháp AWS Lambda Tiler mà Seth Fitzsimmons đã nghĩ ra. Anh ấy đã sử dụng nó cho dự án Open Aerial Map và tôi đã sử dụng nó cho một dự án khách hàng cá nhân khi làm việc tại Stamen Design.

Có một bài viết trên blog kỹ lưỡng mà tôi đã viết rằng tài liệu về cách thiết lập AWS Lambda Tiler trên Medium.com . Lưu ý rằng bài đăng trên blog chỉ bao gồm dữ liệu raster, nhưng chúng tôi cũng đã sử dụng quy trình này tại Stamen để điều khiển các ô bản đồ Terrain Classic toàn cầu của chúng tôi được tạo từ sự kết hợp của dữ liệu OSM và Natural Earth thông qua PostgreQuery, PostGIS, Mapnik và CartoCSS.

Một trong những lợi ích của phương pháp này là bạn không có máy chủ ô vuông để duy trì và bạn chỉ trả tiền cho mỗi lần sử dụng mỗi lệnh gọi hàm AWS Lambda, điều mà tôi khá chắc chắn là ở phía giá rẻ cho các dự án nhỏ hơn mà không nhận được một lượng lớn lưu lượng truy cập web. Một trong những nhược điểm của phương pháp này là các ô được người dùng gieo hạt và phóng to bản đồ, do đó, kết xuất đầu tiên có thể ở phía chậm, mặc dù bạn có thể chọn trước các ô trước. Các ô được ghi và lưu vào S3 sau khi chúng được hiển thị lần đầu tiên, do đó việc tải ô tiếp theo sẽ nhanh hơn nhiều.


Câu trả lời tốt đẹp. Có cách nào tự động để phát triển gạch Vector với bất kỳ dịch vụ AWS nào không?
Giấc mơ quỷ dữ

Không chắc ý của bạn là "tự động" nhưng hướng dẫn của Brain Bancroft về cách thiết lập máy chủ MVT bằng Tegola trên AWS là một phương pháp như vậy: bancroft.io/blog/mvt-server-2
clhenrick

3

Để có được giá chi tiết cho các dịch vụ AWS, bạn có thể sử dụng máy tính trực tuyến có tại đây: http://calculator.s3.amazonaws.com/calc5.html

Đối với một phiên bản EC2 nhỏ chạy Linux, nếu bạn sẵn sàng cam kết một năm, bạn có thể mua một Instance Instance sẽ có giá khoảng 25 đô la / tháng. Đó là so với khoảng 44 / tháng cho giá theo yêu cầu, hoặc giá không có hợp đồng.

Tôi nghĩ rằng câu trả lời ngắn cho câu hỏi của bạn là nếu bạn đang tìm kiếm một nhà cung cấp cơ sở hạ tầng để chăm sóc các nhu cầu ứng dụng bản đồ web cá nhân của bạn, AWS có thể là quá mức cần thiết. Nếu bạn đang tìm kiếm nhà cung cấp CNTT cho các ứng dụng sản xuất, đặc biệt nếu họ yêu cầu HA và khả năng mở rộng, thì AWS là câu trả lời của bạn. Điều này càng trở nên đúng hơn nếu bạn đang tạo các ứng dụng tận dụng nhiều dịch vụ keo mà AWS cung cấp, chẳng hạn như SQS, SNS, SWF, v.v.

Bạn cần loại EC2 nào? Đó là một chức năng yêu cầu ứng dụng cụ thể của bạn. Điểm chung của CNTT dựa trên đám mây là bạn có thể thử trước khi mua. Kiểm tra ứng dụng của bạn mà không cần cam kết và chỉ khi bạn biết, mới đưa ra quyết định có căn cứ về việc cam kết loại EC2 trong một khoảng thời gian (mua RI).


3

Tôi không phải là một chuyên gia có nhiều hoặc thực sự có bất kỳ kiến ​​thức nào về nó ngoài việc tôi đang chạy một máy chủ web trên amazon EC2 một thời gian, vì vậy đây không phải là một câu trả lời.

Tôi không chắc chắn bạn đang sử dụng những công cụ này để sử dụng tốt nhất bằng cách kết xuất trước và tải lên.

  • Phần lớn nhất của chi phí aws của tôi là vào việc chuyển dữ liệu của tôi (những gì bạn đang nói về việc tải).
  • Máy chủ của bạn phải làm gì khác (trừ khi bạn đang sử dụng giấy phép để kết xuất các ô và không có giấy phép cho AWS).

Nếu điều đó không ngăn cản hoặc gây ra suy nghĩ lại, trước tiên, có thể chọn máy chủ bản đồ yêu thích của bạn, sau đó chọn một hệ điều hành được hỗ trợ cho máy chủ bản đồ đó, sau đó truy cập AWS EC2 và tìm Trường hợp đáp ứng tốt nhất nhu cầu của bạn (kích thước, bộ nhớ, không gian, khu vực).
Có thể có hoặc không có AMI chứa tất cả ngăn xếp bạn cần để tiếp theo lấy cấu hình và sau đó cài đặt ngăn xếp của bạn.
Có một khả năng mạnh mẽ là bạn sẽ hoàn thành tất cả những điều đó với giá "miễn phí" hoặc giá rẻ.


1
cảm ơn câu trả lời của bạn. Tôi đồng ý kết xuất trước là không lý tưởng, nhưng kết xuất theo yêu cầu đòi hỏi nhiều tài nguyên ứng dụng đám mây hơn, cũng khá tốn kém. Trong kịch bản kết xuất trước, máy chủ chỉ phải tìm nạp các khối từ bộ lưu trữ MBTiles (sqlite) và phục vụ chúng, do đó bạn cần ít CPU hơn, lưu trữ đĩa và không có RDBMS thực. Và nếu bạn giới hạn mức thu phóng cao nhất ở mức có thể quản lý được thì sẽ không có nhiều ô để tải lên. BTW Tôi đã cập nhật câu hỏi của tôi một chút.
Igor Brejc

0

Điều đó đúng, bạn có thể đến AWS nếu bạn đang sử dụng các dịch vụ khác nhau của họ vì AWS khá tốn kém. Nếu bạn muốn đi với giá rẻ hơn với cùng lợi ích, tôi sẽ giới thiệu cho https://fxdata.cloud hoặc https://digitalocean.com vì cả hai đều có dịch vụ đáng giá và giá rẻ nhất. Về cơ bản, bạn sẽ nhận được tất cả các tùy chọn OS và DBMS với độ tin cậy cao.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.