在Jelastic/PHP中,单个节点上的多个cloudlet共享文件空间吗?

Ola*_*lav 3 php upload scaling jelastic

我使用Jelastic来托管PHP应用程序.编辑者可以通过存储在文件系统中的应用程序上传图片.这些图片存储在文档根目录中,并在前端提供,例如http://example.com/uploads/123/picture.jpeg

对于NGinx应用服务器,我已启用垂直缩放但具有单个节点,即没有水平缩放.

图片上传不可靠.当我通过我的PHP管理界面更新图片#1,然后更新另一张图片时,图片#1已更改回旧图片.

我的问题:图片上传是否在单个节点上跨多个cloudlet同步?如果我水平扩展到多个节点会发生什么?

Dam*_*ift 6

我的问题:图片上传是否在单个节点上跨多个cloudlet同步?

我认为这里有一个术语问题.

Cloudlet:由RAM和CPU使用率组成的复合资源单元.1 Cloudlet = 128MB RAM和大约 200MHz CPU.服务器(Jelastic将其称为"节点")通常使用多个cloudlet; 例如,它可以在任何给定时刻使用几GB RAM和/或几GHz CPU.

有关详细信息,请访问http://kb.layershift.com/introducing-cloudlets

每个节点都是一个独立的(虚拟)服务器,具有自己的文件系统.因此,如果你有一个NGINX PHP应用服务器,它是否使用1或100个cloudlets无关紧要(记住,这只是对RAM和CPU消耗的测量!),它有1个文件系统和你的所有文件成功写入将有任何后续请求.

如果我水平扩展到多个节点会发生什么?

对,你必须要小心.如果您的应用程序正在写入本地文件系统,则在处理多个水平扩展服务器时会遇到问题.这是每个应用程序必须处理的非常典型的扩展问题.

如果我们只是谈论静态资源(例如图像),处理此问题的最佳和最简单的方法之一是将所有这些上载到单个服务器.例如,如果您有4台NGINX PHP服务器 - 假设它们负载平衡your-application.com - 您可以制作其中一台服务器(或者可能是一个完全独立的环境)images.your-application.com

因此,您可以上传到ima​​ges.your-application.com,并在希望显示上传的图像时直接在HTML中引用.

请记住,images.your-application.com仅负责提供实际图像; 所以它非常轻巧,只需要垂直缩放就能处理好体积 - 这在Jelastic上是完全自动的.

当您需要扩展images.your-application.com时,最简单的方法是采用CDN服务(CloudFlare,Incapsula等).这将使images.your-application.com仅处理上传和少量尚未在CDN缓存的下载流量.