/ *我是新来的,我已经完成了几天的研究。 * /
与多个自动缩放的Google Compute Engine虚拟机共享文件的最佳做法是什么?
我计划使用NGINX设置一个虚拟机实例组,以便为多个域提供静态文件。这些虚拟机会自动调整为n(自身相乘),文件会发生很大变化。我需要存储这些虚拟机将要服务的文件。
到目前为止,我已经找到了这些解决方案:
1)持久磁盘+ rsync - >这应该具有最小的延迟,但是当我达到GB的文件时,自动缩放的VM将在它们产生后很长时间同步,从而抛出404s。
2)没有网络服务器的主虚拟机+ nfs / smb - >延迟小,但没有冗余。
3)云存储+ FUSE - >大延迟,高冗余,无SLA。
4)共享永久磁盘 - >延迟很小,但是只读。
5)NGINX + Cloud SQL / Bigtable / Spanner / Datastore - > Mehish延迟,我对将网络服务器连接到数据库感觉不舒服。
还有其他更好的解决方案吗?
由于
编辑:静态文件是多个index.html文件 - >多个域名的主页。
答案 0 :(得分:1)
还有:
6)Firebase托管 - https://firebase.google.com/docs/hosting
或
7)另一种方式 - 我个人会选择云端存储,而不是FUSE。或者至少不是为了服务。您仍然可以使用FUSE写入Bucket(s)。当然,最好的方法是在应用程序中使用 Cloud Storage API 。
提供文件:
我会创建一个负载均衡器,其中后端存储桶与应用程序写入的存储桶相同。另外,请注意在负载均衡器上启用 Cloud CDN 。
更多详情:
负载均衡器 - https://cloud.google.com/load-balancing/
云CDN - https://cloud.google.com/cdn/
或只是加粗,现在在https://console.cloud.google.com/networking/loadbalancing/loadBalancers/list?project=
创建一个负载均衡器答案 1 :(得分:1)
对于提供静态文件,最好使用负载均衡器和后端存储区,并启用启用云CDN 。 负载均衡器具有转发流量的规则。例如,它可以拦截主机,子域或路径的所有请求。
*.mysite1.com => bucket1
demo.mysite2.net => bucket1
test.mysite3.com => bucket2
由于文件以 Cloud CDN 提供,因此延迟变得极小。
要将文件写入存储桶,您可以使用 FUSE ,或在本地创建文件并使用gsutil cp
。
永久磁盘只能在读取模式下在多个计算引擎中共享。如果你需要写模式,它将无法工作。
最后一个选项Cloud SQL + Nginx实际上非常不错。 Cloud SQL比Mysql服务器更快。云sql和gce之间的连接简单可靠。 但这里更多的是偏好问题......如果你觉得编写可以读写的脚本感觉很舒服。