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

Azure 存储是 Microsoft 提供的适用于现代数据存储场景的云存储解决方案。 Azure 存储为云中的各种数据对象提供具有高可用性、可大规模缩放、持久且安全的存储。 本指南介绍了如何在应用服务中将 Azure 存储文件作为网络共享装载到 Windows 代码(非容器)中。 仅支持 Azure 文件存储共享高级文件共享。 Azure 存储是适用于应用服务且单独计费的非默认存储。 还可以在 ARM 模板中配置 Azure 存储

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

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

Windows 代码支持以下功能:

  • 使用密钥保管库、专用终结点服务终结点对存储帐户进行安全访问(当使用 VNET 集成时)。
  • Azure 文件存储(读取/写入)。
  • 每个应用最多 5 个装入点。
  • 使用“/mounts/<path-name>”装载 Azure 存储文件共享。

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

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

先决条件

限制

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

准备装载

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

将存储装载到 Windows 代码

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

  2. 从左侧导航栏中,单击“配置”“路径映射”“新建 Azure 存储装载”。

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

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

注意

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

最佳实践

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

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

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

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

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

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

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

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

  • 使用 VNET 集成时,请确保应用设置 WEBSITE_CONTENTOVERVNET 指定为 1,并已打开以下端口:

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

Azure 存储是 Microsoft 提供的适用于现代数据存储场景的云存储解决方案。 Azure 存储为云中的各种数据对象提供具有高可用性、可大规模缩放、持久且安全的存储。 本指南介绍了如何在应用服务中将 Azure 存储文件作为网络共享装载到 Windows 容器中。 仅支持 Azure 文件存储共享高级文件共享。 Azure 存储是适用于应用服务且单独计费的非默认存储。 还可以在 ARM 模板中配置 Azure 存储

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

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

Windows 容器支持以下功能:

  • 使用密钥保管库、专用终结点服务终结点对存储帐户进行安全访问(当使用 VNET 集成时)。
  • Azure 文件存储(读取/写入)。
  • 每个应用最多 5 个装入点。
  • 驱动器号分配(C:Z:)。

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

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

先决条件

限制

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

准备装载

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

将存储装载到 Windows 容器

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

  2. 从左侧导航栏中,单击“配置”“路径映射”“新建 Azure 存储装载”。

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

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

注意

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

最佳实践

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

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

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

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

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

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

  • 将 Azure 文件存储与 VNET 集成配合使用时,请确保端口 80 和 445 处于打开状态。

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

后续步骤

注意

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

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

好处

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

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

限制

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

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

装载选项

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

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

先决条件

准备装载

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

将存储装载到 Linux 容器

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

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

  2. 从左侧导航栏中,单击“配置”“路径映射”“新建 Azure 存储装载”。

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

    设置 说明
    名称 装载配置的名称。 不允许包含空格。
    配置选项 选择“基本”。 如果存储帐户使用的不是服务终结点专用终结点Azure 密钥保管库。 否则,选择“高级”。
    存储帐户 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 存储帐户密钥。 使用分步方法,以确保重新生成密钥时,存储装载仍可用于应用。 例如,假设你在应用中使用了“密钥 1”来配置存储装载:
    1. 重新生成“密钥 2”。
    2. 在存储装载配置中,更新访问密钥以使用重新生成的“密钥 2”。
    3. 重新生成“密钥 1”。

疑难解答

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

后续步骤