我有一个项目,它将在部署后存储大量媒体内容。项目使用Python,Django,也通过Gunicorn和Supervisor运行。
对于静态文件,我将使用nginx。
我通过遵循本文进行了基本设置,但是我有一个问题,如何才能更动态地存储内容。开始时,我有一台机器,每台机器有4个硬盘驱动器,每个硬盘2Tb,以后会再买,还有新机器(目前我只有一台)。
站点位于site.com
,nginx位于子域,i.site.com
并且在根目录中有2个文件夹:/static
用于存储css,js,svg等设计元素以及/media
将存储的媒体内容。
问题是将nginx设置为在每个硬盘驱动器上写入媒体,并且将使用每台计算机。
对于速度,我需要写在不同的硬盘驱动器(如旋转/循环),每一个新的文件,例如我节约file1
,它在所著machine1/hdd1
,那么我节约file2
,它在所著machine1/hdd2
......file4
在machine1/hdd4
,file5
在machine2/hdd1
(目前为我提到我只有一台机器,但将来会更多。
因此,任何人都有经验或想法如何做到这一点?我确定nginx至少可以在多个硬盘上写入,但是我不确定如果需要在多台计算机上写入媒体数据该怎么办。如果您还有其他想法,也请提出建议。
您可以在提到的文章中或通过以下链接找到nginx config的示例。我也在寻找nginx上游模块,但实际上不确定是否可以使用它进行配置。
更新:以前,我写答案时并没有过多考虑您要解决的实际问题。您在下面的评论中提出了一些我以前忽略的有趣问题。我现在已经重写了答案。希望这会有所帮助。
在此答案的先前版本中,我提到了负载平衡。但是显然,您的问题更多是关于文件存储,而不是管理负载。
您正在寻找的就是分布式文件系统。分布式文件系统允许您插入许多磁盘,并且可以扩展到多台计算机。
DFS将所有磁盘和计算机组合在一起,使您可以像访问单个磁盘一样访问它们。不仅如此,如果需要,DFS软件还可以为您完成文件复制。
我没有使用任何DFS的经验,但是我已经阅读了一些有关GlusterFS的知识。我听说这很好,但是请随时进行研究。
让我尝试解释一下GlusterFS的工作原理。看这个图:
/ Disk 1
/ Machine 1 [Gluster Server] |
/ \ Disk 2
/
Nginx -> Gluster Client -> |
\
\ / Disk 1
\ Machine 2 [Gluster Server] |
\ Disk 2
无需太多细节,Gluster客户端将允许您的Nginx服务器从单个目录(例如)访问Machine 1和Machine 2 /media
。在此/media
目录中,即使所有数据/media
存储在不同的计算机上,您也可以访问这两个计算机,就像所有数据都存储在内部一样。
指南和教程:
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句