进阶:多机分步部署

多机部署适用于生产环境/多机测试环境

案例: A, B, C, D 四台主机 (各个主机自动时间同步)

  • A: 172.25.1.13

  • B: 172.25.1.14

  • C: 172.25.1.15

  • D: 172.25.1.16

1. 准备工作

linux 目录,分发到 B、C、D 主机。

scp -r Venachain/release user@172.25.1.14:~/
scp -r Venachain/release user@172.25.1.15:~/
scp -r Venachain/release user@172.25.1.16:~/

2. 在 A 主机搭建单节点区块链

参照 《进阶:单机分步部署》,在节点 A 上搭建单节点区块链,然后将 genesis.json 文件广播出来给其他节点,放置于 linux/conf 目录下。

scp -r genesis.json user@172.25.1.14:${WORKSPACE}/linux/conf
scp -r genesis.json user@172.25.1.15:${WORKSPACE}/linux/conf
scp -r genesis.json user@172.25.1.16:${WORKSPACE}/linux/conf

注解

下述 3、4 步骤需要在节点部署的机器上,也就是分别在 B、C、D 主机上执行

3. 在 B、C、D 生成创世区块及节点信息

以 B 为例:

cd  ${WORKSPACE}/scripts
./venachainctl.sh init -n 1 --ip 172.25.1.14 --rpc_port 6791 --p2p_port 16791 --ws_port 26791 --auto true

此步骤会根据 genesis.json 文件生成创世区块,以及节点的连接信息(IP端口、节点密钥)

将节点的 node.pubkeydeploy conf 发送至 A 主机的相应目录。(若A主机不存在 data/node-1 目录,则创建该目录,以存放节点信息)

cd ${WORKSPACE}/linux/data/node-1
scp node.pubkey user@172.25.1.13:${WORKSPACE}/data/node-1
scp deploy_node-1.conf user@172.25.1.13:${WORKSPACE}/data/node-1

4. B、C、D 主机启动节点

以 B 节点为例

./venachainctl.sh start -n 1

B 节点启动后会主动连接A节点,加入网络,成为观察者节点。

注解

下述 5、6 步骤需要在 firstnode 部署的机器上,也就是 A 主机上执行

5. A 主机管理员添加 B、C、D 节点至系统合约

以添加 B 节点为例:

此时 A 主机的 data/node-1 目录必须有B节点的 node.pubkeydeploy conf

在A主机上将 B 主机上的节点加入到当前区块链

./venachainctl.sh addnode -n 1

本步骤会在系统合约中写入了B节点信息,B节点成为观察者节点(可以同步交易及数据,但是不参与共识出块)

6. A 主机管理员将 B、C、D 升级为共识节点

根据业务需求,可以将观察者节点升级为共识节点。

此时 A 主机的 data/node-1 目录必须有B节点的 node.pubkeydeploy conf

以添加 B 节点为例,在A主机上由 A 节点的管理员操作如下命令,即可将 B 节点升级为共识节点:

./venachainctl.sh updatesys -n 1