本文带你轻松搭建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 <<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集群的步骤与以上类似
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
评论