團隊任務需要基于Weldentity做開發,狗子哥又剛好發了雞腿任務,
把上次的單群組雙機構雙節點組網模式延伸下,再加上新增節點的操作,
玩轉WeIdentity之可視化部署
這里狗子哥通過build_chain高效完成了部署,如果只是為了學習Weldentity或者搭鏈測驗還是建議使用這個或one_click_generator,
生命不息,折騰不止
這里依舊是使用真機環境,感謝隊里師傅們的服務器👏
1. 下載安裝
git clone https://github.com/FISCO-BCOS/generator.git
cd generator
bash ./scripts/install.sh
./generator -h #檢查是否安裝成功
./generator --download_fisco ./meta --cdn #通過cdn下載
./meta/fisco-bcos -v #檢查是否安裝成功
這里有幾個坑,
-
坑1:
可以看下他的install原始碼

不支持mac os👀,狗子哥也在這里掉坑了,
-
坑2:
慢~🚲
下載緩慢可以增加引數 --cdn
可以在generator中翻到,-h的幫助檔案中也可以看到:

2. 總覽
官方教程中通過埠的不同來區別不同機器,從0加到了5,模擬3臺機子,我們這里直接三臺真機,其實這個就是對官方教程的實戰,上次的單群組雙機構雙節點組網模式加上這次六節點三機構兩群組組網模式,相信大家應該可以融會貫通搭建自定義的組網模式了,

3. 使用CA生成鏈證書
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA
ls dir_agency_ca/agencyA/
下圖所示為生成成功:
4. 初始化所有機構
官方教程中直接使用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
5.配置所有機構
由于AB構建群組1、AC構建群組2
所以配置會有不一樣的地方,
首先是AB配置、互發節點資訊,并生成創世區塊
- 修改node_deployment.(generator會根據其生成相關節點證書、生成節點組態檔夾)
[group]
group_id=1
[node0]
; host ip for the communication among peers.
; Please use your ssh login ip.
p2p_ip=波波的ip
; 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=0.0.0.0
channel_ip=0.0.0.0
p2p_listen_port=30300
channel_listen_port=20200
jsonrpc_listen_port=8545
[node1]
p2p_ip=波波的ip
rpc_ip=127.0.0.1
channel_ip=0.0.0.0
p2p_listen_port=30301
channel_listen_port=20201
jsonrpc_listen_port=8546
- B的node_deployment,就改一下IP,相關配置在上篇文章中有比較詳細的解釋,
[group]
group_id=1
[node0]
; host ip for the communication among peers.
; Please use your ssh login ip.
p2p_ip=牧子哥的ip
; 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=0.0.0.0
channel_ip=0.0.0.0
p2p_listen_port=30302
channel_listen_port=20202
jsonrpc_listen_port=8547
[node1]
p2p_ip=牧子哥的ip
rpc_ip=0.0.0.0
channel_ip=0.0.0.0
p2p_listen_port=30303
channel_listen_port=20203
jsonrpc_listen_port=8548
-
其他的配置也相同,本機兩個節點,如果向擴容就按照上面的格式再加一個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的創世區塊分發給A
- A部署群組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的埠根本沒有對外資料傳輸,這卡了我一下午,
6. 新增節點
這里我將模擬機構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=%E8%A7%82%E5%AF%9F%E8%8A%82%E7%82%B9#id6
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/158485.html
標籤:其他
上一篇:基礎篇:深入決議JAVA注解機制
