簡體   English   中英

Hyperledger Fabric 從 levelDB 切換到 couchDB

[英]Hyperledger fabric switching from levelDB to couchDB

我在從 levelDB 切換到 couchDB 作為 state 數據庫時遇到問題。 我正在使用超級賬本示例存儲庫中的測試網絡,並且我已經編輯了 docker 文件夾內的 docker docker-compose-couch.yaml文件和core.yaml文件夾內的 core.Z6EEDC03A68A69933C463E674F2D7 文件。
這些都是我所做的所有更改,但是當我啟動網絡時,它仍然使用 leveldb。
Starting nodes with CLI timeout of '5' tries and CLI delay of '3' seconds and using database 'leveldb'

核心.yaml:

ledger:

  blockchain:

  state:
    # stateDatabase - options are "goleveldb", "CouchDB"
    # goleveldb - default state database stored in goleveldb.
    # CouchDB - store state database in CouchDB
    stateDatabase: CouchDB
    # Limit on the number of records to return per query
    totalQueryLimit: 100000
    couchDBConfig:
       # It is recommended to run CouchDB on the same server as the peer, and
       # not map the CouchDB container port to a server port in docker-compose.
       # Otherwise proper security must be provided on the connection between
       # CouchDB client (on the peer) and server.
       couchDBAddress: 127.0.0.1:5984
       # This username must have read and write authority on CouchDB
       username: ${CouchDbUser}
       # The password is recommended to pass as an environment variable
       # during start up (eg CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD).
       # If it is stored here, the file must be access control protected
       # to prevent unintended users from discovering the password.
       password: ${CouchDbPw}
       # Number of retries for CouchDB errors
       maxRetries: 3
       # Number of retries for CouchDB errors during peer startup.
       # The delay between retries doubles for each attempt.
       # Default of 10 retries results in 11 attempts over 2 minutes.
       maxRetriesOnStartup: 10
       # CouchDB request timeout (unit: duration, e.g. 20s)
       requestTimeout: 35s
       internalQueryLimit: 1000
       maxBatchUpdateSize: 1000
       warmIndexesAfterNBlocks: 1
       createGlobalChangesDB: false
       cacheSize: 64

碼頭工人撰寫沙發。yaml:

# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#

version: '2'

networks:
  test:

services:
  couchdb0:
    container_name: couchdb0
    image: couchdb:3.1.1
    # Populate the COUCHDB_USER and COUCHDB_PASSWORD to set an admin user and password
    # for CouchDB.  This will prevent CouchDB from operating in an "Admin Party" mode.
    environment:
      - COUCHDB_USER=${CouchDbUser}
      - COUCHDB_PASSWORD=${CouchDbPw}
    # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
    # for example map it to utilize Fauxton User Interface in dev environments.
    ports:
      - "5984:5984"
    networks:
      - test

  peer0.org1.example.com:
    environment:
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
      # The CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME and CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD
      # provide the credentials for ledger to connect to CouchDB.  The username and password must
      # match the username and password set for the associated CouchDB.
      - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=${CouchDbUser}
      - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=${CouchDbPw}
    depends_on:
      - couchdb0

  couchdb1:
    container_name: couchdb1
    image: couchdb:3.1.1
    # Populate the COUCHDB_USER and COUCHDB_PASSWORD to set an admin user and password
    # for CouchDB.  This will prevent CouchDB from operating in an "Admin Party" mode.
    environment:
      - COUCHDB_USER=${CouchDbUser}
      - COUCHDB_PASSWORD=${CouchDbPw}
    # Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
    # for example map it to utilize Fauxton User Interface in dev environments.
    ports:
      - "7984:5984"
    networks:
      - test

  peer0.org2.example.com:
    environment:
      - CORE_LEDGER_STATE_STATEDATABASE=CouchDB
      - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb1:5984
      # The CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME and CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD
      # provide the credentials for ledger to connect to CouchDB.  The username and password must
      # match the username and password set for the associated CouchDB.
      - CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=${CouchDbUser}
      - CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=${CouchDbPw}
    depends_on:
      - couchdb1

唯一正在運行的 docker 容器是一個排序節點和兩個對等節點。

編輯:我剛剛在一個全新的測試網絡上做了同樣的步驟,它仍然使用 leveldb 作為 state 數據庫

Starting nodes with CLI timeout of '5' tries and CLI delay of '3' seconds and using database 'leveldb' with crypto from 'cryptogen'
LOCAL_VERSION=2.3.0
DOCKER_IMAGE_VERSION=2.3.0
/run/media/jonas/DATA/hyperledger/network with couchdb/fabric-samples/bin/cryptogen
Generate certificates using cryptogen tool
Create Org1 Identities
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org1.yaml --output=organizations
org1.example.com
+ res=0
Create Org2 Identities
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-org2.yaml --output=organizations
org2.example.com
+ res=0
Create Orderer Org Identities
+ cryptogen generate --config=./organizations/cryptogen/crypto-config-orderer.yaml --output=organizations
+ res=0
Generate CCP files for Org1 and Org2
/run/media/jonas/DATA/hyperledger/network with couchdb/fabric-samples/bin/configtxgen
Generating Orderer Genesis block
+ configtxgen -profile TwoOrgsOrdererGenesis -channelID system-channel -outputBlock ./system-genesis-block/genesis.block
2020-12-19 22:35:49.942 CET [common.tools.configtxgen] main -> INFO 001 Loading configuration
2020-12-19 22:35:49.949 CET [common.tools.configtxgen.localconfig] completeInitialization -> INFO 002 orderer type: etcdraft
2020-12-19 22:35:49.949 CET [common.tools.configtxgen.localconfig] completeInitialization -> INFO 003 Orderer.EtcdRaft.Options unset, setting to tick_interval:"500ms" election_tick:10 heartbeat_tick:1 max_inflight_blocks:5 snapshot_interval_size:16777216 
2020-12-19 22:35:49.949 CET [common.tools.configtxgen.localconfig] Load -> INFO 004 Loaded configuration: /run/media/jonas/DATA/hyperledger/network with couchdb/fabric-samples/test-network/configtx/configtx.yaml
2020-12-19 22:35:49.958 CET [common.tools.configtxgen] doOutputBlock -> INFO 005 Generating genesis block
2020-12-19 22:35:49.958 CET [common.tools.configtxgen] doOutputBlock -> INFO 006 Creating system channel genesis block
2020-12-19 22:35:49.958 CET [common.tools.configtxgen] doOutputBlock -> INFO 007 Writing genesis block
+ res=0
Creating network "net_test" with the default driver
Creating volume "net_orderer.example.com" with default driver
Creating volume "net_peer0.org1.example.com" with default driver
Creating volume "net_peer0.org2.example.com" with default driver
Creating peer0.org2.example.com ... done
Creating peer0.org1.example.com ... done
Creating orderer.example.com    ... done
CONTAINER ID        IMAGE                               COMMAND             CREATED             STATUS                  PORTS                              NAMES
75af3bf30961        hyperledger/fabric-peer:latest      "peer node start"   1 second ago        Up Less than a second   0.0.0.0:7051->7051/tcp             peer0.org1.example.com
c01a523aebf2        hyperledger/fabric-orderer:latest   "orderer"           1 second ago        Up Less than a second   0.0.0.0:7050->7050/tcp             orderer.example.com
6cc15482999b        hyperledger/fabric-peer:latest      "peer node start"   1 second ago        Up Less than a second   7051/tcp, 0.0.0.0:9051->9051/tcp   peer0.org2.example.com

根據文檔https://hyperledger-fabric.readthedocs.io/en/release-2.3/couchdb_as_state_database.html

The database cannot be converted at a later time.

我剛剛通過使用帶有 ./network.sh up 命令的 -s 標志找到了我的問題的解決方案。

/network.sh up -s couchdb

我不確定這是否是啟動 CouchDB 的有意方式,或者它是否應該在將其定義為 core.yaml 文件中的默認 state 數據庫時自動啟動。 但這絕對解決了我的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM