鑑於筆者之前各大博客教程都有不少人提問,早期創建一個技術交流羣,裏面技術體系可能比較雜,想了解相關區塊鏈開發,技術提問,請加QQ羣:538327407html
一、新增羣組搭建完整聯盟鏈java
二、根據羣組新增機構node
三、新增羣組,將原有機構加入git
java 環境github
詳細能夠參考前面幾章的操做。web
官方參考文檔:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/enterprise_quick_start.html#ac2spring
畫了一張圖,大體說明操做。bash
如下三個命令 要在各自的操做界面操做網絡
機構A:./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA 機構B:./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
備註:生成機構證書 都須要有鏈證書等作基礎app
上圖爲創世區塊的meta 文件夾,裏面還收集了其餘節點的證書。
普通機構,只有本身的節點證書、還有其餘羣組的peers.txt 的文件,以及羣組配置文件、鏈證書、本身的機構證書等。
p2p_ip 和rpc_ip 修改成 內網地址
前提:內網端口等要打開
機構A:./generator --generate_all_certificates ./agencyA_node_info 機構B:./generator --generate_all_certificates ./agencyB_node_info
須要用的上面node_deployment.ini,及機構meta文件夾下的機構證書與私鑰
機構生成節點時須要指定其餘節點的節點P2P鏈接地址,所以,A機構需將節點P2P鏈接地址文件發給其餘機構,一樣的其餘機構都要把peers[自定義].txt copy 給除本身外的機構/meta 文件夾下
修改:./conf/group_genesis.ini
配置group_id,以及p2p_ip,rpc_ip
./generator --create_group_genesis ./group
生成好以後,會出現一個group 文件夾
將./group/group.1.genesis 文件copy 個每一個機構 的meta 下面
./generator --build_install_package ./meta/peers.txt ./nodeA ./generator --build_install_package ./meta/peers.txt ./nodeB ./generator --build_install_package ./meta/peers.txt ./nodeC
說明:上面命令 peers.txt 是能夠自定義名稱的,初始化時候我將他們統一放到peers.txt ,不事後續拓展新的節點和新機構,我有單獨拆分爲:好比機構A中有機構B的peersB.txt 配置文件。
bash ./nodeA/start_all.sh
若是出現端口占用,這麼解決
sudo lsof -i:[port]
sudo kill [PID]
從新啓動
bash ./nodeA/start_all.sh
查看:
進程:ps -ef | grep fisco
查看節點:tail -f ./node*/node*/log/log* | grep +++
出現+++ 爲節點正常共識
bash <(curl -s https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/download_console.sh)
若是下載忙 ctrl+C 從新下載,多實驗幾回,有的時候比較快
修改console 內部的conf ,ca證書、節點證書和私鑰 一個xml 配置項
官方說法:
將節點sdk目錄下的ca.crt、node.crt和node.key文件拷貝到conf目錄下。
將conf目錄下的applicationContext-sample.xml文件重命名爲applicationContext.xml文件。
配置applicationContext.xml文件,其中添加註釋的內容根據區塊鏈節點配置作相應修改。
提示:相關IP改成內網ip
則applicationContext.xml配置不用修改。
一個機構 內部節點 每一個節點 證書都不同,
控制檯可使用swith 2 等操做切換,不須要手動修改 配置
參考:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/sdk/sdk.html#spring
下載
cd ~/ && git clone https://github.com/FISCO-BCOS/generator.git
安裝
此操做要求用戶具備sudo權限。
cd generator && bash ./scripts/install.sh
檢查是否安裝成功,若成功,輸出 usage: generator xxx
./generator -h
拉取節點二進制
拉取最新fisco-bcos二進制文件到meta中
./generator --download_fisco ./meta
檢查二進制版本
若成功,輸出 FISCO-BCOS Version : x.x.x-x
./meta/fisco-bcos -v
將機構A 中./dir_chain_ca/目錄copy 到項目中
(1)修改新機構的 group_genesis.ini 文件, group_id 等改成新的羣組,其餘的也作相應修改
(2) 機構C 自己的node_deployment.ini 配置好,就配置了 group_id 改成 對應的羣組
(3)機構C生成節點證書及P2P鏈接信息文件 ,執行以下命令:
./generator --generate_all_certificates ./agencyC_node_info
(4) 將機構A /agencyA_node_info/cert*.crt 放到 機構C的meta 目錄下
(5) 對應的peers.txt 也copy 過去,並更名爲peers[本身定義].txt,
(6)對應的peers.txt 複製給機構A的meta 下面的peers.txt 中
(7)生成group_genesis.ini配置的羣組創世區塊。執行以下命令:
./generator --create_group_genesis ./group
(8)group.2.genesis copy 給機構A 的meta 文件下
(9)機構C生成所屬節點,執行以下命令:
./generator --build_install_package ./meta/peersA.txt ./nodeC
(10)啓動節點 bash ./nodeC/start_all.sh
(11)下載console ,把以前其餘機構console 拿過來,修改console 目錄下conf
官方說法:
將meta/node_172.27.16.5_3030 等相似 目錄下的ca.crt、node.crt和node.key文件拷貝到conf目錄下。
將conf目錄下的applicationContext-sample.xml文件重命名爲applicationContext.xml文件。
配置applicationContext.xml文件,其中添加註釋的內容根據區塊鏈節點配置作相應修改。
則applicationContext.xml配置不用修改。
(12) 使用switch 2 等切換控制檯,前提是要給控制檯配置好配置
ps:本事例和官方操做不一樣,官方是在機構A和機構C已經創建羣組2的基礎上,將機構C加入羣組1,筆者是在機構A和機構B組合羣組1狀況下,新增一個獨立機構,並徹底加入到羣組1中
一、下載源程序,將機構A的鏈證書文件夾(./dir_agency_ca),發送機構C的項目根目錄下
二、生成機構C證書:
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyC
三、發送鏈證書、機構證書、機構私鑰,示例是經過文件拷貝的方式,
放到機構C的工做目錄的meta目錄下
四、修改 node_deployment.ini,主要修改 p2p_ip和rpc_ip
五、生成機構C節點證書,執行以下命令:
./generator --generate_all_certificates ./agencyC_node_info
六、將C的節點peers.txt copy 給A,同時將A的copy 給C
七、agencyC_node_info 相關 cert*.crt copy 給機構A(創世區塊所在機構)./meta/
八、將羣組group.1.genesis 文件分配copy 給機構C 的meta ,生成機構C所屬節點
並執行命令:
./generator --build_install_package ./meta/peers.txt ./nodeC
啓動機構C的節點:
bash ./nodeC/start_all.sh
九、機構C執行,爲機構C節點添加羣組1創世區塊後需從啓節點
./generator --add_group ./meta/group.1.genesis ~/generator/nodeC
十、機構A中進入控制檯,添加新的節點
添加機構C節點鏈接文件peers至已有節點,此步將peersC.txt
的節點P2P鏈接地址添加至./nodeA下的全部節點內:
./generator --add_peers ./meta/peersC.txt ./nodeA
備註:默認同一個羣組的其餘機構都要如此操做,如今仍是靜態的配置,新增的節點配上全部已有的節點就行,兩個節點的鏈接只用配一邊就已經能夠鏈接了,文檔裏推薦的全部所有配上,是爲了更穩妥,把兩邊都配上。
主要經過控制檯 addSealer 命令: 後面的節點id 是新加入機構C的兩個節點,經過機構C中meta 文件夾下的節點文件夾中的node.nodeid 文件獲取
如上操做,添加新節點成功
十一、重啓節點
bash ~/generator/nodeD/stop_all.sh
bash ~/generator/nodeD/start_all.sh
十二、在機構C的控制檯中,加入羣組A的配置,就能夠了
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"> <bean id="encryptType" class="org.fisco.bcos.web3j.crypto.EncryptType"> <constructor-arg value="0"/> <!-- 0:standard 1:guomi --> </bean> <bean id="groupChannelConnectionsConfig" class="org.fisco.bcos.channel.handler.GroupChannelConnectionsConfig"> <property name="allChannelConnections"> <list> <bean id="group1" class="org.fisco.bcos.channel.handler.ChannelConnections"> <property name="groupId" value="1" /> <property name="connectionsStr"> <list> <value>172.27.16.5:20200</value> <value>172.27.16.5:20201</value> </list> </property> </bean> </list> </property> </bean> <bean id="channelService" class="org.fisco.bcos.channel.client.Service" depends-on="groupChannelConnectionsConfig"> <property name="groupId" value="1" /> <property name="agencyName" value="fisco" /> <property name="allChannelConnections" ref="groupChannelConnectionsConfig"></property> </bean> </beans>
在機構C控制檯進行共識測試,各個控制檯的輸出共識結果相同
補充:若是是外網狀況的部署
一、創世區塊的結構group 配置以下
二、其餘節點配置以下
依照上述操做,能夠實現不一樣網絡環境下,完成實際聯盟鏈部署。