其他分享
首页 > 其他分享> > 部署 Solana 验证节点

部署 Solana 验证节点

作者:互联网

部署 Solana 验证节点

部署 Solana 验证节点

由于项目需求,需要部署一台solana节点,我们从一开始搭建,遇到许多坑,做个记录。
一定要注意服务器配置,配置不够,rpc启动不起来。

一、简介

什么是SOLANA?

Solana是一个开源项目,它实现了一个全新的高性能无许可区块链。Solana基金会位于瑞士日内瓦,维护着开源项目。

什么是SOL?

SOL是Solana原生代币的名称,可以将其传递给Solana集群中的节点,以换取运行链上程序或验证其输出。 系统可以执行分数SOL的微支付,称为lamports。 它们的名称是为了纪念Solana的最大技术影响力Leslie Lamport。 1 Lamport的值为0.000000001 SOL。

官网地址

GitHub: https://github.com/solana-labs
官网: https://solana.com
区块浏览器:https://explorer.solana.com/

二、验证节点要求

下图是官网对于验证节点的配置要求,如果是用作RPC节点,那需要更高配置
验证节点的配置要求
RPC节点,我们使用的是阿里云的服务器 Ubuntu 20.04,32vCPU 128GiB内存,2GiB SSD,这是最低配了,低于这个配置可能RPC启动不起来。

三、系统调优

3.1 磁盘分区挂载磁盘

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

root@solana:~# sudo apt update -y

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

3.2 设置Swap分区

root@solana:~#  fallocate -l 64G /swapfile 

root@solana:~#  chmod 600 /swapfile
root@solana:~#  mkswap /swapfile
root@solana:~#  swapon /swapfile
root@solana:~#  cp /etc/fstab /etc/fstab.bak
root@solana:~#  vim /etc/fstab
# 新增下面一行
/swapfile none swap sw 0 0

3.3 增加UDP缓冲区

root@solana:~# bash -c "cat >/etc/sysctl.d/20-solana-udp-buffers.conf <<EOF
# 增加UDP缓存大小
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
EOF"

root@solana:~# sysctl -p /etc/sysctl.d/20-solana-udp-buffers.conf

3.4 增加内存映射文件限制

root@solana:~# bash -c "cat >/etc/sysctl.d/20-solana-mmaps.conf <<EOF
# 增加内存映射文件限制
vm.max_map_count = 700000
EOF"

root@solana:~# sysctl -p /etc/sysctl.d/20-solana-mmaps.conf

3.5 新增内容 DefaultLimitNOFILE=700000

root@solana:~# vim /etc/systemd/system.conf
	DefaultLimitNOFILE=700000
	
root@solana:~# systemctl daemon-reload

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

root@solana:~# bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# 增加流程文件描述器的计数上限
* - nofile 700000
EOF"

3.7 修改最大文件数

root@solana:~# vim /etc/security/limits.conf

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

3.8 打开系统日志

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


root@solana:~# systemctl restart rsyslog.service
root@solana:~# tail -f /var/log/messages

关闭所有打开的会话 (然后再注销)

四、安装 solana 工具

stable 可以指定为具体的版本,如v1.6.27也可以指定为stable/betaedge

root@solana:~# sh -c "$(curl -sSfL https://release.solana.com/stable/install)"

等安装完成,执行如下命令

export PATH="/root/.local/share/solana/install/active_release/bin:$PATH"

验证工具是否可用

solana --version

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

连接到 Mainnet Beta 群集

root@solana:~# solana config set --url https://api.mainnet-beta.solana.com

确认集群可以访问

root@solana:~# solana transaction-count

五、生成身份信息

为您的验证节点创建身份密钥

root@solana:~# solana-keygen new -o ~/validator-keypair.json
输入密码

查看身份公钥:

root@solana:~# solana-keygen pubkey ~/validator-keypair.json

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

将solana配置设置为对以下所有命令使用验证节点密钥对

root@solana:~# solana config set --keypair ~/validator-keypair.json

六、启动服务

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

创建sol服务,并设置开机自启

[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:/usr/games:/usr/local/games:/snap/bin"
ExecStart=/root/.local/share/solana/install/active_release/bin/solana-validator

[Install]
WantedBy=multi-user.target

创建运行脚本

root@solana:~# vim 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\
	--log /data/solana-validator.log

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

七、验证节点状态

查看端口

root@solana:~#  lsof -i:8899
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
solana-va 11967 root  116u  IPv4  54896      0t0  TCP *:8899 (LISTEN)

查看mainnet集群信息

root@solana:~#  curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1, "method":"getClusterNodes"}' http://api.mainnet-beta.solana.com

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

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

查看日志

root@solana:~#  solana logs
下面是启动日志
root@solana:/data# tail -f solana-validator.log

标签:验证,--,solana,节点,etc,validator,root,Solana
来源: https://blog.csdn.net/qq_33958966/article/details/120505366