新闻动态

  • 首页
  • 新闻动态
  • # 如何无神论工程提高在 AWS 上运行 Polygon 节点的存储延迟 数据库博客

# 如何无神论工程提高在 AWS 上运行 Polygon 节点的存储延迟 数据库博客

  • 2026-01-27 11:33:16
  • 7

改进 Polygon 节点存储延迟的无偏工程方案

主要要点

本文介绍了 Agnostic 如何通过结合 AWS 的实例存储和弹性块存储EBS优点,成功降低 Polygon 节点的存储延迟,实现了高效、低延迟的读取操作。该方法不仅提升了服务性能,还确保了数据的持久性和易于备份。

由 Arnaud Briche 和 Nikolay Vlasov 于2024年5月22日发布在高级(300)区块链客户解决方案永久链接评论

这是一篇由 Agnostic 创始人 Arnaud Briche 合作撰写的客座文章。

在 Agnostic 中,我们的使命是使结构良好的区块链数据更加开放。我们致力于提供快速、用户友好、坚固的查询方法,以处理智能合约区块链生成的大量数据。出于性能原因,最初我们选择了无机房服务提供商,但随后决定利用 AWS 的全球覆盖来扩展业务并提高服务的可靠性。

我们支持的一个区块链网络是 Polygon,该网络具有高吞吐量要求,需要在块存储卷上实现低毫秒级的读取操作延迟。这对于区块链客户端 Erigon 保持网络最新状态至关重要。当我们测试 Amazon 弹性块存储 (Amazon EBS) 的 gp3 卷 时,我们发现尾延迟无法始终满足预期目标,而 EBS io2 卷 在成本效率方面对我们的设置存在挑战。尾延迟是指系统中少数响应时间较长的部分,与其他响应时间相比的持续时间。

在这篇文章中,我们展示了我们创造的另一种解决方案,以实现所需的超低延迟读取操作。

解决方案概述

我们实施的解决方案结合了 Amazon 弹性计算云 (Amazon EC2) 实例存储卷 和通用持久 EBS gp3 块存储的优势。我们选择使用实例存储卷作为一种具有成本效益的低延迟存储选项。这些卷位于物理连接到主机计算机的磁盘上,可以在 某些 EC2 实例类型 中使用临时的低延迟块级存储。以下图表说明了整体解决方案的工作原理。

该解决方案包含以下关键组件:

我们选择了配备多个 SSD 驱动的 EC2 实例,并将其结合成一个使用 RAID 0 配置的 条带化存储。为了防止潜在的数据丢失,我们附加了一个 EBS gp3 卷,其总大小与新 RAID 0 数组相同,并设置了 RAID 1 配置的数据镜像。我们还使 EBS gp3 卷在 RAID 1 配置中以写为主,确保读取操作由更快的 RAID 0 实例存储卷组合提供。

设置完 RAID 数组后,我们安装和配置了 OpenZFS 文件系统,以利用其内置的 数据压缩功能 进一步优化空间消耗。

此外,我们还创建了一个 AWS CloudFormation 模板,附带用户数据脚本,以简化部署和配置。要在您的 AWS 账户中尝试类似我们的预配置实例,可以使用以下堆栈:

请务必检查所有配置参数,并选择 我认可 AWS CloudFormation 可能会创建具有自定义名称的 IAM 资源 s。

请注意,此模板将部署免费层以外的资源,并会产生额外费用。您可以根据以下部分讨论的基础设施考虑事项来 估算费用。

解决方案深入研究

我们选择了 i3en6xlarge 实例模型,配备了两个每个大小为 7500 GB 的 NVMe SSD 实例存储卷。然后我们附加了一个 14000 GiB 的 EBS gp3 卷,以匹配实例存储卷的总大小。为简单起见,我们还使用了 Ubuntu Linux 2004 版本。然后我们通过以下步骤完成了设置:

配置实例存储卷的 RAID 0 数组:

bash mdadm verbose create /dev/md/0 level=0 raiddevices=2 /dev/nvme2n1 /dev/nvme3n1

配置 RAID 1 数组,将组合的实例存储卷与附加的 EBS 卷连接,设置为写为主:

bash mdadm create verbose assumeclean force /dev/md/1 level=1 name=1 raiddevices=2 /dev/md/0 writemostly /dev/nvme1n1

在 Ubuntu Linux 2004 上安装 OpenZFS 文件系统:

bash apt yqq install zfsutilslinux

配置OpenZFS文件系统: bash # 为了确保 ZFS 能正确识别硬件块大小,我们通常将其显式设置为 4KiB并将最大卷大小限制为 16 TiB在 ZPOOL 创建时。 zpool create o ashift=12 data /dev/md/1

# 检查我们新建的 zfs pool 状态 zpool status data

# 启用压缩 zfs set compression=lz4 data

# 默认 ZFS 的 recordsize 为 128K 并不适合我们的工作负载区块链节点。因此,我们将其设置为更小的值。 zfs set recordsize=16K data

迅猛兔加速器正版

# 访问时间跟踪通常对我们的工作负载没有用处并且可能造成大量无意义的 IO,所以我们禁用它。 zfs set atime=off data

# 将扩展属性从隐藏子目录移动到系统属性上 zfs set xattr=sa data

新数据卷将挂载到文件系统的 /data 目录下,我们将继续 部署带有 Polygon Erigon 客户端的归档节点

# 如何无神论工程提高在 AWS 上运行 Polygon 节点的存储延迟 数据库博客

如果您使用我们的 CloudFormation 模板创建实例,则用户数据脚本会自动为您执行上述步骤。

部署完成后,您可以使用 Session Manager 连接到您的 EC2 实例,这是 AWS Systems Manager 的一个功能。更多细节,请参阅 使用 AWS Systems Manager Session Manager 连接到 Linux 实例。

您可以使用以下命令检查存储配置。

检查新的 /data 卷的大小:

bash df h grep /data

获取所有 RAID 配置的摘要:

bash mdadm detail scan verbose

检查所有块设备的配置:

bash lsblk

获取新 /data 卷的 OpenZFS 配置:

bash zfs get all data

然后,您可以继续 安装自己的 Polygon Erigon 客户端。确保在 datadir 参数 中配置 /data,并在与新 EC2 实例相关的安全组中 添加入站规则,以 开放 30303 和 26656 端口。

清理

要删除使用上述“ Launch Stack ”链接部署的所有资源, 导航到您的 AWS 控制台中的 CloudFormation 服务,选择您部署的堆栈默认名称为“ singlebcnodewithRAID10 ”,然后在右上角点击“ Delete ”按钮。

结论

在这篇文章中,我们分享了 Agnostic 如何成功创建一个与裸金属设置相匹配的节点,同时大幅提升耐用性,能够高效备份和复制数据,快速提供节点。这一成就体现了顶级性能与无与伦比的灵活性相结合的例子。了解更多关于 Agnostic Engineering 的信息,如果您有进一步的问题,请在 AWS rePost 上提出,记得标注“区块链”。如果您在所提供的 CloudFormation 模板中遇到问题,请在 AWS Blockchain Node Runners GitHub 仓库 中打开一个问题。

关于作者

ArnaudBriche 是 Agnostic 的创始人。他的专长是大规模构建和管理分布式系统。

Nikolay Vlasov 是 AWS 全球专业解决方案架构师组织的高级解决方案架构师,专注于与区块链相关的工作负载。他帮助客户在 AWS 上运行支持去中心化网络和账本技术的工作负载。

评论加载中


发表评论

提交
迅猛兔加速器正版

迅猛兔官方网站提供全球连线服务,实现一键速度提升,助您畅享网络,加速体验,无论身处何地,轻松连接。

网站地图

找到迅猛兔加速器免费下载