本文带你轻松搭建solana验证节点

本文带你轻松搭建solana验证节点

最近solana节点受到很多人的追捧,网上相关的节点部署介绍也比较少,所以出了本篇教程

此处我们使用linux系统安装,以下为本次部署环境的服务器配置

  • 服务器系统:centos 7.9
  • cpu:32 核
  • 内存:128 GB
  • 磁盘: 2T SSD
  • 带宽:100MB/s

一、系统调优

系统调优有自动及手动两个配置,因为我个人更喜欢自己管理系统设置,选择手动设置,操作步骤如下:

1.1 磁盘分区挂载磁盘

由于后期区块太多,磁盘占用太大,磁盘要设置成GPT分区

#  fdisk -l
root@solana:~#  parted /dev/vdb # 开始分区
    mklabel gpt # 将默认的MBR分区格式转为GPT分区格式
    mkpart primary 1 100% # 划分一个主分区,并设置分区的开始位置和结束位置
    align-check optimal 1 # 检查分区是否对齐
    # 1 aligned # 运行结果如此行所示
    print # 查看分区表
    quit # 退出Parted工具
#  partprobe
#  mkfs -t ext4 /dev/vdb1
#  mkdir /data
#  mount /dev/vdb1 /data/
#  df -h
#  cp /etc/fstab /etc/fstab.bak
#  echo `blkid /dev/vdb1 | awk '{print $2}' | sed 's/\"//g'` /data ext4 defaults 0 0 >> /etc/fstab

1.2 增加 UDP 缓冲区

sudo bash -c "cat >/etc/sysctl.d/20-solana-udp-buffers.conf <<EOF
# Increase UDP buffer size
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
EOF"
sudo sysctl -p /etc/sysctl.d/20-solana-udp-buffers.conf

1.3 增加内存映射文件限制

sudo bash -c "cat >/etc/sysctl.d/20-solana-mmaps.conf <<EOF
# Increase memory mapped files limit
vm.max_map_count = 1000000
EOF"
sudo sysctl -p /etc/sysctl.d/20-solana-mmaps.conf

1.4 配置添加

在 【/etc/systemd/system.conf】 文件的 [Manager] 部分添加如下内容:

DefaultLimitNOFILE=1000000

然后重新加载配置

sudo systemctl daemon-reload

1.5 增加流程文件描述器的计数上限

sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000
EOF"

1.6 修改最大文件数

# vim /etc/security/limits.conf

* soft nofile 700000
* hard nofile 700000
* soft nproc 700000
* hard nproc 700000

1.7 打开系统日志

# vim /etc/rsyslog.d/50-default.conf
# 把下面这几行的注释去掉
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/var/log/messages

重启配置生效

systemctl restart rsyslog.service

以上全部操作完毕后,关闭所有打开的会话(然后退出,再次登录)

二、安装 Solana 工具

官方共有三种方式安装:

  • 通过 Solana 安装Solana工具包
  • 通过源代码安装
  • 下载预置二进制文件

此处我们选择使用二进制进行安装Solana 工具包,底层系统不一样,那么安装方式也会不一样,我本次使用的系统是linux系统

2.1 下载solana二进制文件

打开 https://github.com/solana-labs/solana/releases/latest, download solana-release-x86_64-unknown-linux-gnu.tar.bz2 地址,下载二进制文件,然后提取文件:

wget https://github.com/solana-labs/solana/releases/download/v1.8.4/solana-release-x86_64-unknown-linux-gnu.tar.bz2

2.2 解压solana二进制文件压缩包

# 安装工具
yum -y install bzip2

# 解压solana二进制文件压缩包
tar jxf solana-release-x86_64-unknown-linux-gnu.tar.bz2

2.3 设置环境变量

cd solana-release/
export PATH=$PWD/bin:$PATH

2.4 查看当前已安装的solana版本

显示有版本信息则安装成功

solana --version

三、启动solana验证器

3.1 连接到 Mainnet Beta 群集

solana config set --url https://api.mainnet-beta.solana.com

以上为连接到 Mainnet 集群,其他Solana集群的步骤与以上类似

3.2 确认集群可以访问

在成为一个验证器节点之前,通过获取事务计数来检查集群是否可以被你的机器访问到:

solana transaction-count

四、生成身份信息

  • 为您的验证节点创建身份密钥
# solana-keygen new -o ~/validator-keypair.json
输入密码
  • 查看身份公钥:
solana-keygen pubkey ~/validator-keypair.json

注意:”validator-keypair.json”文件也是您的 (ed25519) 私钥。需要将这个私钥备份好。

  • 将solana配置设置为对以下所有命令使用验证节点密钥对
solana config set --keypair ~/validator-keypair.json

五、启动solana验证器

启动服务有多种方式,可以在screen里面运行,也可以制作启动脚本运行

我们选择脚本运行

创建solana系统服务,并设置开机自启

[Unit]
Description=Solana Validator
After=network.target
Wants=solana-sys-tuner.service
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=root
LimitNOFILE=1000000
LogRateLimitIntervalSec=0
Environment="PATH=/root/.local/share/solana/install/active_release/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/root/.local/share/solana/install/active_release/bin/validator.sh

[Install]
WantedBy=multi-user.target

创建运行脚本

# vim  /root/.local/share/solana/install/active_release/bin/validator.sh 
#!/bin/bash
solana-validator \
 --identity ~/validator-keypair.json \
 --trusted-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \
 --trusted-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \
 --trusted-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \
 --trusted-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \
 --no-untrusted-rpc \
 --ledger /data/validator-ledger \
 --rpc-port 8899 \
 --private-rpc \
 --no-port-check \
 --dynamic-port-range 8000-8010 \
 --entrypoint entrypoint.mainnet-beta.solana.com:8001 \
 --entrypoint entrypoint2.mainnet-beta.solana.com:8001 \
 --entrypoint entrypoint3.mainnet-beta.solana.com:8001 \
 --entrypoint entrypoint4.mainnet-beta.solana.com:8001 \
 --entrypoint entrypoint5.mainnet-beta.solana.com:8001 \
 --expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
 --wal-recovery-mode skip_any_corrupted_record \
 --limit-ledger-size\
 --enable-rpc-transaction-history \
 --account-index spl-token-mint program-id spl-token-owner \
 --log /data/solana-validator.log
  • --rpc-port 8899 :指定solana验证器的rpc端口
  • --dynamic-port-range 8000-8010:将solana验证器限制可使用端口为:8000-8010
  • --log:设置日志输出文件

注:节点启动之后会下载snapshot,等下载之后再解压,之后才会启动8899端口,需要一段时间才能进行验证。

六、验证节点状态

  • 查看端口
# netstat -lnptu
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name 
tcp6       0      0 :::8899                :::*                    LISTEN      5662/solana-va
  • 查看mainnet集群信息
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1, "method":"getClusterNodes"}' http://api.mainnet-beta.solana.com

输出信息中会包含我们自己的节点信息

后续就是等待快照同步了,可能需要较长一段时间来同步区块。

  • 查看日志
# solana logs

下面是启动日志
# tail -f solana-validator.log

以上,就是今天分享的全部内容了。

solana目前刚刚接触,因为网上也没有太多相关部署的文章,所以出了一篇文章,希望大家通过以上方式可以解决自己的实际需求,解决自己目前所遇到的问题。

如果文章中有不太正确的地方,欢迎指正。可以添加我的个人微信,备注:地区-职业方向-昵称,欢迎来撩,加入区块链技术交流群,与更多的区块链技术大佬学习交流。

点赞 5
收藏 7
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

2 条评论

请先 登录 后评论
杰哥的技术杂货铺
杰哥的技术杂货铺
0x6e60...2aa2
六年区块链开发及运维经验,成都电子科技大学Web3讲师,利用该平台进行技术分享,可私信进行交流沟通