服务器挂载文件服务器磁盘后不能写入到nfs中,spring boot搭建的java web项目,使用docker作为容器

    最近在项目开发中出现一个新需求。以前项目是单节点,所以用户上传的文件及资料都在一个服务器节点(以下简称A节点)上,此时用户资料的上传及下载没有任何问题。不过因为用户量的增大,单节点有点不够看了,于是又启动了一个服务节点(以下简称B节点),并做好了负载均衡。这时候问题来了。

    由于以前单个节点时,用户都在A节点访问,导致所有的文件都在A节点上。现在再多加了B节点,并且做了负载。那么当用户再次访问系统时分配到了B节点。这时,用户想要下载文件会报错,因为B节点上没有A节点的文件。同理,当用户在B节点上传的文件,那么A节点中不会存在。

    解决方案很简单,添加一个文件服务器(NFS)便可。将用户上传的文件进行统一管理,只需要将A节点和B节点的文件存放路径和NFS的文件路径做一个挂载。但,当两个服务节点挂载完成后问题出现了。。。

    在通过web应用上传时,日志显示文件上传成功,但是在NFS中并没有上传成功的文件。将节点解除挂载后,文件出现在了服务节点A的文件存放路径中。

   解决方案:最后通过重启docker解决了该问题。

    猜测原因:docker 可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。其特点是不包含任何动态数据,其内容在构建之后也不会被改变。所以在文件服务器挂载后到应用服务器节点后,docker需要重新启动,让上传路径重新加载一下。

   不知道这个猜测是否合理,有不同观点的可以讨论一下。

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值