AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 1086197
Accepted
JohnLBevan
JohnLBevan
Asked: 2021-12-14 08:24:14 +0800 CST2021-12-14 08:24:14 +0800 CST 2021-12-14 08:24:14 +0800 CST

在 Azure 应用服务中装载 Azure 文件

  • 772

概括

我有一个运行自定义容器的 Azure 应用服务。当我将路径绑定到 Azure 文件共享时,我的容器停止工作。查看Container Issues日志,我看到错误:[BYOS] Custom storage volume(s) failed to initialize: [/var/LWASFiles/Sites/my-app/a3484543-39f9-45a3-816b-9524640dfd50].

细节

  • 我的自定义容器定义了一个卷/var/www/html/v3/uploads。

  • 我正在尝试将其映射到 Azure 文件共享,该共享位于与托管 ASE 相同的 vnet 中的存储帐户上,规则允许 ASE 的子网与端口 137、138、138 和 445 上的文件共享之间的流量.

  • 托管 ASE 配置有内部负载平衡器(即它是私有 ASE)。

  • 存储帐户配置了专用终结点。

  • 卷在应用服务的设置 > 配置 > 路径映射下映射,使用有效密钥和与容器上的卷路径匹配的装载路径。

  • 在添加路径映射之前,应用服务按预期运行。

  • 添加路径映射后,容器无法启动/我能找到的唯一异常信息来自Container Issues日志,根据上面的摘要。

  • 如果我删除路径映射,问题仍然存在,即使在强制重启之后也是如此。解决此问题的唯一方法是删除并重新部署应用服务。

  • 它通过专用终结点成功连接到 MySql DB(Azure Database for MySQL 服务器)。

  • 使用dig {privateEndpointFqdn}我能够证明存储帐户的私有端点已正确解析(与 MySQL 一样;如您所料)

  • 使用tcptraceroute {privateEndpointFqdn} {destinationPort}我能够证明我可以连接到端口 445 上的存储帐户(以及端口 3306 上的 MySQL 数据库)。

  • 注意:我无法连接到端口 137、138 或 139 上的存储帐户,尽管通过 NSG 允许使用与上述 445 相同的入站和出站规则;尽管我怀疑 CIFS 不再需要这些端口(我只是在第一次遇到问题后才将这些端口作为以防万一的措施添加,以防它们在某些帖子中提到它们以某种方式相关)。

  • 我通过 SSH 进入容器来运行上述测试,因此命令是从其上下文中运行的。注意:因为添加路径映射后无法启动容器,所以这些测试是在创建应用服务之后添加路径映射之前执行的。

  • 我已经增加到WEBSITES_CONTAINER_START_TIME_LIMIT它的最大值:1800

  • 我的容器暴露了 80 端口(即容器应用服务支持的默认端口之一);并且网站在路径映射不存在时工作,所以这不应该是问题。我也设置WEBSITES_PORT为80,仅用于腰带和大括号。

  • WEBSITES_ENABLE_APP_SERVICE_STORAGE设置为false(尽管我也尝试将其设置为true,以防万一/它没有任何区别,所以我恢复为false)。

  • 我的文件共享有几 GB 的数据。我已经尝试创建一个没有内容的相同文件共享并映射到该文件共享(在重新创建应用程序服务并证明它有效之后立即;以确保我的测试不受较大文件共享的后遗症的影响)。这给出了与较大文件共享相同的问题。

  • 我的容器的映像是从 Azure 容器存储库加载的。

  • 该图像基于ubuntu:21.04

  • 我已经包含了azure-cli和cifs-utils包(我认为这仅在从容器执行挂载操作时才需要,而不是从 AppService 的配置中;但我想涵盖所有假设)

  • 托管 ASE 位于该UK South区域中(存储帐户/所有资源也是如此)。

注意:这是我在 App Service 中运行容器的第一次体验;所以PEBKAC绝对是一种可能。

任何建议或故障排除建议将不胜感激。谢谢。

azure
  • 0 0 个回答
  • 1523 Views

0 个回答

  • Voted
  1. Best Answer
    JohnLBevan
    2021-12-17T05:58:22+08:002021-12-17T05:58:22+08:00

    我通过将存储帐户的网络从selected networks(我已将 ASE 的 VNet 和 Web 应用程序的出站 IP 列入白名单)更改为all networks通过门户解决了该问题:

    https://portal.azure.com/#@<myTentantName>.onmicrosoft.com/resource/subscriptions/<mySubscrption>/resourceGroups/<myStorageAccountsResourceGroup>/providers/Microsoft.Storage/storageAccounts/<myStorageAccountName>/networking

    然后我重新启动了我的应用程序(包括删除和重新添加安装......不确定是否需要,但为了好的措施):

    # stop the web app
    az webapp stop \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> 
    
    # drop the existing path mapping
    az webapp config storage-account delete \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> \
        --custom-id <path-mapping-name> \
    
    # re-add the path mapping
    az webapp config storage-account add \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> \
        --custom-id <path-mapping-name> \
        --storage-type AzureFiles \
        --account-name [Azure storage account name] \
        --share-name   [Azure storage share name] \
        --access-key   [storage access key] \
        --mount-path   [/path/to/mount within the container] 
    
    # restart the web app
    az webapp start \
        --subscription <sub id> \
        -g <resourcegroup> \
        -n <sitename> 
    
    • 1

相关问题

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve