节点迁移手把手教学--小白版

写在最前

这一篇教程是根据dolphintwo节点迁移手册修改而来的。由于自己对ubuntu的操作十分白痴,导致自己在实际使用这篇教程操作的时候遇到了一些问题。也想把自己所遇到的东西和大家分享一下,也希望能让大家少遇到点问题。

本文不会讲过多的原理,只讲操作。会多加一点需要注意的问题,希望能给像我这样的小白一点帮助。

注:此文已经得到dolphintwo的授权。

节点迁移操作

本文适用于platon/alaya

1. 简述

原理这些东西我也不明白,就不说了,如果有兴趣可以去节点迁移手册。下面正式开始各种操作。

2. 操作步骤

2.1 安装一个节点

这一步和官方的基本一样,但不需要创建节点密钥,节点密钥是从原服务器的拷贝过来的。

参照官方节点配置

命令罗列如下:


# STEP1: NTP服务

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时间同步正常。

# 作者注:有的shell不显示颜色,我当时只是返回信息一致,最后也成功了。

# 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文件夹中

2.2 加入alaya网络(不使用节点密钥)

注:此步骤中的命令与新建节点有所不同,请注意分辨。


# 启动全节点同步区块至最新,此命令中不使用节点密钥

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.3 安装nginx

这里和节点迁移手册中有所不同,在本教程里面是将所有东西都配置好之后统一迁移,在迁移前都不会对原节点产生影响。

参照官方配置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;
# 上面username表示当前ubuntu的用户名,如使用root用户则改成user root;
# 修改后运行service nginx reload命令重启nginx服务
# 注:reload的时候可能会提示输入ubuntu账号的密码

2.4 安装MTool

参照官方安装mtool链接

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.

重要:需要重新启动会话窗口,让新添加的环境变量生效。

这里我遇到了一个很少见的错误:

重新启动会话窗后,新添加的环境变量生效。也就是说$MTOOLDIR环境变量,没有指向MTool目录。这个问题很少出现(好像现在只有我遇到了)。

你可以在命令行中尝试cd $MTOOLDIR看有没有进入正确的目录,如果没有,则可执行一下export MTOOLDIR=/home/ubuntu/mtool-client。注意等号后面是MTool的目录。

注意:这个问题很有可能会在你重启ubuntu后反复出现,那么请再执行一下此命令。

更详细内容可以参照官方脚本链接

2.5 配置文件迁移

cd $MTOOLDIR && wget http://download.alaya.network/opensource/scripts/validator_conf.sh 

chmod +x validator_conf.sh && ./validator_conf.sh

此处会显示成功,但有一个提示:/root/mtool-client/keystore/reward.json is not exist!!!

这里最常见到的就是403错误,主要是nginx没有配置好,参照2.3节进行配置文件修改及重新启动nginx服务。

基本按照提示来就可以了。我是在这一步成功之后将原服务器里的/mtool-client/validator/validator_config.json拷贝到新服务器里面了,但注意如果文件路径、nginx用户名、nginx密码等有变的要进行修改。

以下为配置文件示例:


{

"benefitAddress":"奖励地址",

"blsPubKey":"blspubkey",

"certificate":"指向mtool-client/ca.crt",

"delegatedRewardRate":分红比例,

"details":"节点描述,会在浏览器上显示",

"externalId":"keybase GPG Key",

"nodeAddress":"https://【nginx鉴权用户名】:【nginx鉴权密码】@【节点host alias,这里特定使用domain3】",

"nodeName":"节点名称",

"nodePort":16789,

"nodePublicKey":"nodepubkey",

"nodeRpcPort":443,

"webSite":"节点网站"

}

2.6 keystore迁移

直接将mtool-client/keystore目录拷贝过来

3.5 验证mtool-client


# 验证keystore迁移成功

mtool-client account list

# 验证mtool连接节点正常,查询一个地址的余额

mtool-client account balance -a <钱包地址> --config /home/ubuntu/mtool-client/validator/validator_config.json

第二行注意文件路径。如果成功的话就会返回钱包地址的一些信息。
Snipaste_2020-11-08_17-31-58

大家可能看到的信息与实际信息不符,最有可能的原因是前面的节点还没有同步完。等一会就好了:

上面所有的成功之后再进行后续操作,因为后面操作不成功可能就会有点危险了!!!

2.7 停止原有节点


# 注意,不要在出块状态下停止节点,可以在浏览器上查看当前当选验证节点,预估以下出块状态

# 以下为官方nohup启动方法的停止方法,其他启动方法自行停止节点

ps -ef | grep platon | grep datadir | grep -v grep | awk '{print $2}' | xargs kill

2.8 启动新节点


# 确认原机器进程停止

# 此命令中含有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

至此,节点迁移成功,可以正常出块。

注意:迁移成功后是没有办法在浏览器上看出来的。我的做法是用以下命令更新一个节点信息,然后去浏览器上看看有没有更新,如果有更新,那应该没有太大问题了。

mtool-client update_validator --introduction "node on new server" --keystore $MTOOLDIR/keystore/staking.json --config $MTOOLDIR/validator/validator_config.json

再就是如果看到节点已经选上,还没出块,不要慌张,节点选中和出块之间有一段时间。我就是当时被吓到了,就退回了。最后才发现虚惊一场。

3. 感谢

我在做节点迁移的时候大家给了我很多帮助,特别是dolphintwo、alextao、bing@RooPool和一个粉刷匠。

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

4. 写在最后

本文与节点迁移手册的主要区别有以下几点:

  • 本文没有介绍太多原因,只说了怎么做,主要是我看那些原因有点看不懂。
  • 本文把原节点停用和新节点开启放到了最后,个人感觉这样更安全一些。
4 个赞