观察小队
连接到Elrond网络的 N+1 设置
为了与Elrond网络整合,并能够以一种优化的方式广播交易和查询区块链数据,需要建立一个现场观察小组。
观察小队被定义为一组N
观察者节点(每个分片一个,包括元链)加上一个 Elrond代理 实例,它将连接到这些观察者并提供一个 HTTP API(通过将请求委托给观察者)。
提示
目前Elrond主网有 3 个分片,加上元链。因此,观察小组由 4 个观察者和一个代理实例组成。
通过建立一个观察小组,并通过代理查询区块链数据,Elrond的分片建筑的特殊性被抽象出来。这意味着与代理交互的客户端根本不需要考虑分片。
系统要求
观察小队可以安装在多台机器上,也可以安装在一台更强大的机器上。
如果是单台机器,我们的建议如下:
- 16 个 CPU
- 32 GB 内存
- 最高可扩展至 5 TB 的磁盘空间
- 100 Mbit/s 不间断互联网连接
- Linux 操作系统(推荐 Ubuntu 20.04)
考虑到网络负载不断增加,建议的 CPU 数量已于 2021 年 4 月从8
更新为16
。
提示
这些规格只是建议。根据 API 或观察者的负载,应该升级机器以保持团队同步和良好的性能。
通过 Mainnet 脚本设置
警告
从 2022 年 11 月起不再使用。请使用elrond-go-scripts
,解释如下。
通过 elrond-go-scripts 设置
安装和配置
观察小队可以使用安装脚本来设置。在安装过程中,默认情况下会启用DBLookupExtension
功能(Hyperblock API 所要求的)。
克隆安装程序存储库:
git clone https://github.com/ElrondNetwork/elrond-go-scripts.git
相应地编辑config/variables.cfg
。例如:
ENVIRONMENT="mainnet"
...
CUSTOM_HOME="/home/ubuntu"
CUSTOM_USER="ubuntu"
此外,您可能希望设置以下选项,以便将日志保存在节点的logs
文件夹中:
NODE_EXTRA_FLAGS="-log-save"
请检查CUSTOM_HOME
目录是否存在。运行安装脚本,如下所示:
./script.sh observing_squad
安装后,5 个新的systemd
单元将可用(并启用)。
使用以下命令启动节点和代理:
./script.sh start
为了检查观察小组的状态,请参见下面的章节监控和日常检查。
升级观察小队
观察小队可以使用安装脚本进行更新。
一般升级程序
重要
从 2022 年 11 月起不再使用。这些脚本的用户必须迁移到 elrond-go-scripts 。
迁移指南可以在这里找到。
为了升级观察小组——即观察者和代理,应该发出以下命令:
$ cd ~/elrond-go-scripts
$ ./script.sh github_pull
$ ./script.sh stop
$ ./script.sh upgrade_squad
$ ./script.sh upgrade_proxy
$ ./script.sh start
运行上面的命令后,升级后的观察小队将再次启动。预计停机时间约为 2-3 分钟。
监控和琐碎检查
用户可以使用 termui 实用程序(在设置过程中安装在CUSTOM_HOME="/home/ubuntu"
文件夹中)监控正在运行的观察器,如下所示:
~/elrond-utils/termui --address localhost:8080 # Shard 0
~/elrond-utils/termui --address localhost:8081 # Shard 1
~/elrond-utils/termui --address localhost:8082 # Shard 2
~/elrond-utils/termui --address localhost:8083 # Metachain
或者,可以通过使用 curl 执行 GET 请求来查询观察者的状态:
curl http://localhost:8080/node/status | jq # Shard 0
curl http://localhost:8081/node/status | jq # Shard 1
curl http://localhost:8082/node/status | jq # Shard 2
curl http://localhost:8083/node/status | jq # Metachain
代理没有提供 termui 监视器,但是可以使用 journalctl 检查它的活动:
journalctl -f -u elrond-proxy.service
可选地,可以执行以下冒烟测试,以获取最新的同步超级块:
export NONCE=$(curl http://localhost:8079/network/status/4294967295 | jq '.data["status"]["erd_highest_final_nonce"]')
curl http://localhost:8079/hyperblock/by-nonce/$NONCE | jq
通过 Docker 设置
观察小队也可以使用 Docker 来建立。
克隆观察小队存储库:
git clone https://github.com/ElrondNetwork/observing-squad.git
安装 docker-compose(如果尚未安装):
apt install docker-compose
使用 mainnet 文件夹中的./start_stack.sh
脚本安装并运行整个观察小组:
cd mainnet
./start_stack.sh
为了检查观察小组是否正在运行,您可以列出正在运行的容器:
docker ps
为了检查容器内部的状态,您可以检查机器上的日志,以获得最近同步的块 nonce:
docker exec -it 'CONTAINER ID' /bin/bash
cat logs/elrond-go-.......log
使用 Docker 安装、构建和运行观察小队的更多详细命令在这里描述。这些图片(给代理和观察员)发布在 Docker Hub 上。