Azure在池上批量装载blob存储导致错误“;“不允许安装软件包”;

Azure在池上批量装载blob存储导致错误“;“不允许安装软件包”;,azure,azure-batch,Azure,Azure Batch,我有一个Azure批处理池,在那里我安装了三个blob存储容器。但是,当节点第一次启动时,如果出现以下错误,则该方法会起作用: 从日志中看,节点似乎在安装BlobBuse包时遇到了问题。重复获取此错误消息: 2020-03-11T09:15:48,654579941+00:00 - INFO: Downloading: https://packages.microsoft.com/keys/microsoft.asc as microsoft.asc 2020-03-11T09:15:48,7

我有一个Azure批处理池,在那里我安装了三个blob存储容器。但是,当节点第一次启动时,如果出现以下错误,则该方法会起作用:

从日志中看,节点似乎在安装BlobBuse包时遇到了问题。重复获取此错误消息:

2020-03-11T09:15:48,654579941+00:00 - INFO: Downloading: https://packages.microsoft.com/keys/microsoft.asc as microsoft.asc
2020-03-11T09:15:48,770319520+00:00 - INFO: Downloading: https://packages.microsoft.com/config/ubuntu/16.04/prod.list as /etc/apt/sources.list.d/microsoft-prod.list
Hit:1 http://azure.archive.ubuntu.com/ubuntu xenial InRelease
Hit:2 http://azure.archive.ubuntu.com/ubuntu xenial-updates InRelease
Hit:3 http://azure.archive.ubuntu.com/ubuntu xenial-backports InRelease
Hit:4 http://security.ubuntu.com/ubuntu xenial-security InRelease
Get:5 https://packages.microsoft.com/ubuntu/16.04/prod xenial InRelease [4,002 B]
Get:6 https://packages.microsoft.com/ubuntu/16.04/prod xenial/main amd64 Packages [124 kB]
Fetched 128 kB in 0s (383 kB/s)
Reading package lists...
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
...

2020-03-11T09:16:53,361634408+00:00 - ERROR: Could not install packages (apt): blobfuse
然后节点进入状态
不可用
,直到我手动重新启动它们,这将“修复”问题,然后节点开始处理任务

任务应以提升的权限运行:

UserIdentity = new UserIdentity(
                new AutoUserSpecification(
                      elevationLevel: ElevationLevel.Admin,
                      scope: AutoUserScope.Pool
                  )
              ),
更新1
我无法解决这个问题,所以我决定解决它。调整池的大小或重新创建池没有帮助。相反,我在Docker映像中安装了BlobBuse,并将blob存储容器装载到任务本身中。这很好。

您的方法看起来不错,很高兴重新启动修复了它,在这种特定情况下,这是正确的修复方法以及重新调整大小

感谢共享日志,这看起来像是BlobBuse安装失败的问题

最大的缺陷是:
**错误:无法安装软件包(apt):BlobBuse**
是最大的指示器,本质上是引擎盖下的节点希望BlobBuse被安装,并且似乎某些进程有一个长时间并行运行的apt安装

2个可能的解决方案

  • 就像你提到的重新启动修复了它
  • 另一个选项是调整池的大小更好:重新创建池,然后重试
为什么重新启动或调整大小会解决这个问题:实际上,在这两种情况下,VM都会在批处理结束时使用刷新内存调用加入池进程,这将有助于取消BlobBuse的锁定方案。在batchnode级别,我们可以尝试某种退避机制。我也会留意这件衬衫,如果里面有什么东西导致了这种情况


希望这能有所帮助。

您的方法看起来不错,很高兴重新启动修复了它,在这种特定情况下,这是正确的修复方法以及重新调整大小

感谢共享日志,这看起来像是BlobBuse安装失败的问题

最大的缺陷是:
**错误:无法安装软件包(apt):BlobBuse**
是最大的指示器,本质上是引擎盖下的节点希望BlobBuse被安装,并且似乎某些进程有一个长时间并行运行的apt安装

2个可能的解决方案

  • 就像你提到的重新启动修复了它
  • 另一个选项是调整池的大小更好:重新创建池,然后重试
为什么重新启动或调整大小会解决这个问题:实际上,在这两种情况下,VM都会在批处理结束时使用刷新内存调用加入池进程,这将有助于取消BlobBuse的锁定方案。在batchnode级别,我们可以尝试某种退避机制。我也会留意这件衬衫,如果里面有什么东西导致了这种情况


希望这能有所帮助。

我遇到了完全相同的问题,当我创建动态池和任务时,手动介入并为我重新启动不是一个选项

我的解决方法是将批处理帐户链接到存储帐户,然后将资源文件指定为任务的一部分。这使容器在任务的工作目录中可见

这是我在NodeJS中的示例,它应该可以转换为您选择的语言

{
        id: taskId,
        commandLine: "",
        containerSettings: taskContainerSettings,
        environmentSettings: [
            {
                name: "USER_ID",
                value: userId
            },
            {
                name: "RUN_ID",
                value: runId
            }],
        resourceFiles: [{"autoStorageContainerName": userId}]
};

我有完全相同的问题,当我创建动态池和任务时,手动介入并重新启动对我来说不是一个选项

我的解决方法是将批处理帐户链接到存储帐户,然后将资源文件指定为任务的一部分。这使容器在任务的工作目录中可见

这是我在NodeJS中的示例,它应该可以转换为您选择的语言

{
        id: taskId,
        commandLine: "",
        containerSettings: taskContainerSettings,
        environmentSettings: [
            {
                name: "USER_ID",
                value: userId
            },
            {
                name: "RUN_ID",
                value: runId
            }],
        resourceFiles: [{"autoStorageContainerName": userId}]
};

安装这些软件包需要root访问权限吗?@Aravind。任务本身以管理员身份运行,但当新节点加入时,此进程将在池本身上运行。我对这个过程没有多少控制权。我所做的就是添加装载配置,我认为azure应该修复其余的。+1:这看起来像BlobBuse软件包的
安装问题,尝试
调整大小或重新启动
您的池回到零,然后再放大,我认为作为joinpool,新加入的VM应该触发新的安装。这应该会有帮助。Hiya@NiklasNoem这是一个很好的方法,但请记住,如果你的女衬衫司机在65小时后得到了一个拥抱,那么就把它放在后面。这里的详细信息如下:,如果不需要docker,你也可以通过脚本在正常批处理节点的开始任务级别上完成这项工作。@Tats\u Innin谢谢你的提示。这可能比任何任务运行的时间都长,而且池是自动伸缩的,因此它将重新连接。再次感谢您的帮助。您需要root访问权限才能安装这些软件包吗?@Aravind。任务本身以管理员身份运行,但当新节点加入时,此进程将在池本身上运行。我对这个过程没有多少控制权。我所做的就是添加装载配置,我认为azure应该修复其余的。+1:这看起来像BlobBuse软件包的
安装问题,尝试
调整大小或重新启动
您的池回到零,然后再放大,我认为作为joinpool,新加入的VM应该触发新的安装。这应该会有帮助。Hiya@NiklasNoem这是一个很好的方法,但请记住,如果你的女衬衫司机在65小时后有一个现成的拥抱,在这里详细说明:,如果不需要docker,你可以始终通过脚本和在开始任务级别这样做