部署 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
/beta
或 edge
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