FISCO BCOS-多服务器部署区块链(1)-搭建两服务两节点单群组区块链
本文参考官方链接:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/enterprise_tools/tutorial_detail_operation.html
参考官方技术文档,构建两节点两机构单群组的区块链,组网模式如下图节点组网拓扑图。
机器环境,每个节点的IP和端口号如下(实际部署的时候一定要填写物理机的IP哟~):
一、下载安装
1.下载
cd~/&&git clonehttps://github.com/FISCO-BCOS/generator.git
出现问题:服务器没有git,且直接安装无效,如下图。
此时需要先执行 apt-get update,再进行apt-get install git。
安装成功git之后,执行上面命令。
2.安装(此步骤要求有sudo权限)
2.1 cd~/generator&&bash ./scripts/install.sh
2.2 验证是否安装成功./generator -h,看到usage:generator ***,如下图,表示成功安装。
3.获取节点二进制
3.1 拉取最新fisco-bcos二进制文件到meta中
./generator --download_fisco ./meta
如下图所示,成功拉取
3.2 检查是否成功,./meta/fisco-bcos -v
如下图所示,即成功。
二、机构初始化
进行完第一步“下载安装”之后,下载的generator就作为证书颁发机构,用来初始化机构A/B/C...等
1.机构初始化
1.1 初始化机构A
cp -r ~/generator ~/generator-A
1.2 初始化机构B
cp -r ~/generator ~/generator-B
2.初始化链证书
在证书颁发机构上进行操作,注意一条链拥有唯一的链证书ca.crt
2.1 在证书生成机构目录下操作,即先进入目录。
cd~/generator
2.2 用命令生成链证书
./generator --generate_chain_certificate ./dir_chain_ca
2.3 查看链证书及私钥
ls ./dir_chain_ca
3.机构A、B构建群组1
3.1 初始化机构A
实际应用时应该由机构本地生成私钥agency.key,再生成证书请求文件,向证书签发机构获取机构证书agency.crt。
3.1.1 进入在证书机构目录
cd~/generator
3.1.2 生成机构A证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA
3.1.3 查看机构证书及私钥
ls dir_agency_ca/agencyA/
3.1.4 发送机构证书、机构私钥、链证书给机构A,采用文件拷贝的方式,从证书授权机构将机构证书发送给对应的机构,放在机构的工作目录的meta子目录下。
cp ./dir_agency_ca/agencyA/* ~/generator-A/meta/
3.2 初始化机构B
3.2.1 进入证书生成机构目录
cd~/generator
3.2.2 生成机构B证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
3.2.3 发送证书至机构B的meta子目录
cp ./dir_agency_ca/agencyB/* ~/generator-B/meta/
注意事项:一条联盟链中只能用到一个根证书ca.crt,多服务器部署时不要生成多个根证书和私钥。一个群组只能有一个群组创世区块group.x.genesis
3.3 机构A修改配置文件
3.3.1 进入生成机构A的目录
cd~/generator-A
3.3.2 修改配置文件
cat > ./conf/node_deployment.ini< [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 seehttps://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 EOF 3.3.3 查看配置文件内容 cd~/generator-A vim./conf/node_deployment.ini 同时按下shift Esc :,输入q退出。 3.4 机构B修改配置文件 3.4.1 进入生成机构B的目录 cd~/generator-B 3.4.2 修改配置文件 cat > ./conf/node_deployment.ini< [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 seehttps://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=30301 channel_listen_port=20201 jsonrpc_listen_port=8546 EOF 3.4.3 查看配置文件内容 cd~/generator-B vim./conf/node_deployment.ini 3.5 机构A生成并发送节点信息 3.5.1 进入生成机构A目录 cd~/generator-A 3.5.2 机构A生成节点证书及P2P链接信息文件 ./generator --generate_all_certificates ./agencyA_node_info 3.5.3 查看生成文件 ls ./agencyA_node_info 上图中,从左至右分别为需要交互给机构A的节点证书,节点P2P连接地址文件(根据node_deployment.ini生成的本机构节点信息) 3.5.4 A机构需将节点P2P连接地址文件发送至机构B (因为机构生成节点时需要指定其他节点的节点P2P连接地址) cp ./agencyA_node_info/peers.txt ~/generator-B/meta/peersA.txt 3.6 机构B生成并发送节点信息 3.6.1 进入生成机构B目录 cd~/generator-B 3.6.2 机构B生成节点证书及P2P连接信息文件 ./generator --generate_all_certificates ./agencyB_node_info 3.6.3 机构B发送节点证书至机构A 因为生成创世区块的机构需要节点证书,咱们这个是由A机构生成创世区块,因此B机构除了发送节点P2P连接地址文件外,还需发送节点证书至机构A cp ./agencyB_node_info/cert*.crt ~/generator-A/meta/ 3.6.4 机构B发送节点P2P连接地址文件 cp ./agencyB_node_info/peers.txt ~/generator-A/meta/peersB.txt 3.7 机构A生成群组1创世区块 此处是选择机构A生成群组创世区块,实际生产中可以通过联盟链委员会协商选择 3.7.1 进入生成机构A目录 cd~/generator-A 3.7.2 机构A修改配置文件conf文件下的group_genesis.ini cat > ./conf/group_genesis.ini<< EOF [group]group_id=1 [nodes] node0=127.0.0.1:30300 node1=127.0.0.1:30301 EOF 3.7.3 修改./conf/group_genesis.ini文件,即添加注释 vim ./conf/group_genesis.ini ;命令解释 [group] ;群组id group_id=1 [nodes] ;机构A节点p2p地址 node0=127.0.0.1:30300 ;机构B节点p2p地址 node1=127.0.0.1:30301 3.7.4 生成group_genesis.ini配置的群组创世区块 ./generator --create_group_genesis ./group 3.7.5 分发群组1创世区块至机构B cp ./group/group.1.genesis ~/generator-B/meta 3.8 机构A生成所属节点 生成机构A所属节点,此命令会根据用户配置的node_deployment.ini文件生成相应的节点配置文件夹 3.8.1 进入生成机构A目录 cd~/generator-A 3.8.2 生成机构A所属节点 ./generator --build_install_package ./meta/peersB.txt ./nodeA 3.8.3 查看生成节点配置文件夹 ls ./nodeA 3.8.4 机构A启动节点 bash ./nodeA/start_all.sh 3.8.5 查看节点进程 ps -ef|grep fisco 3.9 机构B生成所属节点 3.9.1 进入生成机构B目录 cd~/generator-B 3.9.2 生成机构B所属节点 ./generator --build_install_package ./meta/peersA.txt ./nodeB 3.9.3 机构B启动节点 bash ./nodeB/start_all.sh 注意事项:节点启动只需要推送对应ip的node文件夹即可,如127.0.0.1的服务器,只需node_127.0.0.1_port对应的节点配置文件夹。多机部署时,只需要将生成的节点文件夹推送至对应服务器即可 3.10 查看群组1节点运行状态 3.10.1 查看进程 ps -ef|grep fisco 3.10.2 查看节点log tail -f ./node*/node*/log/log*|grep +++ ctrl c 结束查看 4.推送机构B的生成文件夹到目标服务器 scp -r /root/generator-B/ root@172.**.***.**:~/ 为了操作简单,以上生成B的系列操作在同一个服务器上,那么多机构链就需要那么生成好的文件夹generator-B,就可以传输到另一台服务器即可。 多机构搭建群组1的操作完成!