从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析
Posted 区块链部落
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析相关的知识,希望对你有一定的参考价值。
黎跃春
孔壹学院创始人兼CEO
从零到壹学习Hyperledger Fabric为一个系列,一共15讲,包括搭建Hyperledger Fabric环境、Hyperledger Fabric Samples安装、建立第一个网络、手动配置网络实现及测试Chaincode、编写第一个应用等。今天我们将为大家介绍从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析。话不多说,马上开启我们的Hyperledger Fabric学习之旅。
课程学习,添加莉莉微信(kongyixueyuan)。
Peer节点默认配置文件读取路径为$FABRIC_CFG_PATH/config/core.yaml
可以通过命令查看$FABRIC_CFG_PATH具体路径:
$ echo $FABRIC_CFG_PATH
在结构上,core.yaml文件中一般包括 logging , peer , vm , chaincode , ledger 五大部分
logging部分
说明
主要定义Peer服务的日志记录级别和输出日志消息的格式
支持日志级别包括critical 、error 、warning 、notice 、info 、debug 等。一般情况下,级
别越低,则输出的调试信息越丰富
除了可以设置全局的默认值为info 外,还可以细致指定一些模块( cauthdsl 、gossip 、
ledger 、msp 、policies 、grpc )的输出日志级别
各配置项的含义
logging:
#全局的默认日志级别
level: info
# 模块的日志级别, 覆盖全局配置
cauthdsl: warning
gossip: warning
grpc: error
ledger: info
msp: warning
policies: warning
peer:
gossip: warning
# 输出日志的格式
format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
Peer部分
说明
包括了许多跟服务直接相关的核心配置,内容也比较多,包括通用配置、gossip 、events 、tis 等多个配置部分
通用部分
peer:
id: jdoe # 节点ID
networkId: dev # 网络ID
listenAddress: 0.0.0.0:7051 # 节点在监听的本地网络接口地址
# chaincodeAddress: 0.0.0.0:7052 # 链码容器连接时的监听地址
address: 0.0.0.0:7051 # 节点对外的服务地址
addressAutoDetect: false # 是否自动探测对外服务地址
gomaxprocs: -1 # Go 进程数限制
keepalive: # Peer服务器与Client的设置
minInterval: 60s
client:
interval: 60s
timeout: 20s
deliveryClient:
interval: 60s
timeout: 20s
authentication:
timewindow: 15m
fileSystemPath: /var/hyperledger/production # 本地数据存放路径
mspConfigPath: msp # MSP 的本地路径
localMspId: DEFAULT # Peer 所关联的MSP的ID
deliveryclient:
reconnectTotalTimeThreshold: 3600s
localMspType: bccsp
validatorPoolSize:
gossip部分
主要是负责节点之间通过gossip 消息进行P2P 通信
gossip:
bootstrap: 127.0.0.1:7051 # 启动节点后所进行gossip 连接的初始节点
useLeaderElection: true # 是否动态选举代表节点
orgLeader: false # 是否指定本节点为组织代表节点
endpoint: # 本节点在组织内的gossip id
maxBlockCountToStore: 100 # 保存到内存中的区块个数上限
maxPropagationBurstLatency: 10ms # 保存消息的最大时间,超过则触发转发给其它节点
maxPropagationBurstSize: 10 # 保存的最大消息个数,超过则触发转发给其它节点
propagateIterations: 1 # 消息转发的次数
propagatePeerNum: 3 # 推送消息给指定个数的节点
pullInterval: 4s # 拉取消息的时间间隔
pullPeerNum: 3 # 从指定个数的节点拉取消息
requestStateInfoInterval: 4s # 从节点拉取状态信息( state 工nfo )消息的问隔
publishStateInfoInterval: 4s # 向其他节点推动状态信息消息的问隔
stateInfoRetentionInterval: # 状态信息消息的超时时间
publishCertPeriod: 10s # 启动后在心跳消息中包括证书的等待时间
skipBlockVerification: false # 是否不对区块消息进行校验,默认为false
dialTimeout: 3s # gRPC 连接拨号的超时
connTimeout: 2s # 建立连接的超时
recvBuffSize: 20 # 收取消息的缓冲大小
sendBuffSize: 200 # 发送消息的缓冲大小
digestWaitTime: 1s # 处理摘要数据的等待时间
requestWaitTime: 1s # 处理nonce 数据的等待时间
responseWaitTime: 2s # 终止拉取数据处理的等待时间
aliveTimeInterval: 5s # 定期发送Alive 心跳消息的时间间隔
aliveExpirationTimeout: 25s # Alive 心跳消息的超时时间
reconnectInterval: 25s # 断线后重连的时间间隔
externalEndpoint: # 节点被组织外节点感知时的地址
election:
startupGracePeriod: 15s # 代表成员选举等待的时间
membershipSampleInterval: 1s # 检查成员稳定性的采样间隔
leaderAliveThreshold: 10s # Peer 尝试进行选举的等待超时
leaderElectionDuration: 5s # Peer 宣布自己为代表节点的等待时间
pvtData:
pullRetryThreshold: 60s # 对应于给定块的私有数据的最大持续时间
transientstoreMaxBlockRetention: 1000
pushAckTimeout: 3s # 等待来自每个对等点的确认的最大时间
events部分
events:
address: 0.0.0.0:7053 # 本地监昕的地址,默认在所有网络接口上进行监听,服务端口为7053;
buffersize: 100 # 最大进行缓冲的消息数,超过则向缓冲中发送事件消息会被阻塞
timeout: 10ms # 当缓冲已满情况下,往缓冲中发送消息的超时。小于0 的值,表示直接丢弃消息; 0 值表示阻塞直到发出;大于0 的值表示阻塞尝试直到超时,超时后还不能发出则丢弃
timewindow: 15m
keepalive:
minInterval: 60s
tls部分
当tls 检查启用时,指定身份验证证书、签名私钥、信任的根CA 证书,以及校验的主机名
tls:
enabled: false # 默认不开启TLS 验证
clientAuthRequired: false
cert:
file: tls/server.crt # 本服务的身份验证证书, 公开可见, 访问者通过该证书进行验证
key:
file: tls/server.key # 本服务的签名私钥
rootcert:
file: tls/ca.crt # 信任的根CA的证书
clientRootCAs:
files:
- tls/ca.crt
clientKey:
file:
clientCert:
file:
BCCSP部分
BCCSP: # 加密库的配置
Default: SW
SW:
Hash: SHA2 # Hash 算法类型, 目前仅支持SHA2
Security: 256
FileKeyStore: # 本地私钥文件路径, 默认指向<mspConfigPath>/keystore
KeyStore:
profile部分
profile: # 是否启用Go 自带的profiling 支持进行调试
enabled: false
listenAddress: 0.0.0.0:6060
handlers部分
handlers: # 自定义处理
authFilters:
-
name: DefaultAuth
-
name: ExpirationCheck
decorators:
-
name: DefaultDecorator
VM部分
对链码运行环境的配置,目前主要支持Docker 容器
vm:
# Endpoint of the vm management system. For docker can be one of the following in general
# unix:///var/run/docker.sock
# http://localhost:2375
# https://localhost:2376
endpoint: unix:///var/run/docker.sock
# settings for docker vms
docker:
tls: # Docker Daemon 启用TLS 时相关证书配置
enabled: false
ca:
file: docker/ca.crt
cert:
file: docker/tls.crt
key:
file: docker/tls.key
attachStdout: false # 是否启用连接到标准输出
hostConfig: # Docker 相关的主机配置,包括网络配置、日志、内存等
NetworkMode: host # host 意味着链码容器直接使用所在主机的网络命名空间
Dns:
# - 192.168.0.1
LogConfig:
Type: json-file
Config:
max-size: "50m"
max-file: "5"
Memory: 2147483648
chaincode部分
与链码相关的配置选项
chaincode:
id: # 动态标记链码的信息,该信息会以标签形式写到链码容器
path:
name:
# 通用的本地编译环境,是一个Docker 镜像
builder: $(DOCKER_NS)/fabric-ccenv:$(ARCH)-$(PROJECT_VERSION)
pull: false
golang: # Go 语言的链码部署生成镜像的基础Docker 镜像
runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
dynamicLink: false
car: # car 格式的链码部署生成镜像的基础Docker 镜像
runtime: $(BASE_DOCKER_NS)/fabric-baseos:$(ARCH)-$(BASE_VERSION)
java: # 生成Java 链码容器时候的基础镜像信息
Dockerfile: |
from $(DOCKER_NS)/fabric-javaenv:$(ARCH)-$(PROJECT_VERSION)
node:
runtime: $(BASE_DOCKER_NS)/fabric-baseimage:$(ARCH)-$(BASE_VERSION)
startuptimeout: 300s # 启动链码容器的超时
executetimeout: 30s # invoke 和initialize 命令执行超时
# There are 2 modes: "dev" and "net".
# In dev mode, user runs the chaincode after starting peer from
# command line on local machine.
# In net mode, peer will run chaincode in a docker container.
mode: net # 执行链码的模式
keepalive: 0 # Peer 和链码之间的心跳超时,小于或等于0 意味着关闭
system: # 系统链码的配置
cscc: enable
lscc: enable
escc: enable
vscc: enable
qscc: enable
# System chaincode plugins: in addition to being imported and compiled
# into fabric through core/chaincode/importsysccs.go, system chaincodes
# can also be loaded as shared objects compiled as Go plugins.
# See examples/plugins/scc for an example.
# Like regular system chaincodes, plugins must also be white listed in the
# chaincode.system section above.
systemPlugins:
# example configuration:
# - enabled: true
# name: myscc
# path: /opt/lib/myscc.so
# invokableExternal: true
# invokableCC2CC: true
# 链码容器日志相关配置
logging:
level: info
shim: warning
format: '%{color}%{time:2006-01-02 15:04:05.000 MST} [%{module}] %{shortfunc} -> %{level:.4s} %{id:03x}%{color:reset} %{message}'
ledger部分
账本相关的配置
ledger:
blockchain:
state: # 状态数据库配置
stateDatabase: goleveldb # 状态数据库类型
couchDBConfig: # 如果启用co u chdb 数据库, 配置连接信息
couchDBAddress: 127.0.0.1:5984
username:
password:
maxRetries: 3 # 出错后重试次数
maxRetriesOnStartup: 10 # 启动出错的重试次数
requestTimeout: 35s # 请求超时
queryLimit: 10000 # 每个查询的最大返回记录数
# Limit on the number of records per CouchDB bulk update batch
maxBatchUpdateSize: 1000
# Warm indexes after every N blocks.
# This option warms any indexes that have been
# deployed to CouchDB after every N blocks.
# A value of 1 will warm indexes after every block commit,
# to ensure fast selector queries.
# Increasing the value may improve write efficiency of peer and CouchDB,
# but may degrade query response time.
warmIndexesAfterNBlocks: 1
history:
# 是否启用历史数据库
enableHistoryDatabase: true
课程学习
添加莉莉老师微信kongyixueyuan
不要错过
从零到壹学习Hyperledger Fabric第六讲:添加Org组织到channel
更多文章,敬请期待
以上是关于从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析的主要内容,如果未能解决你的问题,请参考以下文章
《Flowable流程引擎从零到壹》引入日志框架和部署流程定义
《Flowable流程引擎从零到壹》引入日志框架和部署流程定义
《Flowable流程引擎从零到壹》引入日志框架和部署流程定义
2❤️Jenkins从零到壹❤️ :第一个maven构建项目(JAVA 小虚竹)