×
AI > AI技术 > 详情

怎样优化Libra验证器的节点性能

发布时间:2023-04-21 发布时间:
|

作为Libra协会的成员,Bison Trails在Libra testnet网络上运行了第一个非Calibra验证节点,获得了深入的经验。 在这篇文章中,我们详细介绍了从这个练习中学到的知识,并就如何优化节点性能为其他验证者节点操作员提供了建议。

开始运行验证节点

在详细介绍一些经验开始之前,我们建议您下载并运行Libra网络软件。Libra项目团队在GitHub上提供了开源软件,并在Libra项目开发人员的网站上提供了出色的指导文档。Move编程语言的介绍,以及如何构建和运行验证者的详细说明。

1. 按照Libra Core的testnet分支的“ docker”目录中的说明在本地通过Docker运行https://github.com/libra/libra/tree/testnet/docker

2. 使用Terraform在AWS上运行网络,再次遵循Libra core的testnet分支的“Terraform”目录中的说明

在这两种情况下,您都应该使用代码的testnet分支,因为它更稳定,并且由Libra区块链开发人员文档推荐。

使用上述任一方法运行验证者节点都相对简单。我们建议您首先在本地通过Docker运行,以了解节点的配置,使用docker logs命令查看其日志,并了解如何引导验证程序来发现彼此。Terraform部署将启动一个更真实的验证者网络,验证者将通过网络相互通信。

对于那些已经尝试通过这两种方法来运行软件的人来说,下面的建议将是最有意义的。

准备迎接主网的三种方法

接下来,我们想根据我们运行Libra验证器的初步经验以及我们与其他区块链网络的先前经验分享三个建议。

1、坚持到底

当Libra网络启动时,随着新帐户的添加和已验证的事务执行创建新版本的分类帐状态,分类帐状态将随着时间的推移而增长。存储分类帐状态的数据库将相应增加。重要的是,无论出于何种原因重新启动验证者进程,验证者节点和完整节点都必须能够快速恢复。在最坏的情况下,从理论上讲,节点始终可以仅从创世块开始重新同步整个历史记录,但是可以通过将区块链存储在持久卷上,可以轻松避免这种昂贵且耗时的同步。

按照惯例,Libra验证器通常配置为将区块链数据存储在目录“ / opt / libra / data”中;您可以通过更改/opt/libra/etc/node.config.toml的存储部分将区块链数据存储在其他位置,但是我们建议您坚持使用默认位置。

从node.config.toml中摘录的推荐存储配置

dir = “/opt/libra/data”

无论您的节点使用哪个系统目录来存储区块链,都将需要在该目录树的该位置挂载一个永久卷。 当我们建议通过Docker运行时,这就像使用--volume或--mount标志指定安装详细信息一样简单。 例如,假设您已在/ data主机上安装了多TB持久卷,并且配置文件在安全卷/ libra-config上可用,则可以调用Docker来使用该卷,如下所示:

**使用volume标志来持久化**

$ docker run -v /data:/opt/libra/data -v /config:/opt/libra/etc libra_e2e

而且,实际上Libra源代码中提供的Terraform模板使用这种配置将Libra区块链数据存储在EBS卷上。

在Bison Trails,我们还拥有专有系统,可以定期对区块链数据进行快照,以便在丢失卷或特定数据中心不可用时(在全球运行的数十万个区块链节点中很少发生),我们可以快速使用新卷或在其他位置启动新节点。就是说与这些高级类型的系统不同,我们用自己的Libra验证者所做的第一件事就是将区块链目录存储在一个持久的位置。

2、指标和警报

在Bison Trails,我们习惯于在运行的区块链软件旁边添加监视层,以便我们可以预测并采取通过网络正常演进所需的任何扩展操作,并对任何意外事件做出反应。

以Libra区块链为例,核心开发团队通过Prometheus发布了非常有用的指标的软件,为所有验证者提供了巨大的开端。Prometheus是一个出色的时间序列数据解决方案,它已成为衡量指标和提醒开发人员团队的金标准。体验这些指标的最佳方法是通过上面运行验证者入门中所述的Terraform方法来运行验证者网络。如下面的屏幕快照所示,它提供了一个现成的仪表板,其中包含针对各个节点以及整个网络范围的节点的许多关键指标。

Libra Core随附了工作指标和示例仪表板

如何优化Libra验证器的节点性能

通过跨多个网络运行节点,我们已经建立了一种相当广泛而严格的方法来监视我们的节点。 我们以三种常规类别查看指标:

系统指标:例如 CPU /内存/磁盘利用率

区块链节点:例如 流程运行状况,节点连接性,数据传输

区块链应用:例如 冻结率,交易率和验证统计

对于我们跟踪的每个指标,我们可以将警报大致分为严重或非严重警报。由于Libra主网尚未启动,并且核心开发工作以非常激进的速度推进,如果验证程序停顿,Bison Trails的任何人都不会得到调用。但是随着启动的临近,我们将收紧警报阈值和严重性,我们建议由运行节点的任何Libra Association成员监视关键性能指标,并在适当的地方建立警报。

3、保护您的密钥

我们的最终建议与您的Libra节点的密钥管理有关。首先,一个警告:验证者密钥管理的方法正在推进,因此我们在此描述的内容并不打算用于主网,而是要让Association成员和其他节点操作员考虑验证者密钥。随着有关密钥,密钥轮换,HSM和其他安全性问题的一些操作问题在未来几个月内得到解决,以下方法肯定会发生变化。

当前Libra验证者使用存储在两个配置文件中的三个密钥对运行:

1. 共识密钥存储在/opt/libra/etc/consunsion_keypair.config.toml

2. 网络标识和签名密钥存储在/opt/libra/etc/network_keypair.config.toml

在Bison Trails,我们使用分层方法来确保对密钥的访问。由于Libra验证程序需要从文件读取密钥,因此以下两种做法适用:

1. 限制密钥文件的权限:无论用户是谁,验证者进程都是唯一需要读取这些文件的进程,并且不需要向其写入文件,因此我们建议将权限模式设置为“ 400”,这意味着用户可以读取,并且没有其他人可以读或写。

2. 磁盘隔离:至少我们建议您将tmpfs卷用于Docker映像,并包括引导代码以使配置文件在tmpfs卷上可用。

如果您只是在本地试验验证者节点,则不需要密钥保护,但是请务必注意开发模式与生产模式中要执行的操作之间的根本是有差异的,做好所有准备工作,迎接Libra主网的到来。
 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
如何写一个Solidity智能合约