如何运行一个Solana节点?

本文详细介绍了如何运行Solana节点,包括所需硬件和软件配置、步骤指导以及实施过程中的注意事项。具体步骤包括安装Solana命令行工具、配置节点身份、设置服务器、优化系统配置以及验证节点运行状态等,确保用户能够成功运行并参与Solana网络。

更新于2025年3月6日

如何运行 Solana 节点? | 逐步指南

Solana 网络是一个前沿的区块链网络,以其无限的可扩展性和极速的交易而闻名。如果你想参与并积极参与 Solana 生态系统,你可以通过运行 Solana 验证节点来实现。

本指南将指导你如何运行 Solana 节点,包括其设置和操作。这样做将有助于增强网络,验证交易,并赚取奖励。

什么是 Solana 节点?

Solana 节点是通过 Solana 协议实施的共识规则验证交易和区块的计算机。Solana 节点通过存储区块链账本的副本参与 Solana 区块链网络。

如何成为 Solana 验证者?

成为 Solana 验证者,你需要强大的计算资源,快速的处理器,大量的 RAM 和 SSD 存储。继续阅读以查看具体的要求以及如何运行 Solana 节点的逐步过程。

Solana 节点要求与工具

本指南包括一些动手演示。下面我们列出了运行 Solana 节点的关键硬件和软件要求。要进行以下步骤,你应该具备以下条件:

  • 一台 专用服务器,带有额外的存储
  • 一台计算机
  • 稳定的互联网连接

服务器硬件规范

  • CPU
    • 12 核/24 线程或更多
    • 基本时钟频率 2.8GHz 或更快
    • SHA 扩展指令支持
    • AMD 第 3 代或更新
    • Intel Ice Lake 或更新
    • AVX2 指令支持(使用官方发布的二进制文件,其他情况下需要自行编译)
    • 支持 AVX512f 是有帮助的
  • RAM
    • 256GB 或更多
    • 建议使用具有错误纠正码(ECC)的内存
    • 建议使用 512GB 容量的主板
  • 磁盘
    • PCIe Gen3 x4 NVME SSD 或更好
    • 账户:500GB 或更大。高 TBW(写入总字节)
    • 账本:1TB 或更高。建议高 TBW
    • 操作系统:(可选)500GB 或更大。SATA 可用
    • 操作系统可以安装在账本磁盘上,但测试表明将账本放在单独的磁盘上性能更好
    • 账户和账本 可以 存储在同一磁盘上,但由于高 IOPS,不建议这样做
    • Samsung 970 和 980 Pro 系列 SSD 在验证者社区中非常受欢迎

在几分钟内设置你的 Solana 服务器

为区块链工作负载构建的高性能专用裸金属服务器。

配置服务器

云平台上的虚拟机

虽然你可以在云计算平台上运行验证者,但长期来看可能不具成本效益。不过,在 VM 实例上运行非投票 API 节点以供内部使用可能会很方便。此用例包括建立在 Solana 上的交易所和服务。

实际上,团队运营的 mainnet-beta 验证者目前在 GCE n2-standard-32(32 个 vCPU,128 GB 内存)实例上运行,配备 2048 GB SSD,以便于操作。

本演示使用了 Cherry ServersAMD 区块链服务器。如需使用其他云平台,请选择硬件规范相似的服务器类型。

如何运行 Solana 节点:分步过程

第 1 步:打开终端程序

要开始本指南,你将在你信任的计算机上运行命令,而不是在你计划用于验证者操作的远程机器上。首先,在本地计算机上打开终端程序。本演示使用的是 Ubuntu 系统,可以通过 CTRL + Alt + T 打开终端。

第 2 步:在本地安装 Solana CLI

要创建你的验证者投票账户,你需要在本地计算机上安装 Solana 命令行界面

有多种方式可以安装 Solana 命令行界面,如 文档中所示,但我们将在本演示中使用安装工具。

💡 从源代码构建对希望获得更安全和潜在性能更高的可执行文件的人来说是一个不错的选择。

在你的终端中运行以下命令:

sh -c "$(curl -sSfL https://release.solana.com/v1.16.8/install)"

你应该会看到类似的输出,表示成功安装,并提示你重新打开终端或在现有 shell 中运行提供的命令以应用 PATH 更改:

安装 Solana 命令行界面

你可以通过运行以下命令确认 Solana CLI 是否已成功安装:

solana --version

确认 Solana 安装

成功安装 CLI 后,下一步是更改 Solana CLI 的配置,使其向 testnet 集群发送请求:

solana config set --url https://api.testnet.solana.com

要验证配置是否已更改,运行:

solana config get

获取 Solana CLI 配置

第 3 步:创建密钥

接下来,你需要创建运行验证者所需的三个 密钥对。执行以下命令来创建密钥对:

solana-keygen new -o validator-keypair.json

solana-keygen new -o vote-account-keypair.json

solana-keygen new -o authorized-withdrawer-keypair.json

生成验证者密钥对

生成投票账户密钥对

生成提款授权者密钥对

上述命令将生成三个密钥对,一个用于验证者,一个用于投票账户,一个用于授权提取者,并将其保存到命令中指定的 JSON 文件中。

Solana 验证者负责维护网络和验证交易。投票账户用于选择验证者并确认网络的共识,而授权提取者是允许从账户中提取资金的实体。

💡 一些操作员选择为他们的身份和投票账户使用 虚荣密钥对

第 4 步:创建投票账户和资金

在你创建投票账户之前,需要配置 Solana 命令行工具以使用验证者密钥对。

以下命令将你刚创建的验证者密钥对设置为 Solana 配置中的默认密钥对,从而允许 Solana CLI 或后续命令将其用于身份验证和其他目的:

solana config set --keypair ./validator-keypair.json

将默认密钥对设置为 Solana CLI

现在验证你的账户余额为 0

solana balance

检查 Solana 余额

接下来,你需要向该密钥对账户存入一些 SOL,以便创建交易(在此情况下,制作投票账户):

solana airdrop 1

向密钥对账户进行 Solana 空投

现在,你可以使用 Solana 集群创建一个投票账户。 请注意,迄今为止提到的所有命令 都应在你信任的计算机上执行,而 应在你打算运行验证者的服务器上,因为你不应在任何计算机上创建账户凭据:

solana create-vote-account -ut \
    --fee-payer ./validator-keypair.json \
    ./vote-account-keypair.json \
    ./validator-keypair.json \
    ./authorized-withdrawer-keypair.json

这将使用提供的参数创建一个新的投票账户。

创建投票账户

第 5 步:创建服务器

接下来,你需要在所选云平台上设置符合指南中提到的硬件规范的 服务器。如前所述,这里使用了 AMD 区块链服务器(Ubuntu 22.04)。

你还需要将数据存储划分为两个独立区域:账本分区和账户分区。

  1. 账本分区:账本分区是实际存储区块链数据的地方。它包含所有的交易历史、区块和构成 Solana 区块链的其他信息。可以认为它是一本大型记录册,记录了任何在网络上进行的交易的所有情况。就像 Solana 区块链的历史书。
  2. 账户分区:另一方面,账户分区存储的是每个用户的账户及其关联数据。每个与 Solana 网络进行交互的用户都有自己的账户,该账户保存其余额、交易历史和其他相关信息。账户分区是每个用户在 Solana 区块链上的个人存储空间。

通过将账本和账户分区分开,Solana 旨在实现可扩展性和性能。

另请阅读:如何运行 Ethereum 节点

第 6 步:SSH 进入你的验证者

接下来,使用适当的命令 SSH 连接到你的服务器。这将允许你远程访问和配置验证者。命令应如下所示:

ssh user@<server.hostname>

SSH 进入虚拟机

另请阅读:如何部署混合智能合约

第 7 步:更新你的 Ubuntu 包

现在你可以访问服务器,运行以下命令以更新系统包:

sudo apt update && sudo apt upgrade -y

第 8 步:启用防火墙

接下来,在虚拟机上创建并启用防火墙,以允许所需端口上的传入和传出流量(8000 - 10000 UDP/TCP)。这些端口特定于 Testnet(因此请确保根据你的所需集群进行更新)。 在启用防火墙之前,请确保添加所有允许规则(尤其是 SSH),以免将自己锁定在服务器外。这些防火墙规则是基于操作验证者所需的最低要求。

sudo ufw allow "OpenSSH"
sudo ufw allow 8000:10000/udp
sudo ufw allow 8000:10000/tcp
sudo ufw allow 8000/tcp
sudo ufw allow 8001/tcp
sudo ufw allow 8899/tcp
sudo ufw allow 8900/tcp
sudo ufw enable
sudo ufw status

你应该会得到如下图所示的输出:

更新防火墙

另请阅读:如何运行 Polygon 节点

第 9 步:添加新用户

现在,使用 adduser 命令在服务器上创建一个新用户,以运行验证者服务。

sudo adduser sol

这将在服务器上创建一个名为“sol”的新用户。

创建新用户

硬盘设置

接下来,在 Ubuntu 服务器上确保至少挂载了 2TB 的磁盘空间。可以使用 df 命令检查磁盘空间:

df -h

检查磁盘空间

如果你有未挂载/未格式化的驱动器,需要设置分区并挂载驱动器。

要查看你可用的硬盘设备,可以使用列出块设备的命令:

lsblk -f

列出硬盘设备

你可能会在列表中看到一些有名称但没有 通用唯一标识符(UUID) 的设备。任何没有 UUID 的设备都是未格式化的。

第 10 步:格式化和挂载驱动器 - 用于账本和账户

如果你有用于账本分区的额外 NVME 驱动器,可以使用 mkfs 命令格式化它:

sudo mkfs -t ext4 /dev/nvme1n1

驱动器的名称和位置在你的计算机上可能会有所不同。格式化后,你可以再次运行 lsblk -f 命令以确认该设备现在具有 UUID。

本演示中使用的服务器上的设备已被格式化,因此要挂载驱动器,首先使用以下命令为挂载 drives(nvme2n1nvme3n1 驱动器将在这个应用中分别使用账本和账户)创建目录,并将所创建目录的所有权更改为“sol”用户:

sudo mkdir -p /mnt/ledger
sudo chown -R sol:sol /mnt/ledger
sudo mkdir -p /mnt/accounts
sudo chown -R sol:sol /mnt/accounts

为挂载账本驱动器创建目录

为挂载账户驱动器创建目录

上述命令将分别创建“/mnt/ledger”和“/mnt/accounts”目录,并更改其所有权为“sol”用户。

现在可以使用以下命令挂载驱动器:

sudo mount /dev/nvme2n1 /mnt/ledger
sudo mount /dev/nvme3n1 /mnt/accounts

挂载驱动器

第 11 步:系统调优

为了确保系统性能正常以及验证者能够成功启动,重要的是通过修改 sysctl knobs 和增加 systemd 及会话文件限制来优化系统。请按照以下命令进行必要的更改:

通过运行以下命令优化 sysctl knobs:

sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF
## 增加 UDP 缓冲区大小
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728

## 增加内存映射文件限制
vm.max_map_count = 1000000

## 增加允许开放文件描述符数量
fs.nr_open = 1000000
EOF"
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf

接下来,增加 systemd 和会话文件限制。要增加 systemd 和会话文件限制,你需要修改 systemd 配置文件。

如果你有具体的针对 Solana 验证者的 systemd 服务单元文件,可以在该文件的 [Service] 部分添加 LimitNOFILE=1000000 参数。

如果没有特定的服务文件,但想为所有 systemd 单元设置文件限制,可以在 /etc/systemd/system.conf 文件中添加 DefaultLimitNOFILE=1000000 参数。你可以运行以下命令使用 Nano 文本编辑器打开 system.conf 文件:

sudo nano /etc/systemd/system.conf

找到 [Manager] 段落,并添加或修改 DefaultLimitNOFILE 参数。然后保存文件并退出文本编辑器。

编辑 system.conf 文件

重载 systemd 以应用更改:

sudo systemctl daemon-reload

接下来,运行以下命令以设置会话文件限制:

sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF

* - nofile 1000000
EOF"

上述命令通过在 /etc/security/limits.d/90-solana-nofiles.conf 创建一个新配置文件,设置 Solana 的进程文件描述符计数限制,并增加进程文件描述符计数限制。

调整系统后,关闭所有打开的会话(注销再重新登录)。

第 12 步:复制密钥对

现在,你需要使用 scp 命令将验证者密钥对和投票账户密钥对 JSON 文件从本地计算机复制到虚拟机。在生成密钥对的目录中运行以下命令:

scp -C vote-account-keypair.json user@<server.hostname>:/home/sol
scp -C validator-keypair.json user@<server.hostname>:/home/sol

将投票账户和验证者密钥对复制到远程服务器

上述命令将安全地将指定的 JSON 文件从本地计算机复制到远程服务器的“/home/sol”目录。user@<server.hostname> 部分应替换为适当的远程用户名和主机名。

复制密钥对到远程服务器后,请确保将其所有权更改为“sol”用户,可以使用以下命令:

sudo chown sol:sol validator-keypair.json
sudo chown sol:sol vote-account-keypair.json

更改远程服务器中密钥对文件的所有权

第 13 步:切换到 sol 用户

切换回你 SSH 进入的远程服务器的终端,使用以下命令切换到 sol 用户:

su - sol

切换到 sol 用户

第 14 步:在远程机器上安装 Solana CLI

为了运行验证者软件,你需要在远程服务器上安装 Solana CLI。可以运行以下命令来完成:

sh -c "$(curl -sSfL https://release.solana.com/v1.16.8/install)"

第 15 步:创建验证者启动脚本

在远程服务器上安装 Solana CLI 后,你需做的下一件事是为你的验证者创建一个启动脚本。 在“sol”用户的 bin 目录中创建一个 validator.sh 文件,运行以下命令:

mkdir -p /home/sol/bin
touch /home/sol/bin/validator.sh
chmod +x /home/sol/bin/validator.sh

上述命令将在 bin 目录中创建一个 validator.sh 文件,并使其可执行。

接下来,使用 nano 编辑器打开 validator.sh 文件:

nano /home/sol/bin/validator.sh

将以下内容复制并粘贴到 validator.sh 中,然后保存文件:

exec solana-validator \
    --identity validator-keypair.json \
    --vote-account vote-account-keypair.json \
    --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
    --known-validator 7XSY3MrYnK8vq693Rju17bbPkCN3Z7KvvfvJx4kdrsSY \
    --known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
    --known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
    --only-known-rpc \
    --log /home/sol/solana-validator.log \
    --ledger /mnt/ledger \
    --rpc-port 8899 \
    --dynamic-port-range 8000-8020 \
    --entrypoint entrypoint.testnet.solana.com:8001 \
    --entrypoint entrypoint2.testnet.solana.com:8001 \
    --entrypoint entrypoint3.testnet.solana.com:8001 \
    --expected-genesis-hash 4uhcVJyU9pJkvQyS88uRDiswHXSCkY3zQawwpjk2NsNY \
    --wal-recovery-mode skip_any_corrupted_record \
    --limit-ledger-size

你可以运行 solana-validator --help 命令获取有关此脚本中每个标志作用的更多信息。你也可以参考 Solana 官方文档中关于 操作验证者的最佳实践 的部分。

检查区块链 IaaS 平台 Zeeve 如何利用 Cherry Servers 的安全专用裸金属服务器来简化他们的操作。

在此阅读 Zeeve 的成功案例

第 16 步:验证你的验证者是否正常工作

现在要确认 validator.sh 脚本是否正常运行,可以执行以下命令:

/home/sol/bin/validator.sh

这应会执行 solana-validator 进程。

执行 validator.sh 脚本

在另一终端窗口中,SSH 进入你的远程服务器并使用以下命令验证 solana-validator 进程是否正在运行:

ps aux | grep solana-validator

你应该会得到一条包含 solana-validator 的输出,以及所有被添加到 validator.sh 脚本中的标志。

确认 solana 验证者进程正在运行

你还可以查看位于 /home/sol/solana-validator.log 的日志,以确保一切正常工作。

查看 Solana 验证者日志文件

你还可以实时监控 solana-validator.log 文件的内容。在新终端窗口中,SSH 进入远程服务器并运行以下命令以切换到“sol”用户并监控日志文件内容:

su - sol
tail -f solana-validator.log

随着数据的新增持续显示日志文件的内容

这将持续监控文件的新增数据,并在终端中显示。你需留意包含 _ERROR_ 的行,如果不看到任何,可以退出命令。

接下来,你可以通过检查它是否已经向 Gossip 网络注册来验证你的验证者是否正常运行。 在新终端中,SSH 进入你的远程服务器,以“sol”用户身份登录并提取公钥,该公钥将用于在 Solana 网络识别你的验证者节点,从 validator-keypair.json 文件中运行以下命令:

solana-keygen pubkey ~/validator-keypair.json

然后你可以运行以下命令,根据 solana gossip 输出显示与公钥相关的信息:

solana gossip | grep &lt;pubkey>

&lt;pubkey 替换为之前提取的验证者节点的公钥。如果验证者已经在 Gossip 网络上注册,你将获得类似于下图的输出:

使用 Gossip 网络确认验证者是否正常运行

在验证者进入 Gossip 网络后,你还可以使用以下命令确认验证者已经加入网络:

solana validators | grep &lt;pubkey>

如果它已加入网络,你应该会得到如下图的输出。

确认验证者是否已加入网络

你还可以使用 solana catchup 命令查看验证者处理区块的速度:

solana catchup &lt;pubkey>

运行 solana catchup 命令

另请阅读:什么是区块链服务器?

结论

在本指南中,我们定义了 Solana 节点的要求,并提供了关于如何运行 Solana 验证者节点的逐步说明。从安装 Solana CLI 到创建验证者启动脚本,我们定义了重要参数,如身份、投票账户、已知验证者、日志和账本路径、RPC 端口、入口点和预期创世哈希。该指南强调了通过执行启动脚本并检查进程状态,以验证验证者是否正常工作的重要性。

运行 Solana 验证者节点可以是一个值得的经历,此时你应该对运行 Solana 节点所需的了解有了更深入的理解。你可以利用这些知识,为 Solana 网络做出贡献,同时为自己赢得奖励。

为 Solana 优化的专用服务器

在满足 Solana 验证者要求的专用硬件上部署你的节点。

探索 Solana 服务器

分享此文章

  • 原文链接: cherryservers.com/blog/h...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Cherry Servers
Cherry Servers
https://www.cherryservers.com/