今天我设置了一个 EC2 实例。我想知道亚马逊云上 Web 应用程序的典型架构是什么。我认为它是这样的,但我遗漏了一些东西:
- EC2 instance for Webserver (apache/nginx) and PHP
- S3 for storage (videos, images...)
- ?? for MongoDB, MySQL or anything else
我不确定这些东西是如何工作的。例如,如何设置简单的图像上传服务,其中每张图片都通过 PHP 上传,然后保存在 S3 上。稍后,当有人访问链接时,它会从 S3 显示。
答案1
您的架构相当简单。要实现这一点,
- 使用 RDS 满足您的 MySQL 需求
- 查看用于 AWS 服务的 Amazon SDK,在您的情况下为 S3 -http://aws.amazon.com/sdkforphp/
- S3 用于存储图像
PHP SDK 应该可以帮助您将图片保存到 S3。只需确保您设置了正确的 S3 存储桶策略(读/写和更新),即可确保您的 S3 安全。
您是否在 Route 53 上设置了弹性 IP 和域?
由于你似乎是新手,因此需要注意 AWS 的一些注意事项,
- 查看 Autoscaling 和 ELB 的冗余和可扩展性。
- 不要将应用程序中任何重要的内容存储在本地,除非它是 EBS 卷
- 除非您确定需要哪种实例类型,否则请始终选择容量较低的实例并根据需要增加容量。这将节省您的成本。
- 如果您确定实例类型和应用程序的寿命,请查看预留实例。购买预留实例后,在期限结束之前,您无法取消它或更改实例类型。
我强烈建议您多读一些有关这些技术的文章,然后实施它们。亚马逊的文档非常出色。
答案2
您永远都不想在生产环境中运行单个 EC2 实例。它们不耐用,随时可能永久脱机(带走存储在其上的所有数据)。在负载均衡器后面至少使用两个应用程序服务器实例。
由于您是新手,我建议您阅读 Amazon Elastic Beanstalk 的文档。它是一个类似 PaaS 的配置框架,可以更轻松地在线获得正确设计的 AWS 基础设施。