一次Alaya迁移--小白上手

1. 简述

2. 操作步骤
2.1 node迁移分为三步(切记执行1,2都是在新机器上执行,原节点机器不要停):

  1. 准备节点相关软件。

  2. 预同步节点数据

  3. 切换节点

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和一个粉刷匠。

最后希望大家能够顺利的进行节点迁移。

3 Likes

感谢感谢;受益匪浅~

:grinning:

按此教程迁移成功,感谢楼主