阿里云SLB情况下访问文件问题

背景:

有两台ECS服务器都部署了相同的站点,访问时通过SLB进行分发。

问题:

假如第一次通过SLB访问时分发到了后端的ECS1服务器,上传的文件也放在了ECS1服务器上。

第二次再次通过SLB访问时恰好分发到了ECS2服务器,这时候就访问不到上次上传的文件了。

备注:

文件的访问方式如下:

  • 通过SLB地址进行分发:这样无法保证恰好能分发到文件所在的服务器,不可行
  • 将所有文件固定存放到ECS1服务器,通过固定的ECS1服务器地址访问:如果用户网络能直接访问到ECS就可行,如果不能直接访问后端的ECS服务器则不可行

解决方案:

1、实时同步后端ECS服务器上的文件

弊端:文件冗余;有可能同步失败;性能问题

2、增加一台文件服务器

弊端:待续

3、采用阿里云的NAS服务

具体怎么实现有待研究。初步理解是把站点文件存放在NAS文件系统,然后两台ECS服务器上的站点目录都指向到NAS文件系统。不知道理解的对不对,有待验证。

最终实现:

1、控制文件上传创建都保存在ECS1一台服务器,这个可以通过代码实现。并且文件的保存路径都为SLB的地址,而不是ECS1的地址。

2、在ECS2站点下添加虚拟目录,实际指向ECS1服务器下的文件存放目录

3、最终访问文件时通过SLB就算分发到ECS2上,读取ECS2下的目录时实际读取的还是ECS1下的文件目录

posted @ 2019-10-16 15:01  倒不了的西恩塔  阅读(559)  评论(1编辑  收藏  举报