节点要求
为确保您的验证节点和验证者全节点(VFN)顺利运行,这两个节点应满足本文档中指定的要求。
未满足要求
如果您的节点未能达到文档中的要求,可能会在承受工作负载时性能降低,出现共识故障,奖励减少,以及整体上的不稳定现象。
资源隔离
当运行 Aptos 验证器和 VFN 时,我们强烈推荐将这些节点部署在两台相互独立的机器上。这些机器应当配置充良好,并满足下文所述的各项要求,同时保持彼此独立。确保验证器与 VFN 之间的资源得到有效隔离,这对于增强系统的安全性至关重要,同时也可防止节点在处理高负载时性能下降、出现不稳定或其他故障。
若要在云环境中部署验证器和 VFN,我们为 GCP 和 AWS 这两家云服务提供商提供了 Terraform 的支持。详情请查阅运行验证节点文档。
硬件要求
为了在主网上运行Aptos验证器和 VFN,我们建议您的硬件需要具备足够的性能,能够支持维持大约每秒 30,000 笔交易(TPS)。判断您的硬件是否符合此性能要求,有以下两种评估方式:
- 使用下面提供的参考规格。
- 运行 Aptos 提供的性能基准测试工具。
需要特别注意的是,验证器和 VFN 各自都必须配备独立且充足的硬件资源(也就是说,需要两台独立主机分别满足以下条件)。
参考规格
在主网上运行 Aptos 验证节点和 VFN 的规格
组件 | 规格 |
---|---|
CPU | 32 核,2.8GHz 或更快,AMD Milan EPYC 或 Intel Xeon Platinum |
内存 | 64GB RAM |
存储 | 2T SSD,至少 60K IOPS 和 200MiB/s 带宽 |
网络带宽 | 1Gbps |
各云服务提供商上的示例主机类型
云服务提供商 | 机器类型 | 备注 |
---|---|---|
AWS | c6id.16xlarge | 如果使用本地 SSD |
AWS | c6i.16xlarge + io2 EBS 卷 | 带有 60K IOPS |
GCP | t2d-standard-60 + pd-ssd | 带有 60K IOPS |
Azure | Standard_D64_v5 | 带有 64K IOPS |
性能基准测试
如果您需要评估硬件的性能是否足够,可以使用性能基准测试工具。首先,克隆 aptos-core
库并安装必要的依赖(详见克隆 aptos-core一节)。接着,根据下面的步骤执行命令进行基准测试:
TABULATE_INSTALL=lib-only pip install tabulate
./testsuite/performance_benchmark.sh --short
当基准测试完成后,系统会生成一份表格,其中 t/s
一列将展示您的硬件实际达到的每秒交易数(TPS)。该工具内置了评估标准,若您的硬件未达标,系统将会提示警告信息。
本地 SSD 与网络存储
云部署时,您需要选择使用本地存储还是网络存储,比如 AWS EBS 或 GCP PD。简单来说,本地 SSD 在延迟和成本上通常更有优势,尤其是在每秒输入 / 输出操作数(IOPS)方面。而网络存储则需要 CPU 的支持来提升IOPS。不过,网络存储在备份方面做得更好,为那些停止运行或出错的节点提供了更高的可靠性,因而能够提供更高的系统可用性。您需要根据您的具体需求和考虑,选择使用本地 SSD 还是网络存储。
硬件要求的动机
Aptos 节点的硬件需求主要受两个因素的影响:(1)交易工作量,(2)每台机器上数据库的大小。目前设定的硬件要求基于对交易工作量(如每秒 30,000 笔交易)和 2024 年数据库增长速度的预估值。但请注意,这些要求可能随着实际情况的变化而调整。鉴于交易工作量往往会频繁变动,因此配置硬件以应对最高交易需求显得尤为重要,这样可以确保您的节点即使面对高负载也能保持高效稳定的运行状态。
一般来说,每台机器上数据库的容量主要由两部分构成:一是账本的历史记录(也就是区块链历史中的交易数量),二是链上状态的数量(比如账户和资源)。这两部分的数据量都会受到区块链的使用年限、时间段内的平均交易频率以及账本数据库裁剪器配置等多种因素的影响。目前我们预测,测试网络和主网络大约需要数百 GB 的存储空间。
请注意,由于归档节点存储了区块链的整个历史,归档节点上的数据库大小将无限制地增加。因此,我们无法为归档节点存储空间的大小提供建议。
网络要求和端口
当您运行验证节点和 VFN 时,您需要在节点上打开网络端口以允许其他节点(即,peer,对等节点)连接到您。Aptos 有不同类型的网络,每种网络类型都使用不同的端口(见下文)。
网络类型
Aptos 有三种网络类型:
- 验证者网络: 验证者通过此网络相互连接。验证全节点(VFN)和公共全节点(PFN)不使用此网络。
- VFN 网络: 验证全节点(VFN)网络允许验证者和 VFN 配对相互连接。此网络在验证者和 VFN 之间是私有的。
- 公共网络: 公共网络允许 VFN 和公共全节点(PFN)连接到其他 VFN 和 PFN。这允许公共节点操作者访问区块链。
您可以配置您的节点,使得不同的网络在节点上通过不同的端口运行。通过编辑节点的 YAML 配置文件,您便可以进行端口的设置。以下是一个示例配置文件:它将VFN网络的端口设置为 6181
,而公共网络的端口设置为 6182
。
端口设置
下面描述的建议假设您使用了验证者节点、VFN 和 PFN 的默认端口设置。如果您在配置文件中更改了默认端口设置,则应将建议中提及的内容做相应的更改。
暴露端口
我们建议,除非有特别的要求,否则在运行节点的过程中不要开放任何额外的端口。这样做是因为开放过多的端口有可能让您的节点面临更多的安全威胁,导致更容易遭受攻击者的侵害。
运行验证者:
假设使用默认端口,验证节点应配置以下端口:
- 打开以下 TCP 端口:
6180
- 验证者网络:公开,打开此端口以使验证者能够连接到网络中的其他验证者。6181
– VFN 网络:私有,打开此端口将仅允许您的 VFN 访问。
- 关闭以下 TCP 端口:
6182
– 公共网络:关闭此端口以防止 PFN 连接。9101
– 检查服务:关闭此端口以防止未经授权的指标检查。9102
– 管理服务:关闭此端口以防止未经授权的管理服务交互。80/8080
REST API:关闭此端口以防止未经授权的 REST API 访问。
运行 VFN:
假设使用默认端口,VFN 节点应配置以下端口:
- 打开以下 TCP 端口:
6181
– VFN 网络:私有,打开此端口,仅允许您的验证者访问。6182
– 公共网络:公开,打开此端口以使 PFN 能够连接到您的 VFN。
- 关闭以下 TCP 端口:
9101
– 检查服务:关闭此端口以防止未经授权的指标检查。9102
– 管理服务:关闭此端口以防止未经授权的管理服务交互。80/8080
REST API:关闭此端口以防止未经授权的 REST API 访问。
暴露服务
检查服务端口(9101
)、管理服务端口(9102
)和REST API端口(80
或 8080
)
可能对您的内部网络有用,例如,应用开发和调试。然而,检查服务端口和管理服务端口永远不应公开暴露,因为它们容易被滥用。同样,如果您选择公开暴露REST API端点,您应该部署额外的认证或速率限制机制以防止滥用。
检查服务端口(9101
)、管理服务端口(9102
)以及 REST API 端口(80
或 8080
)在您的内部网络中,可能会非常有用,比如说用于应用开发和调试时。但是,检查服务端口和管理服务端口绝对不能公开,因为这会很容易被滥用。同样,如果您决定将 REST API 端口公开,那么您应当部署额外的认证或限速措施,以避免滥用。