nginx负载均衡采用了iphash,会一直报写文件失败
Opened this issue · 4 comments
huxiuhang commented
nginx负载均衡采用了iphash,会一直报写文件失败
peinhu commented
请确保均衡负载后上传时的多个请求访问的是同一台服务器,看下其他服务器相应目录是否有文件生成?正常是不应该有文件生成的。如果不能确保访问同一台,那需要想办法所有服务器都使用同一个储存目录。
或者干脆点,直接启用分布式部署配置来使用额外的设备作为储存服务器,详见README中[用法-分布式部署]那段和配置文件中的说明。
peinhu commented
服务器是linux系统、且多台服务器在同一个局域网的话,可以使用nfs将某台设备的某个目录挂载(mount)到其他多个设备上,这样多台服务器用的就是同一个磁盘目录了。
如mount 192.168.1.2:/device2/laravel/storage/app/aetherupload /device1/laravel/storage/app/aetherupload
,将device2的目录挂载到device1上,注意设备要先安装nfs服务。
huxiuhang commented
用了软连接之后,php artisan aetherupload:clean会报错,Links are not supported, encountered link at /home/wwwroot/xgzx.admin.talkmed.com/storage/app/public/aetherupload/file/subdir,我自己写了一个删除的方法
peinhu commented
软连接的问题应该不大,能解决就好。iphash的方案感觉还是有局限性,其上传的文件是分散在多个服务器里的,比如你传一张图片到服务器A,自己是肯定能访问到的,但别人就不一定了,可能他访问到的服务器是B,就无法获取你传的图片。