跳到主要内容

在区块链运行阶段,可能由于服务器规划的调整,需要对单个节点,或者整个链进行迁移操作,本节内容就是讲解如何进行节点迁移或者链迁移。

节点迁移

介绍

出于服务器维护或调整的需要,将单个节点从现有服务器上迁移到目标服务器上。

环境准备

需要迁移的目标服务器,这里以192.168.1.100为例;

需要申请目标服务器证书;

操作流程

关闭节点

登录源服务器,进入节点目录:

cd /usr/local/bubi

脚本关闭节点:

./scripts/bubid stop

确认节点已经退出:

ps -ejf|grep bubi

数据迁移

在源服务器上对节点进行打包:

tar czf /usr/local/bubi ~/bubi.tar.gz

传输数据包,需要根据具体的服务器环境把数据包发送到目标服务器,这里以最简单的scp命令为例:

scp ~/bubi.tar.gz root@192.168.1.100:~/

登录到目标服务器,登录过程省略,解压数据包:

tar xzf ~/bubi.tar.gz -o /usr/local

替换新证书

新证书申请成功后,将文件拷贝到布比链安装目录的config下。

文件名说明备注
ca.crt申请的根证书文件需申请
node_bubi.crt申请的节点证书需申请(4个节点证书)
node_bubi.pem生成的节点加密文件手动生成
node_bubi.csr生成的节点注册文件手动生成

启动节点

在目标服务器上进入节点目录:

cd /usr/local/bubi

脚本启动节点:

./scripts/bubid start

确认节点进程状态:

ps -ejf|grep bubi

验证节点状态

1)查看节点状态

通过检查端口和访问服务的http接口验证服务状态;分别4个节点执行命令,查看状态

$ netstat -tpnl | grep bubi 

tcp 0 0 0.0.0.0:9333 0.0.0.0:* LISTEN 5409/bubi
tcp 0 0 0.0.0.0:19333 0.0.0.0:* LISTEN 5409/bubi
tcp 0 0 0.0.0.0:7053 0.0.0.0:* LISTEN 5409/bubi

2)查看区块高度

节点服务器上执行命令,查看区块高度

$ curl  localhost:19333/getLedger

{
"error_code" : 0,
"result" : {
"header" : {
"account_tree_hash" : "73e8b18d5d30e13396d1d9d1a98958e7d3419166d1987ae3ce97ef905bba39fa",
"close_time" : 1669602900968732,
"consensus_value_hash" : "987ffefc8920c5e63c4fae664e8ac18f053512abb0605fe29bc4c6590a3f2a03",
"fees_hash" : "916daa78d264b3e2d9cff8aac84c943a834f49a62b7354d4fa228dab65515313",
"hash" : "77b7f1e0c05b908120172c39fd0dc4290a23b58fb93130a80a7a48c1d1e3fdae",
"previous_hash" : "22c80216b44fc6f70b7977822239747be9635ec1b5ccca8ed8ed0a2f3dd0aa36",
"seq" : 10, # 区块高度,每分钟增加1.
"tx_count" : 116362,
"validators_hash" : "78495b8761caab8a8b0d37e6f78d4758337f1db68734f9f3fd46bfe5e5e4be74",
"version" : 4000
},
"ledger_length" : 227
}
}

链迁移

介绍

出于服务器平台维护或调整的需要,将区块链所有节点从现有服务器平台上迁移到目标服务器平台上。

环境准备

需要迁移的目标服务器平台;

这里以区块链四个节点为例,分别从下面源服务器上:

  • 192.168.2.101
  • 192.168.2.102
  • 192.168.2.103
  • 192.168.2.104

迁移至下面目标服务器上:

  • 192.168.3.101
  • 192.168.3.102
  • 192.168.3.103
  • 192.168.3.104

需要申请目标服务器证书;

操作流程

关闭所有节点

分别登录源服务器,进入节点目录:

cd /usr/local/bubi

脚本关闭节点:

./scripts/bubid stop

确认节点已经退出:

ps -ejf|grep bubi

迁移所有节点

分别在源服务器上对节点进行打包:

tar czf /usr/local/bubi ~/bubi.tar.gz

传输数据包,需要根据具体的服务器环境把数据包发送到目标服务器,这里以最简单的scp命令为例,从192.168.2.101迁移到192.168.3.101

scp ~/bubi.tar.gz root@192.168.3.101:~/

登录到目标服务器,登录过程省略,解压数据包:

tar xzf ~/bubi.tar.gz -o /usr/local

更新节点配置文件,当前配置如下示例(其他配置信息忽略)

{
"p2p":{
"consensus_network":{
"known_peers":[
"192.168.2.101:9333",
"192.168.2.102:9333",
"192.168.2.103:9333",
"192.168.2.104:9333",
]
}
}
}

需要更新节点连接信息,更新后如下所示(其他配置信息忽略)

{
"p2p":{
"consensus_network":{
"known_peers":[
"192.168.3.101:9333",
"192.168.3.102:9333",
"192.168.3.103:9333",
"192.168.3.104:9333",
]
}
}
}

替换新证书

新证书申请成功后,将文件拷贝到布比链安装目录的config下。

文件名说明备注
ca.crt申请的根证书文件需申请
node_bubi.crt申请的节点证书需申请(4个节点证书)
node_bubi.pem生成的节点加密文件手动生成
node_bubi.csr生成的节点注册文件手动生成

启动所有节点

分别在目标服务器上进入节点目录:

cd /usr/local/bubi

脚本启动节点:

./scripts/bubid start

确认节点进程状态:

ps -ejf|grep bubi

验证节点状态

1)查看节点状态

通过检查端口和访问服务的http接口验证服务状态;分别4个节点执行命令,查看状态

$ netstat -tpnl | grep bubi 

tcp 0 0 0.0.0.0:9333 0.0.0.0:* LISTEN 5409/bubi
tcp 0 0 0.0.0.0:19333 0.0.0.0:* LISTEN 5409/bubi
tcp 0 0 0.0.0.0:7053 0.0.0.0:* LISTEN 5409/bubi

2)查看区块高度

分别在4个节点服务器上执行命令,查看区块高度

$ curl  localhost:19333/getLedger

{
"error_code" : 0,
"result" : {
"header" : {
"account_tree_hash" : "73e8b18d5d30e13396d1d9d1a98958e7d3419166d1987ae3ce97ef905bba39fa",
"close_time" : 1669602900968732,
"consensus_value_hash" : "987ffefc8920c5e63c4fae664e8ac18f053512abb0605fe29bc4c6590a3f2a03",
"fees_hash" : "916daa78d264b3e2d9cff8aac84c943a834f49a62b7354d4fa228dab65515313",
"hash" : "77b7f1e0c05b908120172c39fd0dc4290a23b58fb93130a80a7a48c1d1e3fdae",
"previous_hash" : "22c80216b44fc6f70b7977822239747be9635ec1b5ccca8ed8ed0a2f3dd0aa36",
"seq" : 10, # 区块高度,每分钟增加1.
"tx_count" : 116362,
"validators_hash" : "78495b8761caab8a8b0d37e6f78d4758337f1db68734f9f3fd46bfe5e5e4be74",
"version" : 4000
},
"ledger_length" : 227
}
}