节点迁移手册

节点迁移操作

大家好,我是<DolphinTwo​:dolphin::dolphin:>,本文适用于platon/alaya

1. 简述

节点迁移主要包含两大步:node迁移mtool-client迁移,操作主要避免双签和掉块情况。

上面都是次要的,本文主要详细解释了官方节点安装步骤,如果你能明白这些步骤是在做什么,那节点迁移维护都是轻而易举的。

2. node迁移

node迁移分为三步:

  • 新机器同步全节点,准备节点启动相关文件

  • 观测浏览器当选验证节点,择时停止旧机器同步

  • 新机器停止全节点同步,nodekey和blskey进行同步

2.1 全节点同步

参照官方节点配置


# 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

# platon安装

sudo add-apt-repository ppa:ppatwo/alaya

sudo apt-get update

sudo apt-get install -y platon0.13.2

platon version

# bls/nodekey从旧节点迁移过来,scp/rsync/ftp/lrzsz熟悉哪个用哪个

mkdir -p ~/platon-node/data

# blskey blspub nodeid nodekey 四个文件

# 启动全节点同步区块至最新,此命令中不含有blskey/nodekey等参数

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

2.2 停止原有节点


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

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

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

2.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" > ./data/platon.log 2>&1 &

# 用以下命令查看区块是否同步正常,或在浏览器上查看节点是否在线

platon attach http://localhost:6789 --exec platon.blockNumber

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

3. mtool-client迁移

3.1 官方安装nginx

参照官方配置Nginx链接,配置的用户名密码可以与原机器不一致。

以下是官方对Nginx作用的描述:

安全考虑,不建议节点 rpc 端口对外直接开放(节点服务器默认 Ubuntu 18.04)。可以考虑使用 Nginx 进行反向代理,并通过用户鉴权和 HTTPS 加强 Nginx 端口的安全性。如果用户在安装 Alaya 做了节点数据目录的修改,nginx_conf.sh 脚本也需要修改成相同的节点数据目录。

nginx_conf.sh做了那些事呢:

  • 生成了一对ca私钥(ca.key)和证书(ca.crt),一对server私钥(server.key)和证书请求(server.csr),使用ca证书(ca.crt)签名server证书请求(server.csr)获得server证书(server.crt)。 此时出现/etc/nginx/conf.d/出现5个证书相关文件

  • 将ca证书(ca.crt)拷贝给nginx使用(文件服务) 此时在platon-node/file下会出现ca.crt

  • 配置nginx访问用户密码 此时出现/etc/nginx/conf.d/platonpasswd文件

  • 配置validator_config.json(其中的name/password/nodeid/blspubkey) 此时在platon-node/file下会出现validator_config.json

  • 配置nginx配置文件,并重载生效 此时出现/etc/nginx/conf.d/platon.conf文件

所以Nginx就是将rpc端口通过nginx安全转发,用户需要通过用户名密码和ca证书才能访问到rpc端口

3.2 官方安装mtool

参照官方安装mtool链接

mtool_install.sh做了那些事呢:

  • 安装java环境 (个人实测,在脚本执行前使用sudo apt install openjdk-8-jre安装jre环境会有极大的用户体验提升)

  • 配置mtool环境变量 ~/.bashrc出现MTOOLDIR环境变量,并指向mtool目录

3.3 配置文件迁移

不熟悉配置文件的可以参照原来的配置文件内容执行官方脚本链接

以下为配置文件示例:


{

"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":"节点网站"

}

validator_conf.sh做了那些事呢:

  • 获取一系列的参数

  • 获取ca文件和之前编辑了一半的validator_config.json文件,这两个文件之前是在file目录下的,此时出现在mtool操作目录即$mtool_dir

  • 修改了hosts文件,将外部ip与domain3映射(吐槽一下,有段时间我一直不知道domain3是什么东西,很懵逼,直到有一次我去修改hosts​:tired_face:

  • 修改一系列的参数到validator_config.json文件

3.4 keystore迁移

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

  • 也可以使用mtool-client account recover命令重新导入一份

3.5 验证mtool-client


# 验证keystore迁移成功

mtool-client account list

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

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

4. Tips

4.1 提供一个service unit

how-to-use

文章很长,对linux感兴趣的小伙伴们可以仔细看看金步国老师的文章,每一篇都是经典:smile:


[Unit]

Description=Alaya node service

After=network.target

[Service]

Type=simple

StandardOutput=syslog

StandardError=syslog

SyslogIdentifier=alaya

ExecStart=/usr/bin/platon \

--identity alaya-node \

--datadir /home/ubuntu/platon-node/data \

--port 16789 \

--alaya \

--rpcport 6789 \

--rpcaddr 127.0.0.1 \

--rpcapi "db,platon,net,web3,admin,personal" \

--rpc \

--nodekey /home/ubuntu/platon-node/data/nodekey \

--cbft.blskey /home/ubuntu/platon-node/data/blskey \

--verbosity 3 \

--syncmode "fast"

User=ubuntu

Restart=on-failure

StartLimitInterval=5

RestartSec=3

LimitNOFILE=65535

LimitMEMLOCK=209715200

[Install]

WantedBy=multi-user.target

4.2 nginx配错了权限等问题懒得去解决的

即mtool本地访问rpc

需要知道的是:rpc端口是危险的,不要开放到公网上


{

"chainId": "104",

"delegatedRewardRate": "9000",

"nodePublicKey": "",

"blsPubKey": "",

"benefitAddress": "",

"nodeAddress": "http://127.0.0.1",

"nodePort": "16789",

"nodeRpcPort": "6789",

"nodeName": "DolphinTwo 🐬🐬",

"details": "Staking Happy In DolphinTwo.",

"externalId": "",

"webSite": "http://dolphintwo.cn"

}

4.3 nignx清理复位

  • 有权限问题 403的

  • 有配置问题 501的

  • 有安装失败提示pid文件冲突/conf文件冲突

  • 卸载/安装失败的

  • 其他疑难杂症

简单方法就是不使用nginx,参照上面的章节

具体问题具体分析,可以联系我解决,每个人的环境不一样,操作也不一样.

5. 感谢

感谢涛哥推荐 :pray:
感谢 nine 节点实操勘误 :smile:

===========

欢迎在群里@dolphintwo,也欢迎票投给我 DolphinTwo​:dolphin::dolphin:

我是两只小海豚:dolphin:

(下篇文章大概会说到platon节点指标监控,敬请期待)

4 个赞