团队任务需要基于Weldentity做开发,狗子哥又刚好发了鸡腿任务。
把上次的单群组双机构双节点组网模式延伸下,再加上新增节点的操作。
玩转WeIdentity之可视化部署 这里狗子哥通过build_chain高效完成了部署,如果只是为了学习Weldentity或者搭链测试还是建议使用这个或one_click_generator。
生命不息,折腾不止
这里依旧是使用真机环境。感谢队里师傅们的服务器👏
这里有几个坑,
坑1:
可以看下他的install源码
不支持mac os👀,狗子哥也在这里掉坑了。
坑2:
慢~🚲
下载缓慢可以增加参数 --cdn
可以在generator中翻到,-h的帮助文档中也可以看到:
官方教程中通过端口的不同来区别不同机器,从0加到了5,模拟3台机子。我们这里直接三台真机,其实这个就是对官方教程的实战。上次的单群组双机构双节点组网模式加上这次六节点三机构两群组组网模式,相信大家应该可以融会贯通搭建自定义的组网模式了。
下图所示为生成成功:
官方教程中直接使用CA生成了机构证书和私钥,实践中可能机构会自己生成私钥,打包成证书请求文件后再由CA机构认证。这里我用机构A作为例子演示下实战中生成过程
#首先本地生成私钥agency.key openssl genrsa -out agency.key 2048 #本地使用机构私钥agency.key生成证书请求文件agency.csr openssl req -new -sha256 -subj "/CN=xiaoyue/O=fisco-bcos/OU=agency" -key ./agency.key -out ./agency.csr #发送给ca进行认证 openssl x509 -req -days 3650 -sha256 -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -in ../../generator-a/agency.csr -out ./agency.crt -extensions v4_req具体细节可参考FISCO BCOS证书说明
个人感觉比较迷,下面还是和教程一样统一CA直接颁发机构证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA ./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB ./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyC由于AB构建群组1、AC构建群组2
所以配置会有不一样的地方。
其他的配置也相同,本机两个节点,如果向扩容就按照上面的格式再加一个node。
生成全部节点证书和P2P连接信息文件。要保证拥有node_deployment、机构证书、私钥
./generator --generate_all_certificates ./agencyA_node_info ./generator --generate_all_certificates ./agencyB_node_info ./generator --generate_all_certificates ./agencyC_node_info #记得是要在不同机构下跑哦!互发节点连接信息,因为机构A需要配置创世区块,所以机构还B需要把节点证书文件发送给A。
修改group_genesis.ini,生成创世区块并分发群组1的创世区块到机构B
# ./conf/group_genesis.ini [group] group_id=1 [nodes] node0=波波ip:30300 node1=波波ip:30301 node2=牧子哥ip:30300 node3=牧子哥ip:30301 ./generator --create_group_genesis ./group 生成机构节点 ./generator --build_install_package ./meta/peersB.txt ./nodeA ./generator --build_install_package ./meta/peersA.txt ./nodeB #需要注意的是如果有多个连接文件需要合并,无格式的。 启动两机构 bash ./nodeA/start_all.sh bash ./nodeB/start_all.sh 检查共识 tail -f ./node*/node*/log/log* | grep +++这个时候停止机构B
bash ./nodeB/stop_all.sh不出我肖某人所料应该会timeout
接下来便是AC构建群组2
因为之前已经做好了机构C的相关配置,接下来就是纯构建群组的过程。
AC互发节点信息A需要发证书信息给C构建创世区块C生成群组2的创世区块分发给AA部署群组2的创世区块并重启节点 构建群组2创世区块 # ./conf/group_genesis.ini [group] group_id=2 [nodes] node0=波波ip:30300 node1=波波ip:30301 node2=汤师傅ip:30304 node3=汤师傅ip:30305 ./generator --create_group_genesis ./group 机构A添加群组 ./generator --add_group ./meta/group.2.genesis ./nodeA # 增加节点C的信息 ./generator --add_peers ./meta/peersC.txt ./nodeA 机构C生成节点 ./generator --build_install_package ./meta/peersA.txt ./nodeC 启动全部节点 # 重启A bash ./nodeA/stop_all.sh bash ./nodeA/start_all.sh # 启动C bash ./nodeC/start_all.sh检查共识发现如下回显,那么恭喜你完成了我24小时的工作量!
这里大部分原因是由于这个坑:not caused by omit empty block
官方文档中说:网络抖动、网络断连或配置出错(如同一个群组的创世块文件不一致)均有可能导致节点共识异常
warning|2019-06-26 18:00:06.154102|[g:1][CONSENSUS][PBFT]ViewChangeWarning: not caused by omit empty block ,v=5,toV=6,curNum=715,hash=ed6e856d...,nodeIdx=3,myNode=e39000ea...坑1
conf文件夹下的两个配置文件中均有对groupid的配置。(千万记得要改,别只改个IP)
[group] group_id=2坑2
端口配置
这个是真的坑,配置之前千万sudo ufw status看看端口是不是开着。(这种级别的配置当然不考虑关防火墙了)我是配好了之后才发现node2的端口根本没有对外数据传输,这卡了我一下午。
这里我将模拟机构A新增节点,并转移到一个真机当中(感谢客户的机🤣)
然后演示一下准入机制,在控制台将新增节点添加为共识节点。
修改node_deployment [group] group_id=1 [node0] p2p_ip=客户ip rpc_ip=客户ip channel_ip=0.0.0.0 p2p_listen_port=30300 channel_listen_port=20201 jsonrpc_listen_port=8551 生成证书与连接信息 ./generator --generate_all_certificates ./agencyA_node_info_new 生成节点 # 首先将机构中两个节点的ip信息合并 cat ./agencyA_node_info/peers.txt >> ./meta/peersB.txt # 然后生成新的nodeA ./generator --build_install_package ./meta/peersB.txt ./nodeA_new转移节点。 ctrl+c,ctrl+v 放到别的机子上
配置控制台,添加节点6进入group1
./generator --download_console ./ --cdn节点6的conf文件夹下有个node.nodeid,查看一下
degca519148cafc3e92c8d9a8572b41ea2f62d0d19e99273ee18cccd34ab50079b4ec82fe5f4ae51bd95dd711811c97153ece8c05eac7a5ae34c96454c4d3123然后启动控制台
# 这里后面没有groupid默认进入1 cd ~/generator-A/console && bash ./start.sh添加共识节点
addSealer nodeid查看共识,发现红色加加。
恭喜,你完成了多群组多机构多节点组网并且准入了一个新的节点。
来自上海对外经贸大学区块链与应用研究中心-肖越
website:cnmf.net.cn
csdn: https://blog.csdn.net/xiaoyue2019
github: https://github.com/xiaoyue2019
>https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/enterprise_tools/tutorial_detail_operation.html#id34
>https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2/docs/design/security_control/node_management.html?highlight=观察节点#id6