amazon-ebs-autoscale

amazon-ebs-autoscale

EC2实例EBS存储自动扩展工具

amazon-ebs-autoscale是一个开源项目,用于自动监控和扩展EC2实例的EBS存储。它包含一个守护进程,可在文件系统可用空间低于阈值时自动添加EBS卷并扩展文件系统。支持BTRFS和LVM+ext4,提供简便的安装配置,适用于需要动态存储管理的AWS EC2环境。

Amazon EBS自动扩展文件系统EC2实例IAM权限Github开源项目

:warning: 弃用通知 :warning:

此仓库已弃用,将于2024年5月17日存档

此仓库不再被积极维护,将于2024年5月17日存档。作为存档代码,它仅出于历史参考目的而保持公开可用。

对于AWS中可扩展存储的替代和完全托管的解决方案,您应考虑:

Amazon Elastic Block Store 自动扩展

这是一个守护进程的示例,它监控文件系统挂载点,并在可用空间低于配置的阈值时自动扩展。根据需要,新的Amazon EBS卷会被添加到实例,随着新设备的添加,底层文件系统(BTRFS或带有ext4LVM)会扩展。

假设:

  1. 代码在AWS EC2实例上运行
  2. 实例和AMI使用HVM虚拟化
  3. 实例AMI允许像/dev/xvdb*这样的设备名,并且不会重新映射它们
  4. 实例使用基于Linux的操作系统,系统初始化使用upstartsystemd
  5. 实例有一个具有适当权限以创建和附加新EBS卷的IAM实例配置文件。有关更多详细信息,请参阅下面的IAM实例配置文件部分
  6. 实例上已安装以下先决条件:
    1. jq
    2. btrfs-progs
    3. lvm2
    4. unzip

此仓库提供:

  1. 一个脚本,用于创建新的EBS卷并将其附加到当前实例
  2. 一个守护进程脚本,用于监控磁盘空间并使用上述脚本根据需要添加EBS卷来扩展目标文件系统
  3. upstartsystemd的服务定义
  4. 服务logrotate的配置文件
  5. 一个安装脚本,用于配置和安装上述所有内容
  6. 一个卸载脚本,用于移除服务守护进程,卸载文件系统,并分离和删除守护进程创建的任何ebs卷
  7. 一个示例cloud-init脚本,可用作EC2实例用户数据以进行自动安装

安装

设置实例的最简单方法是提供带有用户数据cloud-init脚本的启动调用。以下是在us-east-1中使用此文件启动Amazon ECS优化AMI的示例:

aws ec2 run-instances --image-id ami-5253c32d \ --key-name MyKeyPair \ --user-data file://./templates/cloud-init-userdata.yaml \ --count 1 \ --security-group-ids sg-123abc123 \ --instance-type t2.micro \ --iam-instance-profile Name=MyInstanceProfileWithProperPermissions

该脚本安装所需的包并运行初始化脚本。默认情况下,这会在加密的200GB gp3 EBS卷上创建一个/scratch挂载点。要更改挂载点,请编辑cloud-init脚本文件,并根据您的特定需求为安装脚本提供其他选项。安装选项如下所示。

安装Amazon EBS自动扩展 install.sh [选项] [[-m] <挂载点>] 选项 -d, --initial-device 设备 用于挂载点的初始设备 - 例如 /dev/xvdba。 (默认: 无 - 自动创建并附加卷) 如果提供,则忽略 --initial-size。 -f, --file-system btrfs | lvm.ext4 要使用的文件系统(默认: btrfs)。 选项为btrfs或lvm.ext4 -h, --help 打印帮助并退出。 -m, --mountpoint 挂载点 自动扩展卷的挂载点(默认: /scratch) -t, --volume-type 卷类型 卷类型(默认: gp3) --volume-iops 卷IOPS gp3、io1、io2的卷IOPS(默认: 3000) --volume-throughput 卷吞吐量 gp3的卷吞吐量(默认: 125) --min-ebs-volume-size 大小_GB 实例创建的新卷的最小大小(GB)。 (默认: 150) --max-ebs-volume-size 大小_GB 实例创建的新卷的最大大小(GB)。 (默认: 1500) --max-total-created-size 大小_GB 实例创建的所有卷的最大总大小(GB)。 (默认: 8000) --max-attached-volumes N 最大附加卷数。(默认: 16) --initial-utilization-threshold N 扩展的初始磁盘利用率阈值。(默认: 50) -s, --initial-size 大小_GB 卷的初始大小(GB)。(默认: 200) 仅在未指定 --initial-device 时使用。 -i, --imdsv2 为实例元数据API请求启用imdsv2。

IAM实例配置文件说明

在上面的示例中,我们假设MyInstanceProfileWithProperPermissions EC2实例配置文件存在并具有以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachVolume", "ec2:DescribeVolumeStatus", "ec2:DescribeVolumes", "ec2:DescribeTags", "ec2:ModifyInstanceAttribute", "ec2:DescribeVolumeAttribute", "ec2:CreateVolume", "ec2:DeleteVolume", "ec2:CreateTags" ], "Resource": "*" } ] }

请注意,如果您启用EBS加密并使用AWS Key Management Service的客户管理密钥,那么您还应确保提供适当的IAM权限以使用该密钥。

实例存储说明

以下是利用实例存储的示例脚本。

## 检查实例存储
echo "-- 检查实例存储 --"
/opt/amazon-ebs-autoscale/instance_storage_checker.sh 2>&1 >> /var/log/ebs-autoscale-install.log
## 安装ebs-autoscale
echo "-- 安装EBS自动扩展器 --"
if [ -f instance_storage_device.txt ]; then
    INSTANCE_STORAGE=$(cat instance_storage_device.txt)
    /opt/amazon-ebs-autoscale/install.sh \
    --initial-device $INSTANCE_STORAGE \
    --initial-utilization-threshold 90 \
    --mountpoint /var/lib/docker \
    2>&1 >> /var/log/ebs-autoscale-install.log
else
    /opt/amazon-ebs-autoscale/install.sh \
    --mountpoint /var/lib/docker 2>&1 >> /var/log/ebs-autoscale-install.log
fi

许可摘要

此示例代码根据MIT许可证提供。

编辑推荐精选

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

下拉加载更多