热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在AWS批处理中定义根卷大小

如何解决《如何在AWS批处理中定义根卷大小》经验,为你挑选了1个好方法。

我正在使用AWS Batch,我发现根卷的大小对于我的任务来说太低了.

我尝试创建一个新的计算环境/作业队列,但没有任何选项来设置卷大小.我尝试从此处更改启动配置,但AWS Batch不考虑新的启动配置和/或自动扩展组.我可能不得不改变dm.basesize,但目前还不清楚应该在哪里做.

所以,我建立了一个自定义的AMI从Amazon 2 Linux上的500 GB的存储空间,并改变了--storage-optdm.basesize=400GB所指示的位置,但是,虽然我的情况下被催生,作业留在RUNNABLE状态下去.我检查了这里定义的可能原因,但是i)"启用自动分配公共IPv4地址"被检查,ii)图像应该是好的(它已经在创建环境时被验证并且可以生成),iii)I这样的实例类型有5个实例的限制(但我甚至无法运行1),iv)我的角色权限应该没问题 - 我成功使用了默认的amazonlinux映像的相同角色,v)资源不足(实例得到)产生,所以我认为这不应该是问题),vi)连接 - 它应该工作,因为自动缩放组显示一个成功的状态.

一种可能的解决方案可能是在运行时附加特定的AWS卷,但它会受到限制,我想找到一个自动解决方案,因为我必须管理多个卷以进行并行执行.

我也尝试通过管道来自s3桶的输入执行任务,分析数据和管道输出到第二个s3桶,但每次都得到Connection Reset by Peer错误,可能是因为任务运行的时间太长(我也设置--cli-read-timeout为0)但它根本没有解决它.

有没有办法为AWS批处理中的作业配置根卷大小?



1> Kousic..:

推荐的解决方案是使用非托管计算环境。不幸的是,这最终是一个糟糕的建议,因为创建自己的非托管计算环境不仅困难而深奥,而且不仅破坏了AWS Batch的全部目的,而且还有一个更好(更简单)的解决方案。

该问题的解决方案是创建一个从AWS Batch使用的默认AMI派生的Amazon Machine Image。AMI使您可以通过安装库,修改启动脚本,自定义配置文件以及为我们的目的而最重要地配置所需的操作系统,最重要的是:定义数据卷的逻辑分区和安装点。

1.选择要开始的基本AMI,配置您的实例

我们要基于的AMI是ECS优化的官方AMI。在此页面上浏览,可以根据正在运行的AWS区域找到所需的AMI。

识别出您的AMI后,单击右侧列中的“启动实例”链接。您将被带到此页面:

选择t2.micro实例类型。

选择Next: Configuration Details

如果需要,请为您的实例提供适当的IAM角色。“适当的”构成由您自行决定。保留其余的默认选项。点击Next: Add Storage

现在,您可以在其中配置AMI上的数据量。此步骤还没有为AMI定义最终的卷配置,但是我发现按所需的方式进行配置很有用。在创建AMI之前,您将有机会在以后进行更改。完成后,点击Next: Add Tags

添加所需的任何标签(可选)。点击Next: Configure Security Group

选择SSHType,并将源为Anywhere,或者如果你比我更有责任感,设置IP的一组特定的范围,你知道你将使用连接到您的实例。点击Review and Launch

该页面将允许您查看已设置的选项。如果一切看起来都不错,那么Launch。当它要求提供密钥对时,请选择已创建的密钥对和现有密钥对,或者创建一个新的密钥对。未能执行此步骤将使您无法连接到实例。

2.配置您的软件环境

单击启动后,转到EC2仪表板以查看正在运行的实例:

等待实例启动,然后右键单击它。单击Connect,然后将Example ssh命令复制并粘贴到支持ssh的终端中。的-i "keyname.pem"其实是你的.pem文件的路径,所以一定要确保你要么cd到你的~/.ssh目录,或更改标志的值是路径到您存储您的私人SSH密钥。您可能还需要将“ root”更改为“ ec2-user”。

登录后,可以通过安装所需的任何软件包,库和配置来配置所需的VM。如果您使用了AWS提供的经ECS优化的AMI,则您的AMI将已经满足ECS AMI的基本要求。如果出于某些(奇怪的)原因选择不使用ECS优化的AMI,则将安装并配置以下软件包:

    最新版本的Amazon ECS容器代理

    最新版本的ecs-init代理

    您的ECS容器代理版本的推荐版本Docker。

还要注意,如果要附加与根卷分开的另一个卷,则需要修改/etc/fstab文件,以便在实例启动时挂载新卷。我向您介绍了Google的操作方法。

3.保存您的AMI

完成所有软件的配置和安装后,请返回EC2仪表板并查看正在运行的实例。

右键单击刚创建的实例。将鼠标悬停在Image,然后选择Create Image

您将看到它具有在步骤1中选择的卷配置。我没有从默认设置更改其卷,因此您可以在上面的屏幕截图中看到ECS优化的AMI的默认卷实际上为8GB。/dev/xvda/(根目录)和22GB /dev/xvdc/(用于docker映像等)。确保Delete on Termination选择了这些选项,以便您的实例实例终止后,批处理计算环境可以删除这些卷,否则您将冒着创建无数个EBS卷的风险(非常昂贵,有人告诉我)。我将AMI配置为仅具有111GB的根存储空间,而没有其他设置。您不一定需要为Docker使用单独的卷。

给图像起一个名称和描述,然后选择Create Image

您的实例将重新启动。关闭实例后,AWS将为其创建映像,然后重新打开实例。

在您的EC2控制台中,转到Images, AMIs左侧。几分钟后,您应该在列表中看到新创建的AMI。

4.配置AWS Batch以使用新的AMI

返回您的AWS仪表板并导航到AWS Batch页面。Compute environments在左侧选择。选择Create environment

通过为容器(服务角色)和EC2实例(实例角色)选择适当的IAM角色,配置模型,网络和标签来配置环境。

Option                             Value

Compute environment type          Managed
Compute environment name          ami_test
Service role                      AWSBatchServiceRole
Instance role                     ecsInstanceRole
EC2 key pair                      landonkey.pem (use name of your private key)
Provisioning model                On-Demand (choose spot for significantly cheaper provisioning)
Allowed instance types            Optimal
Minimum vCPUs                     0
Desired vCPUs                     0
Maximum vCPUs                     256
Enable user-specified Ami ID      True
AMI ID                            [ID of AMI you generated]
VPC id                            [default value]
Subnets                           [select all options]
Security groups                   default

关键步骤是选择Enable user-specified Ami ID并指定您在先前步骤中生成的AMI ID。

配置完所有选项后,选择Create

5.创建作业队列和作业定义

为了测试我们的计算环境是否正常工作,让我们继续创建一些简单的队列和作业定义。

Job queues在左侧选择,然后输入以下选项:

Option                                  Value

Queue name                            ami_test_queue
Priority                              1
Enable Job queue                      True
Select a compute environment          ami_test

选择Create。等待新队列上的状态为VALID

转到Job definitions并选择Create。输入以下值:

Option                           Value

Job definition name            ami_test_job_def
Job role                       ECS_Administrator
Container image                amazonlinux
Command                        df -h
vCPUs                          1
Memory (MiB)                   1000
Job attempts                   1
Execution timeout              100
Parameters                     [leave blank]
Environment variables          [leave blank]
Volumes                        [leave blank]
Mount points                   [leave blank]

选择Create job definition

最后,转到Jobs左侧,然后选择Submit job。为您的工作命名,然后ami_test_job_def:1为Job定义选择。保留其余的默认值,然后选择Submit job

如果一切顺利,您现在应该看到工作已进入PendingRunnable状态。请注意,作业实际运行可能需要10分钟以上的时间。EC2实例通常需要5到10分钟才能实例化,还需要几分钟才能通过状态检查。Runnable创建实例并通过所有状态检查后,如果您的作业继续处于状态。出了点问题。


推荐阅读
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
  • C++语言入门:数组的基本知识和应用领域
    本文介绍了C++语言的基本知识和应用领域,包括C++语言与Python语言的区别、C++语言的结构化特点、关键字和控制语句的使用、运算符的种类和表达式的灵活性、各种数据类型的运算以及指针概念的引入。同时,还探讨了C++语言在代码效率方面的优势和与汇编语言的比较。对于想要学习C++语言的初学者来说,本文提供了一个简洁而全面的入门指南。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
author-avatar
杨芷寻找最真的自己
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有