Agnostic 工程如何改善在亚马逊云科技上运行 Polygon 节点的存储延迟
这是一篇由 Agnostic 创始人阿诺·布里奇共同撰写的客座文章。
在 Agnostic,我们的使命是普及结构良好的区块链数据。我们的目标是提供一种快速、用户友好且强大的方法来查询智能合约区块链生成的大量数据。作为一家公司,出于绩效考虑,我们最初使用裸机服务提供商,但随后决定利用亚马逊云科技的全球业务来扩展我们的业务并提高服务的可靠性。
我们支持的区块链网络之一是 Polygon,它是一个高吞吐量网络,需要对区块存储量进行低位数毫秒的读取操作延迟。这对于使区块链客户端(在本例中为 Erigon)能够及时了解网络的最新状态至关重要。当我们测试 Amazon Elastic Block Store(Amazon EBS)gp3 卷时,我们发现尾部延迟并不总是能达到目标,而 EBS io2 卷对我们的设置来说具有挑战性的成本效益。尾部延迟是指与其余响应时间相比,系统响应时间最长的一小部分的持续时间。
在这篇文章中,我们展示了我们为实现所需的超低延迟读取操作而创建的替代解决方案。
解决方案概述
我们实施的解决方案结合了 Amazon Elastic Compute Cloud(Amazon EC2)实例存储卷和通用耐用型 EBS gp3 区块存储的优势。我们选择使用实例存储卷作为经济实惠的低延迟存储选项。这些卷位于物理连接到主机计算机的光盘上,这使我们能够在某些 EC2 实例类型中使用临时的低延迟块级存储。下图说明了整体解决方案的工作原理。
该解决方案由以下关键组件组成:
- 我们选择了一个具有多个 SSD 实例存储卷的 EC2 实例。为了实现更好的延迟,我们使用 RAID 0 配置将它们组合成单个条带化存储。
- 为了防止潜在的数据丢失,我们连接了一个包含新 RAID 0 阵列总大小的 EBS gp3 卷,并使用 RAID 1 配置设置了数据镜像。
- 我们还将 EBS gp3 卷设置为主要在 RAID 1 设置中写入,以确保读取操作将由更快的 RAID 0 组合实例存储卷阵列提供。
设置 RAID 阵列后,我们安装并配置了 OpenZFS 文件系统,以受益于其内置的数据压缩功能并进一步优化空间消耗。
我们还创建了一个带有用户数据脚本的 Amazon CloudFormation 模板,以简化部署和配置。要在您的亚马逊云科技账户中试用与我们的类似的预配置实例,请使用以下堆栈:
请务必查看所有配置参数,然后选择 "我承认 Amazon CloudFormation 可能会使用自定义名称创建 IAM 资源"。
请注意,此模板将在免费套餐之外部署资源,并将产生额外费用。您可以根据我们在下一节中讨论的基础设施注意事项来估算成本。
解决方案深度探索
我们选择了 i3en.6xlarge 实例模型,该模型带有两个 NVMe 固态硬盘实例存储卷,每个容量为 7500 GB。然后,我们连接了一个 EBS gp3 14000 GiB 卷,以匹配实例存储卷的总大小。为了简单起见,我们还使用了 Ubuntu Linux 版本 20.04。然后,我们使用以下步骤完成了设置:
- 使用实例卷配置 RAID 0 阵列:
- 使用主要写入设置在组合实例存储卷和连接的 EBS 卷之间配置 RAID 1 阵列:
- 在 Ubuntu Linux 版本 20.04 上安装 OpenZFS 文件系统:
- 为新的 RAID0+1 阵列配置压缩功能 OpenZFS 文件系统:
新的数据卷将挂载到 /data 下的文件系统中,我们将继续使用 Polygon Erigon 客户端部署存档节点。
如果您使用我们的示例 CloudFormation 模板创建您的实例,则用户数据脚本会自动为您完成上述步骤。
部署完成后,您可以使用会话管理器(Amazon Systems Manager 的一项功能)连接到您的 EC2 实例。更多详情,请参阅使用 Amazon Systems Manager 会话管理器连接您的 Linux 实例。
然后,您可以使用以下命令检查存储配置。
- 检查新 /data 卷的大小:
- 获取所有 RAID 配置的摘要:
- 检查所有区块设备的配置:
- 获取新 /data 卷的 OpenZFS 配置:
然后你可以继续为 Polygon 安装自己的 Erigon 客户端。确保在 —datadir 参数中配置 /data,并添加入站规则,以便在与新 EC2 实例关联的安全组中打开端口 30303 和 26656。
清理
要删除使用上述 "启动堆栈" 链接部署的所有资源,请在您的亚马逊云科技控制台中导航到 CloudFormation 服务,选择您已部署的堆栈(默认名称为 "带有 RAID10 的单 BC 节点"),然后单击右上角的 "删除" 按钮。
结论
在这篇文章中,我们分享了 Agnostic 如何成功创建了一个与裸机设置速度相匹配的节点,同时显著提高了耐久性,使我们能够高效地备份和复制数据以快速配置节点。这一成就体现了顶级性能和无与伦比的灵活性的融合。了解有关不可知论工程的更多信息,如果您还有其他问题,请在亚马逊云科技 re:POST 上以 "区块链" 为标签向他们提问。如果您在使用提供的 CloudFormation 模板时遇到问题,请在 GitHub 上提出亚马逊云科技区块链节点运行器存储库的问题。
作者简介
Arnaud Briche 是 Agnostic 的创始人。他的专长是大规模构建和管理分布式系统。
Nikolay Vlasov 是亚马逊云科技全球专家解决方案架构师组织的高级解决方案架构师,专注于区块链相关工作负载。他帮助客户在亚马逊云科技上运行支持去中心化网络和账本技术的工作负载。