[英]Does the port numbers needs to be changed when changing from leveldb to couchdb in Hyperledger-Fabric
[英]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.