You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Azure VM报告共享存储位置需求及Web场负载均衡下报告下载异常问询

针对Azure VM共享存储与Web场报告访问问题的解决方案

一、2台Azure VM报告存储的共享文件夹方案

结合Azure环境的特性,给你推荐几个实用且靠谱的方案,按需选择即可:

  • Azure Files(首推)
    这是Azure原生的托管文件共享服务,完美兼容SMB协议,专门解决多VM共享文件的场景,步骤也很清晰:

    1. 在Azure门户创建一个存储账户,性能选标准型,冗余方式根据可靠性需求选本地/区域冗余
    2. 在存储账户下创建一个文件共享,设置合适的存储配额
    3. 在两台VM上分别挂载这个共享:
      • Windows VM:执行命令 net use Z: \\<存储账户名>.file.core.windows.net\<文件共享名> /u:<存储账户名> <存储账户密钥>
      • Linux VM:先安装cifs-utils,再用 sudo mount -t cifs //<存储账户名>.file.core.windows.net/<文件共享名> /mnt/report-share -o username=<存储账户名>,password=<存储账户密钥>,serverino 挂载
    4. 把报告生成路径直接指向这个挂载的共享文件夹,两台VM就能读写同一份文件了
  • 同VNet内VM本地共享(临时场景适用)
    如果两台VM在同一个Azure虚拟网络里,也可以在其中一台VM上建本地共享:

    1. 在Server 1上创建文件夹,右键选「属性-共享」,添加Server 2的机器账户或域账户(如果已加入域),赋予读写权限
    2. 在Server 2上通过\\Server1\ReportShare访问共享,也能映射成本地驱动器
      注意:这种方案依赖Server 1的可用性,一旦Server 1宕机,Server 2就没法访问报告了,适合临时测试场景
  • Azure Blob存储挂载为文件系统
    如果你已经在用Blob存储,可通过BlobFuse把Blob容器挂载成VM本地文件系统实现共享。但相比Azure Files,SMB协议的兼容性更好,更适配传统应用的文件访问逻辑

二、Web场跨服务器报告无法下载的问题解决

这个问题的根源很直观:报告存在用户首次访问的Server 1本地,负载均衡器把后续请求分配到Server 2时,Server 2本地没有这份报告,自然下载不了。给你两个解决思路:

最优方案:统一报告存储位置

直接复用上面的共享存储方案,把Web应用的报告生成路径指向共享文件夹:

  1. 把两台Web服务器的IIS网站中,报告生成的输出路径配置为共享文件夹(比如Azure Files挂载的Z盘)
  2. 确保Web应用的运行账户(比如IIS AppPool\<你的应用池名>)拥有共享文件夹的读写权限
    这样不管用户被分配到哪台服务器,报告都存在同一个位置,后续访问任何服务器都能找到文件

备选方案:配置会话粘性(会话亲和性)

如果暂时没法修改存储路径,可以在Azure负载均衡器里开启会话粘性:

  1. 登录Azure门户,找到你的负载均衡器
  2. 进入「规则」页面,编辑现有的HTTP/HTTPS负载均衡规则
  3. 在「会话粘性」选项里,选择「客户端IP」或「客户端IP和协议」,设置超时时间(比如30分钟)
    这样用户首次访问被分配到Server 1后,后续一段时间内的请求都会路由到Server 1,就能下载到之前生成的报告
    注意:这种方案会降低负载均衡的效果,流量会集中在单台服务器,不适合高并发场景

补充:IIS权限配置检查

不管用哪种方案,都要确认Web应用的运行账户对存储位置有足够权限:

  • 对于Azure Files:在存储账户的「访问控制(IAM)」里,给应用池账户分配「存储文件数据 SMB 参与者」角色
  • 对于本地共享:给应用池账户(或机器账户)分配共享文件夹的读写权限

内容的提问来源于stack exchange,提问作者Chappi

火山引擎 最新活动