Fabric在已有組織中增加節(jié)點

fabric網(wǎng)絡在創(chuàng)建時就已經(jīng)確定了初始的節(jié)點數(shù)量,而在實際應用場景中可能會需要在某個組織中動態(tài)增加節(jié)點。這里以balance-transfer v1.0為例(2 Org,4 Peer),介紹如何在org1中加入第3個peer節(jié)點。

一、追加新節(jié)點的身份信息
首先需要在組織org1的MSP目錄中追加新節(jié)點的證書和私鑰信息,主要是用到cryptogen工具(v1.1.0以上版本)

1.修改cryptogen.yaml文件(或者直接新建一個文件)中Template字段里的count參數(shù),設置為需要該組織中存在的節(jié)點總數(shù),可一次增加多個節(jié)點。

這里只在org1加入一個節(jié)點,所以cryptogen.yaml文件修改部分如下:

PeerOrgs:
  - Name: Org1
    Domain: org1.example.com
    CA:
       Hostname: ca 
    Template:
      Count: 3
      SANS:
        - "localhost"
    Users:
      Count: 1

2.執(zhí)行extend命令完成追加操作
在artifacts/channel目錄下執(zhí)行:

./cryptogen extend --config=./cryptogen.yaml
注:--config參數(shù)應以實際情況下配置文件的名稱及路徑為準

二、編寫新節(jié)點的docker配置文件
接下來需要編寫docker配置文件用于啟動新節(jié)點,內(nèi)容較為簡單,只需要在已有節(jié)點的配置上稍作修改即可,注意避免容器端口的沖突。

這里我將新節(jié)點的配置文件命名為new-peer.yaml,放置于artifacts目錄下,以下是文件內(nèi)容:

version: '2'

services:

  peer2.org1.example.com:
    container_name: peer2.org1.example.com
    extends:
      file:   base.yaml
      service: peer-base
    environment:
      - CORE_PEER_ID=peer2.org1.example.com
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_ADDRESS=peer2.org1.example.com:7051
    ports:
      - 7151:7051
      - 7153:7053
    volumes:
        - ./channel/crypto-config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/:/etc/hyperledger/crypto/peer

啟動新節(jié)點容器,在配置文件所在目錄下執(zhí)行:

docker-compose -f new-peer.yaml up -d
三、修改網(wǎng)絡配置文件
網(wǎng)絡配置文件network-config.json用于幫助應用程序獲取網(wǎng)絡節(jié)點的地址等信息,是app與節(jié)點通信的關鍵,所以需要在該配置文件中增加新節(jié)點的信息。
注:balance-transfer 1.1版本后已改為network-config.js文件。

在json文件的org1部分的peers字段后添加"peer3"的信息,注意ip和端口等信息需要與上述docker配置文件中保持一致,內(nèi)容如下:

"peer3": {
    "requests": "grpcs://localhost:7151",
    "events": "grpcs://localhost:7153",
    "server-hostname": "peer2.org1.example.com",
    "tls_cacerts": "../artifacts/channel/crypto-config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/tls/ca.crt"
}

四、將新節(jié)點加入通道
此時新增節(jié)點已經(jīng)加入了區(qū)塊鏈網(wǎng)絡,但并沒有加入某一個channel,所以是沒有賬本數(shù)據(jù)的。需要發(fā)送請求將其加入channel:

curl -s -X POST \
    http://localhost:4000/channels/mychannel/peers \
    -H "authorization: Bearer $ORG1_TOKEN" \
    -H "content-type: application/json" \
    -d '{
    "peers": ["peer3"]
  }'

請求中,$ORG1_TOKEN是通過注冊獲取的org1的token值,"peer3"是在網(wǎng)絡配置文件中設置的新節(jié)點的別名。

加入通道成功后,查看節(jié)點日志可以發(fā)現(xiàn)新節(jié)點開始從其他節(jié)點同步區(qū)塊:

docker logs peer2.org1.example.com
五、安裝鏈碼
加入channel后,peer3已經(jīng)可以參與記賬,但是不能指定該節(jié)點進行查詢或交易,這時候需要發(fā)起請求安裝chaincode:

curl -s -X POST \
    http://localhost:$PORT/chaincodes \
    -H "authorization: Bearer $ORG1_TOKEN" \
    -H "content-type: application/json" \
    -d '{
    "peers": ["peer3"],
    "chaincodeName":"mycc",
    "chaincodePath":"github.com/example_cc",
    "chaincodeVersion":"v0"
  }'

安裝成功后指定新節(jié)點進行查詢或交易操作,會自動生成該節(jié)點的chaincode鏡像,并啟動容器運行chaincode。在已有組織中新加節(jié)點的操作到這里就全部完成了!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容