我们已经部署了django服务器(nginx/gunicorn/django),但是为了扩展服务器,同一个django应用程序有多个实例在运行。
以下是示意图(架构):
每个蓝色矩形都是一个虚拟机。
HAProxy向示例发送所有请求。com/admin到服务器3。其他请求在服务器1和服务器2之间分配。(负载平衡)。
老问题:
每台机器都有一个媒体文件夹,当管理员上传内容时,上传的媒体只在服务器3上。(普通用户无法上传任何内容)
我们通过向示例发送所有请求来解决这个问题。com/media/*到服务器3,来自服务器3的nginx提供所有静态文件和媒体。
现在的问题
我们也在使用sorl缩略图。
例如,当一个请求出现时。com/,sorl thumbnail尝试访问媒体文件,但此计算机上不存在该文件,因为它位于服务器3上。
因此,现在所有对该机器(服务器1或服务器2)的请求都会得到该媒体文件的404。
想到的一个解决方案是在所有3台机器之间创建一个共享分区,并将其用作介质。
另一个解决方案是在每次上传后同步所有媒体文件夹,但这个解决方案存在问题,即我们每秒有近2000个请求,有时同步速度可能不够快,sorl缩略图会创建空文件的数据库记录,并发生404次。
提前谢谢,很抱歉问了这么长时间。