Hyperledger fabric : 單機多節點kafka模式的數據持久化

fabric數據持久化:在fabric部署區塊鏈網絡完成後,每次容器docker一銷燬,之前區塊鏈網絡上的所有數據也隨之銷燬。數據持久化實現了docker關閉後數據的恢復功能。

因爲單機比較容易測試,先記錄單機多節點kafka模式下的數據持久化操作步驟,簡而言之就是,每個容器的數據都要映射到物理機。

參考了https://www.cnblogs.com/willaty/p/10077531.html這篇博文

測試用例是fabric自帶的e2e_cli

對docker-compose文件操作

1. 在zookeeper相關配置中添加:

volumes:
  - /var/hyperledger/zk${num}/data:/data
  - /var/hyperledger/zk${num}/datalog:/datalog

 其中,/var/hyperledger/zk2/datalog是物理機中真實存在的目錄

2. 在kafka相關配置中添加:

volumes:
  - /var/hyperledger/kafka/kafka-logs0:/tmp/kafka-logs

3.orderer

    volumes:
      - /var/hyperledger/orderer:/var/hyperledger/production

4. peer:

    volumes:
      - /var/hyperledger/peer${num}:/var/hyperledger/production

5.couchdb:

    volumes:
      - /var/hyperledger/couchdb1:/opt/couchdb/data

測試過程如下:

1. 正常啓動區塊鏈網絡:

./generateArtifacts.sh mychannel
sudo docker-compose -f docker-compose-cli.yaml up -d
sudo docker exec -it cli bash
./scripts/script.sh mychannel

2.執行invoke、query操作

3.查看/var/hyperledger文件,確實有備份的容器數據

4.關閉docker容器

sudo docker rm -f $(sudo docker ps -aq)

注意: 不需要把channel-artifacts和crypto-config兩個文件也刪掉

5.重啓docker

sudo docker -compose -f docker-compose-cli.yaml up -d

6.進入容器

sudo docker exec -it cli bash

7.直接進行invoke,query操作,發現可行。也就是跳過了鏈碼安裝、部署、實例化等等操作

8.測試完成。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章