维护日志:(紧急)core node 迁移
上文core node 遭遇分叉(fork)的问题无法启动正在修复中,出块时间又逼近。决定冒险执行 core 的迁移。
原本升级迁移的也在计划中,只是这次遇到情况提前了。万幸手边设备是就绪的,除了故障的core以外内网还有3个可用的relay在正常备选。
选之前众筹拿到的 r86s,配置16G RAM 和 128 eMMC+ 500G SSD 较高,应付将来 cardano-node 升级要求提高还有充分的冗余。
准备工作
至少需要2台节点设备,建议3台。
建议有1 core 2 relay 3台,因为 迁移 relay至少得停掉其中2台,重启后如果没有relay保持在线,外部检测会认为你的pool完全脱机。
撤下当前的core
*以下在原corenode 设备上操作
停掉节点
systemctl stop cnode
修改配置文件
vi $CNODE_HOME/scripts/env
找到 POOL_NAME=
的参数,把它注释掉或者把内容设置为空字串''。
重启节点
systemctl start cnode
之后这个节点只会作为relay身份运行,因为之前遭遇分叉需要漫长的恢复数据时间。
*数据恢复正常运行后可以恢复topologyupdater服务。
打包下载pool的KES
cd $CNODE_HOME/priv/pool/
tar -zcvf pool_kes.tar.gz {你的池名称目录}
原则上只需要 hot.skey
, vrf.skey
, op.cert
三个文件,如果你打算继续在原有的这台旧core上使用cntools管理pool和wallet则保留。如果像我打算管理的工作也迁移到新机器上,则打包pool目录甚至整个priv目录打包也行。
迁移目标的新机器上的工作
*以下操作在新机器上操作
如果这台设备是全新的不是一个正在运行的 relay,那么需要前置工作是进行编译部署同步,直至它作为一台就绪的relay。
暂停节点
systemctl stop cnode
上传上一步打包的pool kes 到对应的路径
编辑 env
文件,添加上 POOL_NAME= 信息
重启节点
systemctl start cnode
如无意外,同步结束后 gLiveView 显示为 core node ,迁移成功
进一步完善的后续工作
core是跑起来了,还有几个设置和功能要跟进做好
- 把topology update 的服务停掉,设置成静态,这个在此前的blog已经说过,不重复了
- 编译安装 cncli, 不然运行core就像盲人摸象心里没底不知道何时出块,出多少。具体方法参考文末的文章官方文档
相关文档:
https://cardano-community.github.io/guild-operators/Scripts/cncli/
