节点搭建
去年冬天我在一台旧笔记本上跑一个去中心化存储的节点搭建测试网,风扇转得像要起飞,节点搭建硬盘灯闪得让人心慌。节点搭建那台机器只有4GB内存,节点搭建跑一个轻节点都勉强。节点搭建可我还是节点搭建把它跑起来了——因为节点这东西,本质上不是节点搭建拼硬件,而是节点搭建拼你对网络逻辑的理解。 很多人以为搭节点就是节点搭建装个软件、改个配置文件、节点搭建敲几行命令。节点搭建真做起来才发现,节点搭建卡住你的节点搭建往往不是技术,而是节点搭建那些文档里没写清楚的细节。比如端口映射。节点搭建我在路由器后台翻了二十分钟才找到DMZ主机设置,把内网IP填进去,外网才终于能连上。那一刻我盯着终端里跳出的“peers: 8”看了好几秒,心里就一个念头:通了。 全节点、轻节点、验证节点、归档节点——名字听着像一回事,跑起来差别大了。全节点要同步全部区块数据,比特币全节点现在超过600GB,以太坊执行层加共识层客户端加起来也差不多这个量级。轻节点只下载区块头,几十MB就够了,但你不能用它来验证交易,只能做钱包查询之类的事。 我一开始贪心,想跑以太坊全节点。结果那台笔记本的机械硬盘在同步到第300万个区块时彻底卡死,IO等待时间飙到90%以上。后来换成轻节点,十分钟就同步完了。不是说全节点不好,是你得先问自己:我搭这个节点到底要干什么? 有人上来就买一台戴尔R730,双路至强加128GB内存,跑一个节点风扇都不带转的。没必要。大多数节点对CPU要求极低,树莓派4B都能跑比特币全节点,只要外接一块1TB以上的SSD。真正吃资源的是磁盘IO和网络带宽。 我后来换了一台二手迷你主机,i5-8500T,16GB内存,512GB NVMe固态。整机不到一千块,功耗待机时只有8瓦。跑一个以太坊共识层节点加一个执行层节点,内存占用稳定在6GB左右。关键是固态硬盘,机械盘在节点同步时就是灾难。 网络方面,家宽的上传带宽比下载重要得多。节点要不断把区块和交易转发给其他peer,上传被占满时整个网络都会卡。我这边上传只有30Mbps,跑一个节点没问题,跑两个就有点吃力了。你要是想跑多个节点,先看看自己上传够不够。 以以太坊为例,执行层客户端有Geth、Nethermind、Erigon,共识层有Prysm、Lighthouse、Teku。选哪个?我试过Geth加Prysm的组合,文档最全,社区最大,出问题搜得到答案。但Geth对磁盘读写很敏感,同步时经常把IO打满。Nethermind稍微好一点,但内存占用更高。 配置文件里最容易被忽略的是缓存大小。Geth默认给的是1024MB,对于16GB内存的机器来说太保守了。我调到4096MB之后,同步速度快了将近一倍。但也不能乱调,缓存给太多会导致系统OOM,节点直接被kill掉。我建议留至少4GB给操作系统和其他进程。 还有一个坑是时区。节点之间通信依赖精确的时间戳,系统时间偏差超过几秒就可能被peer踢掉。装个ntp服务,让它自动同步时间,这事儿花不了两分钟,但能省掉你后面几个小时的排查。 节点同步完成、peer数量稳定在几十个,这只是第一步。你得盯着它跑。我用了Prometheus加Grafana做监控,把CPU、内存、磁盘IO、网络流量、peer数量都画成图表。有一次半夜磁盘写入突然掉到零,第二天早上看图表才发现是SSD的SLC缓存写爆了,持续写入性能断崖式下跌。换了块带DRAM缓存的固态才解决。 日志也要看。Geth的日志里偶尔会出现“Served eth_getLogs”之类的信息,说明有人在查你的节点。公共节点被滥用是常事,你可以在防火墙里限制特定RPC方法的访问频率。别把自己的节点当成公共API用,除非你明确知道自己在做什么。 搭节点这件事,说到底是跟自己的耐心较劲。文档不会告诉你所有细节,社区里的回答也未必适用于你的环境。你得自己试、自己看日志、自己调参数。那个风扇狂转的冬夜之后,我再也没用过机械硬盘跑节点。有些经验,只能自己踩出来。先搞清楚你要什么节点
硬件不是越贵越好
软件配置里的坑
跑起来之后才是开始
-
上一篇
-
下一篇