第七章 手動部署Fisco Bcos 區塊鏈並完成新增羣組,在原有羣組中新增機構

鑑於筆者之前各大博客教程都有不少人提問,早期創建一個技術交流羣,裏面技術體系可能比較雜,想了解相關區塊鏈開發,技術提問,請加QQ羣:538327407html


目標

一、新增羣組搭建完整聯盟鏈java

二、根據羣組新增機構node

三、新增羣組,將原有機構加入git


1、前提準備:

java 環境github

詳細能夠參考前面幾章的操做。web

2、正式操做

 官方參考文檔:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/enterprise_quick_start.html#ac2spring

 

畫了一張圖,大體說明操做。bash

 

 

 

 

 

 

 

 

一、創世機構生成鏈證書,dir_chain_ca 文件複製給各個機構

二、在各個機構的的generator 目錄下 執行命令生成個各自的機構證書

如下三個命令 要在各自的操做界面操做網絡

機構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目錄下

上圖爲創世區塊的meta 文件夾,裏面還收集了其餘節點的證書。

普通機構,只有本身的節點證書、還有其餘羣組的peers.txt 的文件,以及羣組配置文件、鏈證書、本身的機構證書等。

 

四、修改各個機構的node_deployment.ini文件

p2p_ip 和rpc_ip 修改成 內網地址

前提:內網端口等要打開

五、生成各個機構的節點證書和p2p 鏈接信息文件

機構A:./generator --generate_all_certificates ./agencyA_node_info
機構B:./generator --generate_all_certificates ./agencyB_node_info

 

須要用的上面node_deployment.ini,及機構meta文件夾下的機構證書與私鑰

六、各自機構peers.txt 互相傳遞

機構生成節點時須要指定其餘節點的節點P2P鏈接地址,所以,A機構需將節點P2P鏈接地址文件發給其餘機構,一樣的其餘機構都要把peers[自定義].txt copy 給除本身外的機構/meta 文件夾下

七、創世區塊修改羣組

修改:./conf/group_genesis.ini

 

配置group_id,以及p2p_ip,rpc_ip 

八、此步會根據機構A的meta文件夾下配置的節點證書,生成group_genesis.ini配置的羣組創世區塊

./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

若是出現端口占用,這麼解決

 

(1).根據端口查找進程

sudo lsof -i:[port]

 

(2).根據PID殺掉進程

sudo kill [PID]

 

從新啓動

bash ./nodeA/start_all.sh

 

查看:

進程:ps -ef | grep fisco

查看節點:tail -f ./node*/node*/log/log* | grep +++

出現+++ 爲節點正常共識

 

 


 


生成新的機構

(1) 生成機構證書

(2)copy 機構證書到meta 目錄,並將 /agency*_node_info/cert*.crt 放到對應的創世區塊的機構/meta/

同時包括p2p鏈接peers.txt


(3) 修改 node_deployment.ini 文件

下載控制檯

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

 

新建羣組(將原有機構A加入--》到機構C爲創世區塊的羣組2中)

前提條件:完成基礎安裝

下載

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 配置以下

 

二、其餘節點配置以下

 

 依照上述操做,能夠實現不一樣網絡環境下,完成實際聯盟鏈部署。

相關文章
相關標籤/搜索