fabric資料持久化
背景
fabric多機kafka部署完畢,但是每次容器銷燬後,網路和資料就都不存在了。對於生產環境來說,這是無法接受的,所以就要考慮資料持久化的問題了。
方案
綜合fabric官方教程(https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html#a-note-on-data-persistence),思路如下:
- 在peer容器的配置檔案中新增如下命令:
volumes:
- /var/hyperledger/peer0:/var/hyperledger/production
- 在couch容器的配置中新增如下命令:
volumes:
- /var/hyperledger/couchdb0:/opt/couchdb/data
注意:
/var/hyperledger/peer*
和/var/hyperledger/couchdb*
要在本地手動建立
執行./scripts/script.sh mychannel
,結果發現peer和couch容器中的資料的確備份到了本地目錄。將所有容器銷燬重新啟動(啟動後不執行./scripts/script.sh mychannel
),然後執行query和peer(此處我是使用sdk執行兩種命令),結果發現query成功,但是invoke失敗了。提示錯誤如下:
Need to retry because process failed = kafka server: The requested offset is outside the range of offsets maintained by the server for the given topic/partition.
執行docker logs orderer0.example.com
列印orderer日誌,發現如下錯誤:
The requested offset is outside the range of offsets maintained by the server for the given topic/partition.
在網上搜羅一番後,發現一篇部落格中提到過fabric資料持久化(http://www.solutionscan.org/42524-docker)。問題主要是沒有將kafka的相關資料備份到本地,故操作如下:
- 在kafka配置檔案中新增如下命令:
environment:
- KAFKA_LOG.DIRS=/opt/kafka/kafka-logs
volumes:
- /var/hyperledger/kafka/kafka-logs:/opt/kafka/kafka-logs
注意:/var/hyperledger/kafka/kafka-logs目錄要在本地先建立
然後將所有容器全部銷燬,刪除本地/var/hyperledger目錄下的資料(我是將該目錄全部刪除,然後重新建立),啟動所有容器,然後執行./scripts/script.sh mychannel
(kafka資料之前沒有備份,所以需要重頭來過);執行invoke和query命令都正常。銷燬並重啟所有容器,不執行./scripts/script.sh mychannel
,在sdk中執行query和invoke完全正常。
相關文章
- Redis資料持久化—RDB持久化與AOF持久化Redis持久化
- Docker資料持久化Docker持久化
- Redis 資料持久化Redis持久化
- 【Unity】資料持久化PlayerPrefsUnity持久化
- Redis的資料持久化Redis持久化
- Docker之 資料持久化Docker持久化
- 資料的序列化&持久化持久化
- 鴻蒙資料持久化sqlite鴻蒙持久化SQLite
- 可持久化資料結構持久化資料結構
- Docker --volume-資料持久化Docker持久化
- 詳解 ZooKeeper 資料持久化持久化
- iOS資料持久化設計iOS持久化
- 可持久化資料結構1持久化資料結構
- Milvus 2.0 資料插入與持久化持久化
- Kubernetes 持久化資料儲存 StorageClass持久化
- iOS資料持久化儲存-CoreDataiOS持久化
- HarmonyOS資料管理與應用資料持久化(一)持久化
- 鴻蒙首選項資料持久化鴻蒙持久化
- redis原始碼分析(五):資料持久化Redis原始碼持久化
- rabbitmq 如何在 docker 下做資料持久化?MQDocker持久化
- Redis——Redis用作資料庫(持久化/RDB/AOF)Redis資料庫持久化
- 在 React-Native 中持久化 redux 資料React持久化Redux
- Room-資料持久化儲存(入門)OOM持久化
- MVVM的資料持久化(一)——ROOM的整合MVVM持久化OOM
- MVVM的資料持久化(二)——ROOM的使用MVVM持久化OOM
- Docker系列教程14-Docker資料持久化Docker持久化
- UI(十六)資料持久化和歸檔NSCoding序列化UI持久化
- kubernetes資料持久化PV-PVC詳解(一)持久化
- kubernetes資料持久化StorageClass動態供給(二)持久化
- Redis系列2:資料持久化提高可用性Redis持久化
- 認證授權:IdentityServer4 - 資料持久化IDEServer持久化
- 【資料結構】可持久化線段樹初步資料結構持久化
- PB級資料持久化快取系統——lest持久化快取
- 1.05 docker的持久化儲存和資料共享Docker持久化
- Flutter持久化儲存之資料庫儲存Flutter持久化資料庫
- Docker的持久化儲存和資料共享(四)Docker持久化
- Docker最全教程——資料庫容器化之持久儲存資料(十一)Docker資料庫
- Java資料持久層Java