ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

部署 Solana 验证节点

2021-09-27 12:31:55  阅读:869  来源: 互联网

标签:验证 -- solana 节点 etc validator root 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有