将Amazon EC2与S3和AWS的AWS结合在一起

如果下面的情况是可行的,我想看看。 另外,如果你认为我发现有什么不对,请不要犹豫。

我不得不为三个不同的地点运行3个不同的服务器(不同的服务器提供商)的公司build立一个系统架构模式,并且他们每个服务器托pipe50 ++网站。

所以,现在呢,就是这样的:

Server1有一个很大的MySql数据库,每个其他服务器(server2,server3和included server1)都使用它与远程mysql连接。

所以,

来自server1服务器的MySQL服务器:

  • server1(本地)
  • server2(远程)
  • server3(远程)

域名website1.com下的Server1有一个包含服务器上所有其他网站(包括服务器1)的图像的文件夹,都必须访问它们。

例如:

website1.com使用图片文件image / image1.jpg,同时website2.com和website3.com使用相同的image1.jpg作为http://website1.com/image/image1.jpg

另外,每个服务器上的每个网站都会检查每个文件是否存在。 其实检查是由PHP完成,所以在服务器端。 他们检查图像是否存在本地使用if_file_exist()和远程if (getheaders() ==200 )

例如

如果访问者尝试访问website1.com,则website1.com(实际上是server1)检查if website1.com/image/image1.jpg exists 。 此外,如果访问者尝试访问website21.com,则网站21(实际上是服务器2)检查if header of http://website1.com/image/image1.jpg == 200

所以,

server1上的website1.com/image/image1.jpg访问并检查所有网站是否存在图像:

  • website1.com
  • website2.com
  • ….
  • website21.com
  • website22.com
  • ….
  • website31.com
  • website32.com
  • ….

我的想法是,

最好的情况可能是以下几点:

3个AWS EC2实例作为运行服务器。 1个拥有/ image / folder 1文件夹中的所有文件的AWS S3存储桶1个RDS数据库,服务于3个EC2实例中托pipe的所有网站。

在这种情况下,

一个EC2实例可以从S3存储桶中获取并检查文件是否存在,同一个EC2实例将从RDS获取数据库中的数据。

如果我是正确的,那么从EC2实例检查文件是否存在并从S3中获取的延迟应该是非常低的,因为它应该是通过AWS基础架构“本地”的。

而且由于相同的原因,对共享的RDS的查询应该更快且更安全。

所以,

如果访问者访问website1.com

我们将有以下几点:

website1.com – > EC1实例

  • 来自EC1的html / php文件
  • 从RDS获取查询数据
  • 从S3存储桶中获取图像数据

website21.com – > EC2实例

  • 来自EC2的html / php文件
  • 从RDS获取查询数据
  • 从S3存储桶中获取图像数据

是一个可行的scheme? 或者我看到错误?

你有没有看到其他的select?

另外一个select:

通过使用Amazon CloudFront而不是S3,它能够更快地解决问题吗?

编辑

由于以下原因应该进行检查:

image1.jpg是一个图像。 而image1-es.jpg是特定国家ES(西class牙)的专用图片。

换句话说,服务器应该检查是否有来自ES(西class牙)的访问者的图像,如果没有,服务器的一般形象。

你计划可能会工作,但可能不是最佳的。 S3不是一个文件系统,所以你的应用程序可能需要重写才能利用它。 有些软件可以使它看起来有点像文件系统。

你可能会更好使用

  • EC2虚拟机
  • EBS卷最有可能运行操作系统。 如果您不关心与其他实例共享这些文件,可以在EBS卷上放置部分或全部文件(静态+ PHP)。
  • EFS(Elasic文件系统)来存储共享文件。 如果你运行WordPress的话,整个WordPress的安装可以在这里 – 这样,如果你扩展到多个运行同一个网站的Ec2实例你的wp-content文件夹,这样共享,你只需要维护一个WordPress的实例。 请注意,这可能仍处于testing阶段。
  • CloudFront用于CDN文件传送
  • RDS用于数据库

服务地区特定的文件是您的软件和亚马逊基础设施的责任。