Compartir a través de

将 Azure 存储挂载为应用服务中的本地共享

选择托管平台

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

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

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

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

Windows 代码支持以下功能:

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

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

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

先决条件

限制

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

准备装载

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

将存储装载到 Windows 代码

  1. Azure 门户中,导航到应用。

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

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

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

注意

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

最佳实践

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

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

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

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

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

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

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

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

  • 使用虚拟网络集成时,请确保将应用设置 WEBSITE_CONTENTOVERVNET 设置为 1 并打开以下端口:Azure 文件:80 和 445。

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

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

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

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

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

Windows 容器支持以下功能:

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

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

先决条件

限制

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

准备装载

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

将存储装载到 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 文件存储与虚拟网络集成时,请确保端口 80 和 445 处于打开状态。

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

后续步骤

注意

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

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

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

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

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

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

装载选项

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

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

先决条件

准备装载

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

将存储装载到 Linux 容器

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

  1. Azure 门户中,导航到应用。

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

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

    设置 说明
    名称 装载配置的名称。 不允许包含空格。
    配置选项 如果存储帐户不使用服务终结点专用终结点Azure Key Vault,请选择“基本”。 否则,选择“高级”。
    存储帐户 Azure 存储帐户。
    存储类型 根据要装载的存储选择类型。 Azure Blob 仅支持只读访问。
    “存储容器”或“共享名” 要装载的文件存储共享或 Blob 容器。
    装载路径 要装载到 Azure 存储的 Linux 容器中的目录。 请勿使用 //home
    部署槽位设置 选中后,存储装载设置也适用于部署槽位。

注意

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

对装载的存储进行验证

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

  1. 在容器中打开 SSH 会话

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

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

  4. 通过以下命令检查存储装载的延迟或一般可达性:

    tcpping Storageaccount.file.core.chinacloudapi.cn 
    

最佳实践

性能

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

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

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

安全性

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

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

配置

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

故障排除

  • 自定义容器中的装载目录应为空。 如果在 /home 下指定目录,则装载 Azure 存储时,将删除此路径中存储的任何内容。 如果迁移现有应用的文件,请在开始之前备份应用及其内容。
  • 如果删除 Azure 存储帐户、容器或共享,请在应用中删除相应的存储装载配置,以避免错误发生。
  • 不建议对本地数据库(如 SQLite)或依赖于文件句柄和锁的任何其他应用程序和组件使用存储装载。
  • 使用虚拟网络集成时,请确保开放以下端口:Azure Files:80 和 445。 Azure Blob:80 和 443。
  • 如果在将存储帐户装载到应用时启动存储故障转移,则在重启应用或移除存储装载并重新添加之前,装载不会连接。

后续步骤