你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

在应用服务中将Azure 存储装载为本地共享

Azure 存储是Microsoft的新式数据存储方案的云存储解决方案。 Azure 存储为云中的数据对象提供高度可用、大规模可缩放、持久和安全存储。 本指南介绍了如何在 Azure 应用服务中将 Azure 存储文件作为网络共享装载到 Windows 代码(非容器)中。

Azure 存储支持应用服务的 Azure 文件存储 Shares 和 Premium Files Shares。 Azure 存储不是应用服务的默认存储。 这是单独计费的。 还可以在 ARM 模板中配置Azure 存储。

自定义装载存储的优势包括:

  • 为应用程序服务应用配置永久性存储,并单独管理存储。
  • 使静态内容(如视频和图像)可随时用于应用程序服务应用。
  • 将应用程序日志文件或存档较旧的应用程序日志写入Azure文件共享。
  • 跨多个应用或其他Azure服务共享内容。

Windows代码支持以下功能:

  • 使用密钥保管库、 专用终结点和服务 终结点 (使用 虚拟网络集成时)保护对存储帐户的访问。
  • Azure 文件存储(读/写).
  • 每个应用最多 5 个装入点。
  • 使用 /mounts/<path-name> 装载 Azure 存储 文件共享。

下面是将Azure存储装载到应用的三个选项:

装载选项 使用情况
基本 使用 Azure 门户装载存储时选择此选项。 只要存储帐户不使用 service endpoints、private endpoints 或 Azure 密钥保管库,就可以使用基本选项。 在这种情况下,门户会为你获取和存储访问密钥。
访问密钥 如果计划使用Azure CLI装载存储,则需要获取访问密钥。 如果存储帐户不使用 service endpoints、private endpoints 或 Azure 密钥保管库,请选择此选项。
密钥保管库 如果计划使用Azure CLI装载存储,这需要访问密钥,请使用此选项。 使用Azure 密钥保管库安全地存储和检索访问密钥时,选择此选项。 Azure 密钥保管库可以集中安全地存储应用程序机密,并能够监视、管理和集成其他Azure服务,例如Azure 应用服务。

Prerequisites

限制

  • 仅当使用虚拟网络集成时,只有专用终结点和服务终结点才支持存储防火墙。
  • 为部署到应用服务的 Windows 代码应用配置 Azure 存储装载时,不支持 Azure Blob。
  • 不支持 FTP/FTPS 访问已装载的存储。 使用 Azure 存储资源管理器。
  • 不支持将 /mounts、mounts/name1/name2、/ 和 /mounts/name.ext/ 映射到自定义挂载的存储。 只能使用 /mounts/pathname 将自定义存储装载到 Web 应用。
  • 存储装载不包括在备份中。 请务必遵循最佳做法来备份Azure 存储帐户。
  • 通过应用上的虚拟网络集成,装载的驱动器使用RFC1918 IP 地址,而不是虚拟网络中的 IP 地址。
  • 禁用基于密钥的认证的存储账户不被支持。

准备装载

无需执行额外的步骤,因为门户会为你获取和存储访问密钥。

将存储装载到 Windows 代码

若要通过 Azure 门户在 Windows 环境中挂载存储,请执行以下操作:

  1. 在 Azure 门户中,转到应用。

  2. 在左侧导航中,选择 “设置>配置”。 选择 路径映射,然后选择新建 Azure 存储 挂载。

  3. 按照下表配置存储装载。 完成后,选择“确定”。

    设置 说明
    名称 装载配置的名称。 不要使用空格。
    配置选项 如果存储帐户不使用 私有终结点或 Azure 密钥保管库,请选择 Basic。 否则,选择“高级”。
    存储帐户 Azure 存储帐户。 它必须包含一个 Azure 文件存储共享。
    共享名 要装载的文件存储共享。
    存储访问 为 Azure 密钥保管库选择 密钥保管库引用。 否则,请选择 “手动输入”。
    访问密钥(仅限高级用户) 存储帐户的访问密钥。
    装载路径 要装载的应用程序服务内部目录。 仅支持 /mounts/pathname 。
    应用程序设置 使用Azure 密钥保管库机密选择应用设置。
    部署槽位设置 选择后,存储装载设置也适用于部署槽位。

注意

添加、编辑或删除存储装载时,应用将重启。

最佳做法

  • Azure 存储挂载可以配置为虚拟目录,以提供静态内容。 若要配置虚拟目录,请在左侧导航中选择 “设置>配置”。 然后选择 “路径映射”,然后选择 “新建虚拟应用程序”或“目录”。 将 物理路径 设置为在 Azure 存储 装载中定义的 挂载路径。

  • 若要避免延迟问题,请将应用和Azure 存储帐户置于同一区域。 如果在应用和Azure 存储帐户位于同一区域时,在Azure 存储防火墙配置中向应用服务 IP 地址授予访问权限则不遵循这些 IP 限制。

  • 在使用Azure 存储帐户时,避免重新生成用于在应用中装载存储的访问密钥。 存储帐户包含两个密钥。 Azure 应用服务存储Azure存储帐户密钥。 使用分步方法,以确保重新生成密钥时,存储装载仍可用于应用。 例如,假设你在你的应用中使用了key1来配置存储挂载:

    1. 重新生成“密钥 2”。
    2. 在存储装载配置中,更新访问密钥以使用重新生成的“密钥 2”。
    3. 重新生成“密钥1”。
  • 如果删除Azure 存储帐户、容器或共享,请删除应用中相应的存储装载配置,以避免可能出现的错误情况。

  • 装载Azure 存储帐户可以是标准层或高级性能层。 根据应用容量和吞吐量要求,为存储帐户选择适当的性能层。 请参阅文件的可伸缩性和性能目标。

  • 如果应用缩放到多个实例,则所有实例都连接到同一装载Azure 存储帐户。 要避免性能瓶颈和吞吐量问题,请为存储帐户选择适当的性能层。

  • 不建议对本地数据库(如 SQLite)或依赖于文件句柄和锁的任何其他应用程序和组件使用存储装载。

  • 如果在将存储帐户装载到应用时启动存储故障转移,则在重启应用或移除存储装载并重新添加之前,装载不会连接。

  • 在虚拟网络集成中使用Azure 文件存储时,请确保端口 445 处于打开状态。 此外,请确保将应用设置 WEBSITE_CONTENTOVERVNET 设置为 1。

  • 装载Azure 存储帐户可以是标准层或高级性能层。 根据应用容量和吞吐量要求,为存储帐户选择适当的性能层。 请参阅 文件的可伸缩性和性能目标。

后续步骤

Azure 存储是Microsoft的新式数据存储方案的云存储解决方案。 Azure 存储为云中的数据对象提供高度可用、大规模可缩放、持久和安全存储。 本指南演示如何在应用服务中的 Windows 容器中将 Azure 存储文件挂载为网络共享。

Azure 存储支持 Azure 文件存储 Shares 和 Premium Files Shares。 Azure 存储不是应用服务的默认存储。 这是单独计费的。 还可以在 ARM 模板中配置Azure 存储。

自定义装载存储的优势包括:

  • 为应用程序服务应用配置永久性存储,并单独管理存储。
  • 使静态内容(如视频和图像)可随时用于应用程序服务应用。
  • 将应用程序日志文件或存档较旧的应用程序日志写入Azure文件共享。
  • 跨多个应用或其他Azure服务共享内容。
  • 在 Windows 容器中装载 Azure 存储,包括独立存储。 有关详细信息,请参阅 应用服务环境 v3。

Windows容器支持以下功能:

下面是将Azure存储装载到应用的三个选项:

装载选项 使用情况
基本 使用 Azure 门户装载存储时选择此选项。 只要存储帐户不使用 service endpoints、private endpoints 或 Azure 密钥保管库,就可以使用基本选项。 在这种情况下,门户会为你获取和存储访问密钥。
访问密钥 如果计划使用Azure CLI装载存储,则需要获取访问密钥。 如果存储帐户不使用 service endpoints、private endpoints 或 Azure 密钥保管库,请选择此选项。
密钥保管库 如果计划使用Azure CLI(需要访问密钥)装载存储,请使用此选项。 使用Azure 密钥保管库安全地存储和检索访问密钥时,选择此选项。 Azure 密钥保管库可以集中安全地存储应用程序机密,并能够监视、管理和集成其他Azure服务,例如Azure 应用服务。

Prerequisites

限制

  • 不支持Azure缓存。
  • 仅当使用虚拟网络集成时,只有专用终结点和服务终结点才支持存储防火墙。
  • 不支持对已装载存储的 FTP/FTPS 访问(使用 Azure 存储资源管理器)。
  • 不支持将[C-Z]:\、[C-Z]:\home、/和/home映射到自定义装载的存储。
  • 备份应用时,存储装载并不会备份。 请务必遵循最佳做法来备份Azure 存储帐户。
  • 通过应用上的虚拟网络集成,装载的驱动器使用RFC1918 IP 地址,而不是虚拟网络中的 IP 地址。

准备装载

无需执行额外的步骤,因为门户会为你获取和存储访问密钥。

将存储装载到Windows容器

若要使用 Azure 门户将存储装载到 Windows 容器,

  1. 在 Azure 门户中,转到应用。

  2. 在左侧导航中,选择 “设置>配置”。 选择 路径映射,然后选择新建 Azure 存储 挂载。

  3. 按照下表配置存储装载。 完成后,选择“确定”。

    设置 说明
    名称 装载配置的名称。 不要使用空格。
    配置选项 选择基本。
    存储帐户 Azure 存储帐户。 它必须包含一个 Azure 文件存储共享。
    共享名 要装载的文件存储共享。
    装载路径 您想要装载的 Windows 容器内的目录。 请勿使用根目录([C-Z]:*或) 或/主目录([C-Z]:\home* 或 /home)。
    部署槽位设置 选择后,存储装载设置也适用于部署槽位。

注意

添加、编辑或删除存储装载会重启应用。

最佳做法

  • 若要避免延迟问题,请将应用和Azure 存储帐户置于同一区域。 如果在应用和Azure 存储帐户位于同一区域时,在Azure 存储防火墙配置中向应用服务 IP 地址授予访问权限则不遵循这些 IP 限制。

  • 在使用Azure 存储帐户时,避免重新生成用于在应用中装载存储的访问密钥。 存储帐户包含两个密钥。 Azure 应用服务存储Azure存储帐户密钥。 使用分步方法,以确保重新生成密钥时,存储装载仍可用于应用。 例如,假设你在你的应用中使用了key1来配置存储挂载:

    1. 重新生成“密钥 2”。
    2. 在存储装载配置中,更新访问密钥以使用重新生成的“密钥 2”。
    3. 重新生成“密钥1”。
  • 如果删除Azure 存储帐户、容器或共享,请删除应用中相应的存储装载配置,以避免可能出现的错误情况。

  • 装载Azure 存储帐户可以是标准层或高级性能层。 根据应用容量和吞吐量要求,为存储帐户选择适当的性能层。 请参阅文件的可伸缩性和性能目标。

  • 如果应用缩放到多个实例,则所有实例都连接到同一装载Azure 存储帐户。 若要避免性能瓶颈和吞吐量问题,请为存储帐户选择适当的性能层。

  • 不要对本地数据库(例如 SQLite)或依赖于文件句柄和锁的任何其他应用程序和组件使用存储装载。

  • 在虚拟网络集成中使用Azure 文件存储时,请确保端口 445 处于打开状态。

  • 如果在将存储帐户装载到应用时启动存储故障转移,则在重启应用或移除存储装载并重新添加之前,装载不会连接。

后续步骤

注意

NFS 支持现已可用于Linux 上的应用服务。

本指南介绍如何在应用服务中的内置 Linux 容器或自定义 Linux 容器中,将 Azure 存储 装载为网络共享。 Azure 存储是Microsoft的新式数据存储方案的云存储解决方案。 Azure 存储为云中的数据对象提供高度可用、大规模可缩放、持久和安全存储。 Azure 存储不是应用服务的默认存储。 这是单独计费的。 还可以在 ARM 模板中配置Azure 存储。

自定义装载存储的优势包括:

  • 为应用程序服务应用配置永久性存储,并单独管理存储。
  • 使静态内容(如视频和图像)可随时用于应用程序服务应用。
  • 将应用程序日志文件或存档较旧的应用程序日志写入Azure文件共享。
  • 跨多个应用或其他Azure服务共享内容。
  • 支持 Azure 文件存储 NFS 和 Azure 文件存储 SMB。
  • 支持 Azure Blob 存储(只读访问)。
  • 每个应用最多支持五个装入点。

自定义装载存储的限制包括:

  • 仅当使用虚拟网络集成时,只能通过服务终结点和专用终结点支持存储防火墙。
  • 不支持 FTP/FTPS 访问自定义装载的存储。 使用 Azure 存储资源管理器。
  • 存储帐户共享访问密钥是唯一支持的身份验证方法。 不支持 Entra ID 和 RBAC 角色。
  • Azure CLI、Azure PowerShell和Azure SDK支持处于预览状态。
  • 不支持映射 / 或 /home 到自定义装载的存储。
  • 不要将存储装载映射到 /tmp 或其子目录。 此操作可能会导致应用启动时超时。
  • Azure 存储 不支持 Docker Compose 方案。
  • 存储装载不包括在备份中。 请务必遵循最佳做法来备份Azure 存储帐户。
  • NFS 支持仅适用于Linux 上的应用服务。 Windows代码和Windows容器不支持 NFS。 需要在 NFS 的同一虚拟网络上配置 Web 应用和存储帐户。 用于文件共享的存储帐户应具有 高级 性能层和 文件存储 作为帐户类型。 使用 NFS 协议时,Azure 密钥保管库不适用。
  • 通过应用上的虚拟网络集成,装载的驱动器使用RFC1918 IP 地址,而不是虚拟网络中的 IP 地址。

装载选项

需要将存储挂载到应用中。 下面是用于Azure存储的三种装载选项:

装载选项 使用情况
基本 选择此选项可以使用 Azure 门户装载存储。 只要存储帐户不使用 service endpoints、private endpoints 或 Azure 密钥保管库,就可以使用基本选项。 在这种情况下,门户会为你获取和存储访问密钥。
访问密钥 如果计划使用 Azure CLI 装载存储,则需要获取访问密钥。 如果存储帐户不使用 service endpoints、private endpoints 或 Azure 密钥保管库,请选择此选项。
密钥保管库 如果计划使用Azure CLI(需要访问密钥)装载存储,请使用此选项。 使用Azure 密钥保管库安全地存储和检索访问密钥时选择此选项。 Azure 密钥保管库可以集中安全地存储应用程序机密,并能够监视、管理和集成其他Azure服务,例如Azure 应用服务。

Prerequisites

准备装载

无需执行额外的步骤,因为门户会为你获取和存储访问密钥。

将存储装载到 Linux 容器

装载存储的方式取决于您选择的存储访问选项以及您是使用门户还是使用Azure CLI。

  1. 在 Azure 门户中,转到应用。

  2. 在左侧导航中,选择 “设置>配置”。 选择 路径映射,然后选择新建 Azure 存储 挂载。

  3. 按照下表配置存储装载。 完成后,选择“确定”。

    设置 说明
    名称 装载配置的名称。 不要使用空格。
    配置选项 如果存储帐户不使用 service endpoints、private endpoints 或 Azure 密钥保管库,请选择 basic。 否则,选择“高级”。
    存储帐户 Azure 存储帐户。
    存储类型 根据要装载的存储选择类型。 Azure Blob 仅支持只读访问。
    “存储容器”或“共享名” 要装载的文件存储共享或 Blob 容器。
    装载路径 要装载到 Azure 存储 的 Linux 容器内的目录。 请勿使用 / 或 /home。
    部署槽位设置 选中后,存储装载设置也适用于部署槽位。

注意

添加、编辑或删除存储装载会重启应用。

对装载的存储进行验证

若要验证是否已为应用成功装载Azure 存储,请执行以下作:

  1. 在容器中打开 SSH 会话。

  2. 在 SSH 终端中执行以下命令:

    df –h 
    
  3. 检查存储共享是否已装载。 如果没有,则表示存储共享装载出现了问题。

  4. 使用以下命令检查存储装载的延迟或一般可访问性:

    tcpping Storageaccount.file.core.windows.net 
    

存储装载运行状况检查和自动恢复

Azure 应用服务包括内置运行状况检查机制,可确保装载的 Azure 存储卷(Azure 文件存储或 Azure Blob)保持可访问且响应迅速。 此系统有助于防止因存储装载过期或断开连接导致的应用程序挂起。

运行状况检查的工作原理

  1. 定期 I/O 测试
    应用服务定期对名为 __lastCheckTime.txt 的标记文件执行文件 I/O。

    • 位置:LogFiles装载路径下的子目录(例如/mount/path/LogFiles/__lastCheckTime.txt)。
    • 行为:
      • 尝试对此文件执行读取操作。
      • 该文件不需要存在 - “找不到文件”被视为成功检查。
  2. 频率
    默认情况下,检查每 5 秒 运行一次。

  3. 失败处理

    • 每个失败或超时的检查会增加故障 ping 计数器的数值。
    • 失败超过配置的阈值时:
      • Azure 文件存储: 18 次 ping 失败
      • Azure Blob: 15 次 ping 失败
    • 挂载被标记为 “出现故障”,应用服务会自动重启应用 以恢复共享连接。

通过应用设置进行配置

可以使用以下应用设置自定义健康检查行为。

存储类型 设置名称 默认值 说明
Azure 文件存储 WEBSITE_BYOS_FILES_HEALTH_CHECK_FREQUENCY 5 健康检查的时间间隔(以秒为单位)。
Azure 文件存储 WEBSITE_BYOS_FILES_MAX_FAILED_PINGS 18 将卷标记为故障前的连续失败次数。
Azure 文件存储 WEBSITE_BYOS_FILES_AUTO_RECOVERY_ENABLED true 设置为 false 禁用自动恢复逻辑。
Azure Blob WEBSITE_BYOS_BLOB_HEALTH_CHECK_FREQUENCY 5 健康检查的时间间隔(以秒为单位)。
Azure Blob WEBSITE_BYOS_BLOB_MAX_FAILED_PINGS 15 将卷标记为故障前的连续失败次数。
Azure Blob WEBSITE_BYOS_BLOB_AUTO_RECOVERY_ENABLED true 设置为 false 禁用自动恢复逻辑。
Azure Blob WEBSITE_BYOS_BLOB_DIRECT_IO false 如果启用,所有事务将直接查询远程存储,并且将绕过缓存。 此设置在应用程序级别应用,因此会影响应用程序装载的所有 Blob 共享。

注释

  • 自动恢复功能有助于防止由于存储路径无响应而导致的应用程序长时间挂起问题。
  • 除非你正在排查特定的挂载行为,否则不要禁用自动恢复。

最佳做法

性能

  • 若要避免延迟问题,请将应用和Azure 存储帐户置于同一区域。 如果在应用和Azure 存储帐户位于同一区域时,在Azure 存储防火墙配置中向应用服务 IP 地址授予访问权限则不遵循这些 IP 限制。

  • 装载Azure 存储帐户可以是标准层或高级性能层。 根据应用容量和吞吐量要求,为存储帐户选择适当的性能层。 查看存储类型对应的可伸缩性和性能目标:文件存储和 Blobs。

  • 如果应用缩放到多个实例,则所有实例都连接到同一装载Azure 存储帐户。 若要避免性能瓶颈和吞吐量问题,请为存储帐户选择适当的性能层。

安全性

  • 在使用Azure 存储帐户时,避免重新生成用于在应用中装载存储的访问密钥。 存储帐户包含两个密钥。 Azure 应用服务存储Azure存储帐户密钥。 使用分步方法,以确保重新生成密钥时,存储装载仍可用于应用。 例如,假设你在你的应用中使用了key1来配置存储挂载:

    1. 重新生成“密钥 2”。
    2. 在存储装载配置中,更新访问密钥以使用重新生成的“密钥 2”。
    3. 重新生成“密钥1”。

配置

  • 如果需要使用实时文件系统(预期更改会快速更改、添加或删除文件),请在装载存储时使用Azure 文件存储作为存储类型。 当文件是静态的并且你不希望它们发生更改时,请使用 Azure Blob。

疑难解答

  • 自定义容器中的装载目录应为空。 例如,如果指定/home下的目录,则装载Azure 存储时,将删除存储在此路径上的任何内容。 如果迁移现有应用的文件,请在开始之前备份应用及其内容。
  • 装载 NFS 共享时,需要确保在存储帐户上禁用“安全传输要求”。 启用此设置时,应用服务不支持装载 NFS 共享。 它使用端口 2049 和虚拟网络集成和专用终结点作为安全措施。
  • 如果删除Azure 存储帐户、容器或共享,请删除应用中相应的存储装载配置,以避免可能出现的错误情况。
  • 不要对本地数据库(例如 SQLite)或依赖于文件句柄和锁的任何其他应用程序和组件使用存储装载。
  • 使用虚拟网络集成时,请确保打开以下端口:Azure 文件存储:80 和 445。 Azure Blob:80 和 443。
  • 如果在将存储帐户装载到应用时启动存储故障转移,则在重启应用或移除存储装载并重新添加之前,装载不会连接。