本文带你轻松搭建solana验证节点

本文带你轻松搭建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集群](https://docs.solana.com/zh/clusters)的步骤与以上类似 ## 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目前刚刚接触,因为网上也没有太多相关部署的文章,所以出了一篇文章,希望大家通过以上方式可以解决自己的实际需求,解决自己目前所遇到的问题。 如果文章中有不太正确的地方,欢迎指正。可以添加我的个人微信,备注:地区-职业方向-昵称,欢迎来撩,加入区块链技术交流群,与更多的区块链技术大佬学习交流。

  • 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 &lt;&lt;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 &lt;&lt;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 &lt;&lt;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目前刚刚接触,因为网上也没有太多相关部署的文章,所以出了一篇文章,希望大家通过以上方式可以解决自己的实际需求,解决自己目前所遇到的问题。

如果文章中有不太正确的地方,欢迎指正。可以添加我的个人微信,备注:地区-职业方向-昵称,欢迎来撩,加入区块链技术交流群,与更多的区块链技术大佬学习交流。

本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

  • 发表于 2021-11-17 20:30
  • 阅读 ( 345 )
  • 学分 ( 30 )
  • 分类:Solana

评论