本文带你轻松搭建solana验证节点
Posted 看见月亮的人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了本文带你轻松搭建solana验证节点相关的知识,希望对你有一定的参考价值。
文章目录
- GitHub: https://github.com/solana-labs
- 官网: https://solana.com
- 区块浏览器:https://explorer.solana.com/
- solana工具配置:https://docs.solana.com/cli/install-solana-cli-tools
- solana服务配置:https://docs.solana.com/running-validator/validator-start
- json rpc:https://docs.solana.com/zh/developing/clients/jsonrpc-api
- Solana集群:https://docs.solana.com/zh/clusters
最近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目前刚刚接触,因为网上也没有太多相关部署的文章,所以出了一篇文章,希望大家通过以上方式可以解决自己的实际需求,解决自己目前所遇到的问题。
如果文章中有不太正确的地方,欢迎指正,可以扫描下面的二维码,添加我的个人微信,备注:地区-职业方向-昵称,欢迎来撩,加入区块链技术交流群,与更多的区块链技术大佬学习交流。
以上是关于本文带你轻松搭建solana验证节点的主要内容,如果未能解决你的问题,请参考以下文章
带你从头进行RabbitMQ安装集群搭建镜像队列配置和代码验证