本文带你轻松搭建solana验证节点
最近solana节点受到很多人的追捧,网上相关的节点部署介绍也比较少,所以出了本篇教程
此处我们使用linux系统安装,以下为本次部署环境的服务器配置
系统调优有自动及手动两个配置,因为我个人更喜欢自己管理系统设置,选择手动设置,操作步骤如下:
由于后期区块太多,磁盘占用太大,磁盘要设置成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
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
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
在 【/etc/systemd/system.conf】 文件的 [Manager] 部分添加如下内容:
DefaultLimitNOFILE=1000000
然后重新加载配置
sudo systemctl daemon-reload
sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000
EOF"
# vim /etc/security/limits.conf
* soft nofile 700000
* hard nofile 700000
* soft nproc 700000
* hard nproc 700000
# 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 工具包,底层系统不一样,那么安装方式也会不一样,我本次使用的系统是linux系统
打开 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
# 安装工具
yum -y install bzip2
# 解压solana二进制文件压缩包
tar jxf solana-release-x86_64-unknown-linux-gnu.tar.bz2
cd solana-release/
export PATH=$PWD/bin:$PATH
显示有版本信息则安装成功
solana --version
solana config set --url https://api.mainnet-beta.solana.com
以上为连接到 Mainnet 集群,其他Solana集群的步骤与以上类似
在成为一个验证器节点之前,通过获取事务计数来检查集群是否可以被你的机器访问到:
solana transaction-count
# solana-keygen new -o ~/validator-keypair.json
输入密码
solana-keygen pubkey ~/validator-keypair.json
注意:”validator-keypair.json”文件也是您的 (ed25519) 私钥。需要将这个私钥备份好。
solana config set --keypair ~/validator-keypair.json
启动服务有多种方式,可以在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
注:节点启动之后会下载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
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目前刚刚接触,因为网上也没有太多相关部署的文章,所以出了一篇文章,希望大家通过以上方式可以解决自己的实际需求,解决自己目前所遇到的问题。
如果文章中有不太正确的地方,欢迎指正。可以添加我的个人微信,备注:地区-职业方向-昵称,欢迎来撩,加入区块链技术交流群,与更多的区块链技术大佬学习交流。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!