1. 简述
2. 操作步骤
2.1 node迁移分为三步(切记执行1,2都是在新机器上执行,原节点机器不要停):
-
准备节点相关软件。
-
预同步节点数据
-
切换节点
2.2 详细过程:
2.2.1 准备节点相关软件
sudo apt-get update
sudo apt-get install -y gnupg2 curl software-properties-common ntp
sudo systemctl enable ntp && sudo systemctl start ntp
# NTP验证
ntpq -4c rv | grep leap_none
# 显示 associd=0 status=0615 leap_none , sync_ntp, 1 event, clock_sync,其中leap_none为红色,表示NTP时间同步正常。
# STEP2: platon安装
sudo add-apt-repository ppa:ppatwo/alaya
sudo apt-get update
sudo apt-get install -y platon0.13.2
platon version
# STEP3: 节点密钥迁移
mkdir -p ~/platon-node/data
# blskey blspub nodeid nodekey 四个文件拷贝到data文件夹中
安装mtool-client
cd ~ && wget http://download.alaya.network/alaya/mtool/linux/0.13.2/mtool-client.zip
# 可以把文件http://download.alaya.network/alaya/mtool/linux/0.13.2/mtool-client.zip
# 下载到当前用户文件夹~下,然后再运行下面一行命令
# 注意运行命令时的目录要在当前用户文件夹~
(if ! command -v unzip;then sudo apt install unzip; fi;) && unzip mtool-client.zip && cd mtool-client
wget http://download.alaya.network/opensource/scripts/mtool_install.sh
chmod +x mtool_install.sh && ./mtool_install.sh
安装成功会提示:Install mtool succeed.
安装nginx
官方配置Nginx[链接](https://devdocs.alaya.network/alaya-devdocs/zh-CN/Become_Verification_Node/#%E9%85%8D%E7%BD%AE-nginx),配置的用户名密码可以与原机器不一致
wget http://download.alaya.network/opensource/scripts/nginx_conf.sh
chmod +x nginx_conf.sh && ./nginx_conf.sh
# 这里会提示输入用户名和密码,请牢记用户名和密码,后面需要用到
# 修改 /etc/nginx/nginx.conf文件
# 将user www-data;一行修改为user [username],修改nginx用户组权限;
# 修改后运行sudo service nginx reload命令重启nginx服务
keystore迁移
mtool-client/keystore目录从原节点拷贝过来
迁移校验文件
cd $MTOOLDIR && wget http://download.alaya.network/opensource/scripts/validator_conf.sh
chmod +x validator_conf.sh && ./validator_conf.sh
然后将~/mtool-client/validator/validator_config.json从老机器复制到新机器的~/mtool-client/validator/下面,
重载nginx: sudo service nginx reload 即可。
2.2.2 预同步节点数据【预同步节点数据,不执行的话在切换节点的时候同步没那么快】:
# 启动全节点同步区块至最新,此命令中不使用节点密钥
cd ~/platon-node/ && nohup platon --identity alaya-node --datadir ~/platon-node/data --port 16789 --alaya --rpcport 6789 --rpcapi "db,platon,net,web3,admin,personal" --rpc --verbosity 3 --rpcaddr 127.0.0.1 --syncmode "fast" > ./data/platon.log 2>&1 &
# 从日志中查看或使用命令查看区块是否同步完成
platon attach http://localhost:6789 --exec platon.blockNumber
# 此命令可多次执行,当返回非0值并不断增加时表示已经成功
2.2.3 切换节点【确保前面的执行都无错误】
注意:确保前面的执行都没有错误并且执行 platon attach http://localhost:6789 --exec platon.blockNumber
有大于0的数字的情况下执行这步操作。本人在没有确保platon attach http://localhost:6789 --exec platon.blockNumber 大于0的情况下,
切换新节点之后5分钟都没同步完,最后用了20多分钟,才同步完成。心里慌得一pi。因为原节点由于启动内存不足,一直报out of memory,原节点重启不起来,新节点 一直是0。
当时还不停地看日志,真是有点懵逼了,tail -fn 10 ~/platon-node/data/platon.log
2.2.3.1 验证mtool-client
# 验证keystore迁移成功
mtool-client account list
# 验证mtool连接节点正常,查询一个地址的余额
mtool-client account balance -a <钱包地址> --config /home/ubuntu/mtool-client/validator/validator_config.json
第二行注意文件路径。如果成功的话就会返回钱包地址的一些信息。
大家可能看到的信息与实际信息不符,最有可能的原因是前面的节点还没有同步完。等一会就好了。
上面所有的成功之后再进行后续操作,因为后面操作不成功可能就会有点危险了!!!
上面所有的成功之后再进行后续操作,因为后面操作不成功可能就会有点危险了!!!
上面所有的成功之后再进行后续操作,因为后面操作不成功可能就会有点危险了!!!
2.2.3.2 停止原有节点【一定保证当前节点不在 共识中/出块中】
# 注意,不要在出块状态下停止节点,可以在浏览器上查看当前当选验证节点,预估以下出块状态
# 以下为官方nohup启动方法的停止方法,其他启动方法自行停止节点
ps -ef | grep platon | grep datadir | grep -v grep | awk '{print $2}' | xargs kill -9
2.2.3.3 启动新节点
# 确认原机器进程停止
# 此命令中含有blskey/nodekey等参数,启动
nohup platon --identity alaya-node --datadir ~/platon-node/data --port 16789 --alaya --rpcport 6789 --rpcapi "db,platon,net,web3,admin,personal" --rpc --nodekey ~/platon-node/data/nodekey --cbft.blskey ~/platon-node/data/blskey --verbosity 3 --rpcaddr 127.0.0.1 --syncmode "fast" > ~/platon-node/data/platon.log 2>&1 &
# 用以下命令查看区块是否同步正常,或在浏览器上查看节点是否在线
platon attach http://localhost:6789 --exec platon.blockNumber
节点迁移成功,可以正常出块。
注意:迁移成功后是没有办法在浏览器上看出来的。可以看看日志tail -fn 10 ~/platon-node/data/platon.log 是否有报错问题,或者 执行
mtool-client update_validator --introduction "node on new server" --keystore $MTOOLDIR/keystore/staking.json --config $MTOOLDIR/validator/validator_config.json
看看在https://scan.alaya.network/是否你的节点描述信息是否更新。
3 感谢
非常感谢 rileyge,我在迁移的时候给我很大帮助,人很nice。也非常感谢dolphintwo、alextao、bing@RooPool和一个粉刷匠。
最后希望大家能够顺利的进行节点迁移。