目录
1?创建链
1.1 链证书
1.2 新机构(含节点)
? ? ? ? 1.2.1 证书颁发机构 生成、发送机构证书
????????1.2.2 机构 初始化、配置node_deployment.ini、生成节点证书和节点P2P端口地址文件
? ? ? ? 1.2.3 机构 相互交换连接信息文件
? ? ? ?1.2.4 生成创世区块的机构?收集其他机构节点的节点证书
? ? ? ?1.2.5 生成创世区块的机构? 等待执行完毕1.3步骤,将生成的创世块文件至其他机构
? ? ? ? 1.2.6 机构 生成启动节点
1.3 新群组
? ? ? ? 1.3.1 委员会 选取一个机构生成群组创世块
? ? ? ? 1.3.2 生成创世块的机构 收集群组内1.2步骤其他机构的节点证书、配置group_genesis.ini
? ? ? ? 1.3.3 生成创世块的机构:生成群组创世区块
2?已有链创建新群组
3?已有链创建新机构
4?已有链创建已有机构的新节点
5 已有链已有机构加入已存在但未加入的群组
基于generator实现多机构对等部署
下载generator
## 前置准备
# 下载
cd ~/
git clone https://gitee.com/FISCO-BCOS/generator.git
# 安装
cd ~/generator && bash ./scripts/install.sh
./generator -h
# 获取节点二进制
./generator --download_fisco ./meta
# 检查二进制版本
./meta/fisco-bcos -v
1?创建链
1.1 链证书
????????证书颁发机构生成
## 证书颁发机构: 初始化链证书
cd ~/generator
# 证书颁发机构: 生成国密证书
./generator --generate_chain_certificate ./dir_chain_ca -g
# 证书颁发机构: 生成普通证书
./generator --generate_chain_certificate ./dir_chain_ca_normal
ls ./dir_chain_ca # gmca.crt gmca.key 分别为 链证书、链私钥
ls ./dir_chain_ca_normal # ca.crt ca.key 分别为 为链证书、链私钥
1.2 新机构(含节点)
? ? ? ? 1.2.1 证书颁发机构 生成、发送机构证书
cd ~/generator
# 证书颁发机构: 生成机构A证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA -g
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca_normal agencyA_normal
# 证书颁发机构: 发送链证书、机构证书、机构私钥至机构A
cp ./dir_agency_ca/agencyA/* ~/generator-A/meta/
cp ./dir_agency_ca/agencyA_normal/* ~/generator-A/meta/
# 证书颁发机构: 生成机构B证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB -g
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca_normal agencyB_normal
# 证书颁发机构: 发送链证书、机构证书、机构私钥至机构B
cp ./dir_agency_ca/agencyB/* ~/generator-B/meta/
cp ./dir_agency_ca/agencyB_normal/* ~/generator-B/meta/
????????1.2.2 机构 初始化、配置node_deployment.ini、生成节点证书和节点P2P端口地址文件
# 初始化机构A
cp -r ~/generator ~/generator-A
## 机构A:修改配置文件
cd ~/generator-A
# 机构A:配置文件内容
cat > ./conf/node_deployment.ini << EOF
[group]
group_id=1
[node0]
; host ip for the communication among peers.
; Please use your ssh login ip.
p2p_ip=127.0.0.1
; listen ip for the communication between sdk clients.
; This ip is the same as p2p_ip for physical host.
; But for virtual host e.g. vps servers, it is usually different from p2p_ip.
; You can check accessible addresses of your network card.
; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/
; for more instructions.
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30300
channel_listen_port=20200
jsonrpc_listen_port=8545
[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30301
channel_listen_port=20201
jsonrpc_listen_port=8546
EOF
# 机构A:根据node_deployment.ini生成节点证书、节点P2P连接地址文件
./generator --generate_all_certificates ./agencyA_node_info -g
ls ./agencyA_node_info
# 初始化机构B
cp -r ~/generator ~/generator-B
## 机构B:修改配置文件
cd ~/generator-B
# 机构B:配置文件内容
cat > ./conf/node_deployment.ini << EOF
[group]
group_id=1
[node0]
; host ip for the communication among peers.
; Please use your ssh login ip.
p2p_ip=127.0.0.1
; listen ip for the communication between sdk clients.
; This ip is the same as p2p_ip for physical host.
; But for virtual host e.g. vps servers, it is usually different from p2p_ip.
; You can check accessible addresses of your network card.
; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/
; for more instructions.
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30302
channel_listen_port=20202
jsonrpc_listen_port=8547
[node1]
p2p_ip=127.0.0.1
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30303
channel_listen_port=20203
jsonrpc_listen_port=8548
EOF
# 机构B:根据node_deployment.ini生成节点证书、节点P2P连接地址文件
./generator --generate_all_certificates ./agencyB_node_info -g
? ? ? ? 1.2.3 机构 相互交换连接信息文件
# 机构A:将节点P2P连接地址文件发送至机构B
cd ~/generator-A
cp ./agencyA_node_info/peers.txt ~/generator-B/meta/peersA.txt
# 机构B:将节点P2P连接地址文件发送至机构A
cd ~/generator-B
cp ./agencyB_node_info/peers.txt ~/generator-A/meta/peersB.txt
????????1.2.5?执行步骤1.3
????????1.2.6?机构 生成启动节点
# 机构A:生成所属节点
cd ~/generator-A
./generator --build_install_package ./meta/peersB.txt ./nodeA -g
ls ./nodeA
# 机构A:启动节点
bash ./nodeA/start_all.sh
ps -ef | grep fisco
## 机构B:生成所属节点
cd ~/generator-B
./generator --build_install_package ./meta/peersA.txt ./nodeB -g
bash ./nodeB/start_all.sh
##查看群组1节点运行状态
ps -ef | grep fisco
tail -f ./node*/node*/log/log* | grep +++
1.3 新群组
? ? ? ? 1.3.1 委员会 选取一个机构生成群组创世块
这里选定 机构A
????????1.3.2?生成创世区块的机构?收集其他机构节点的节点证书
# 机构B:发送节点证书至生成创世区块机构A
cd ~/generator-B
cp ./agencyB_node_info/gmcert*.crt ~/generator-A/meta/
? ? ? ? 1.3.3?生成创世区块的机构 配置group_genesis.ini
# 机构A:配置文件内容
cd ~/generator-A
cat > ./conf/group_genesis.ini << EOF
[group]
group_id=1
[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30302
node3=127.0.0.1:30303
EOF
? ? ? ? 1.3.4?生成创世块的机构 生成群组创世区块
# 机构A:生成群组创世区块
cd ~/generator-A
./generator --create_group_genesis ./group -g
????????1.3.5?生成创世区块的机构? 将生成的创世块文件至其他机构
# 机构A:分发群组1创世区块至机构B
cd ~/generator-A
cp ./group/group.1.genesis ~/generator-B/meta
2?已有链创建新群组
2.1 选定新群组机构
????????2.1.1 委员会 选定新群组包含的机构
这里选定群组A?包含 机构A、机构B
2.2 新建组
? ? ? ? 2.2.1?委员会 选取一个机构生成群组创世块
这里选定 机构B
? ? ? ? 2.2.2?生成创世区块的机构?收集其他机构节点的节点证书
# 机构A:发送节点证书至生成创世区块机构B
cd ~/generator-A
cp ./agencyA_node_info/gmcert*.crt ~/generator-B/meta/
? ? ? ? 2.2.3?生成创世区块的机构 配置group_genesis.ini
# 机构B:配置文件内容
cd ~/generator-B
cat > ./conf/group_genesis.ini << EOF
[group]
group_id=2
[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30302
node3=127.0.0.1:30303
EOF
? ? ? ? 2.2.4?生成创世块的机构 生成群组创世区块
# 机构A:生成群组创世区块
cd ~/generator-B
./generator --create_group_genesis ./group -g
? ? ? ? 2.2.5?生成创世区块的机构? 将生成的创世块文件至其他机构
# 机构B:分发群组1创世区块至机构A
cd ~/generator-B
cp ./group/group.1.genesis ~/generator-A/meta
2.3 重启节点
# 机构A为现有节点初始化群组2
cd ~/generator-A
# 添加群组2配置文件至已有节点
./generator --add_group ./meta/group.2.genesis ./nodeA
# 添加机构B节点连接文件peers至已有节点
./generator --add_peers ./meta/peersB.txt ./nodeA
# 重启机构A节点
bash ./nodeA/stop_all.sh
bash ./nodeA/start_all.sh
# 机构B为现有节点初始化群组2
cd ~/generator-B
# 添加群组2配置文件至已有节点
./generator --add_group ./meta/group.2.genesis ./nodeB
# 添加机构B节点连接文件peers至已有节点
./generator --add_peers ./meta/peersA.txt ./nodeB
# 重启机构B节点
bash ./nodeB/stop_all.sh
bash ./nodeB/start_all.sh
## 查看群组2节点运行状态
ps -ef | grep fisco
cd ~/generator-A
tail -f ./node*/node*/log/log* | grep +++
3?已有链创建新机构
4?已有链创建已有机构的新节点
5 已有链已有机构加入已存在但未加入的群组
5.1 重启节点
5.2 配置控制台
|