peer节点的主要配置文件为core.yaml,接下来我们以sampleconfig/core.yaml为例进行注释。
core.yaml文件分为几大section:Peer section(节`点配置),VM section(链码运行环境配置),chaincode section(链码配置),ledger section(账本配置),operations section(操作服务器),metrics section(度量配置)。
Peer section(节点配置)
###############################################################################
#
# Peer section
#
###############################################################################
peer:
# 指定peer节点 id,并在命名docker资源时使用
id: jdoe
# 指定网络ID,并在命名docker资源时使用。
networkId: dev
# 侦听本地网络接口上的地址。默认监听所有网络接口
listenAddress: 0.0.0.0:7051
# 此peer节点用于侦听入站链码连接的端点。
# 如果这被注释掉,则侦听地址被选择为具有端口7052的对等地址(如下所示)
# chaincodeListenAddress: 0.0.0.0:7052
# 此peer的链码端点用于连接到peer。如果没有指定,则选择chaincodeListenAddress地址。
# 如果未指定chaincodeListenAddress,则选择(如下所示)peer地址
# 如果指定的peer地址无效,则无论peer地址自动检测值如何,它都将返回到自动检测的IP(本地IP)。
# chaincodeAddress: 0.0.0.0:7052
# 当作为peer配置时,它表示同一组织内作为联系其他节点的端点。关于联系其他组织的peer节点,详情请看gossip中externalEndpoint。
# 当用作CLI配置时,这意味着这个peer节点可作为交互使用
address: 0.0.0.0:7051
# peer节点是否通过编程的方式自动探测对外服务绑定的地址。这种情况对于docker容器非常有用
# 设置为true时,将覆盖peer地址
addressAutoDetect: false
# peer节点的 gateway网关 服务设置(2.4新增内容).
gateway:
# 是否对该peer启用网关
enabled: true
# 背书超时是网关在向客户端返回超时错误之前等待其他背书对等方响应的时间。
endorsementTimeout: 30s
# dialTimeout是网关等待连接到其他网络节点的持续时间。
dialTimeout: 2m
# peer服务器和客户端的keepalive设置
keepalive:
# Interval是一个持续时间,如果服务器没有看到来自客户端的任何活动
# 则会ping客户端以查看其是否处于活动状态
interval: 7200s
# 等待响应超时时间
timeout: 20s
# MinInterval是服务器和客户端ping之间允许的最小时间。
# 如果客户端频繁地发送ping,对等服务器将断开它们的连接
minInterval: 60s
# 用于与其他peer节点通信的客户端设置
client:
# Interval是ping到peer节点之间的时间。
# 这必须大于或等于对等节点指定的最小间隔
interval: 60s
# 等待响应超时时间
timeout: 20s
# Gossip 相关设置
gossip:
# 节点启动后默认连接的初始节点
# 这是该peer节点在启动时可以联系到的其他peer节点的列表
# 注意: 此处的端点必须是同一组织中peer节点的端点,
# 因为peer将拒绝连接到这些端点,除非是与peer位于同一组织。
bootstrap: 127.0.0.1:7051
# 注意:orgLeader和useLeaderElection参数是互斥的。
# 将两者设置为true将导致peer的终止,因为这是未定义状态。
# 如果对等体配置为useLeaderElection=false,请确保组织中至少有一个peer的orgLeader设置为true
# 是否选用动态算法来动态选举leader
# 其中leader是与orderer服务建立连接的peer,并使用交付协议从orderer服务中获取block
useLeaderElection: false
# 静态地将该peer定义为组织“领导者”,这意味着当前peer将保持与orderer服务的连接,
# 并在其自身组织中的peer之间传播块。
# 一个组织中的多个peer或所有peer可以被配置为组织领导者,以便它们都直接从订购服务中提取块。
orgLeader: true
# 成员跟踪轮询的间隔
membershipTrackerInterval: 5s
# 覆盖peer发布到其组织中其端点。
# 对于其他组织中的peer,请参见“externalEndpoint”
endpoint:
# 内存中存储的最大块数
maxBlockCountToStore: 10
# 连续消息推送之间的最大时间(单位:毫秒)超过则触发,转发给其它节点
maxPropagationBurstLatency: 10ms
# 能缓存的最大消息数量,若超过则推送消息给其他peer节点
maxPropagationBurstSize: 10
# 将消息推送到远程peer节点的次数
propagateIterations: 1
# 选择将消息推送到的peer节点的数量
propagatePeerNum: 3
# 拉取消息的时间间隔(单位:秒)
# 必须大于 digestWaitTime + responseWaitTime
pullInterval: 4s
# 拉取消息的peer节点数量
pullPeerNum: 3
# Peer节点拉取状态信息消息的周期(单位:秒)
requestStateInfoInterval: 4s
# 将状态信息消息推送到peer节点的周期(单位:秒)
publishStateInfoInterval: 4s
# 状态信息消息可以保存直到过期的超时时间
stateInfoRetentionInterval:
# Alive messages包含启动证书的时间(单位:秒)
publishCertPeriod: 10s
# 是否应该跳过验证区块信息(默认为false)
skipBlockVerification: false
# gRPC连接拨号的超时时间(单位:秒)
dialTimeout: 3s
# 建立连接超时时间(单位:秒)
connTimeout: 2s
# 接收消息的缓冲区大小
recvBuffSize: 20
# 发送消息的缓冲区大小
sendBuffSize: 200
# 处理摘要信息前的等待时间(单位:秒)应略小于requestWaitTime
digestWaitTime: 1s
# 处理移除nonce数据之前等待的时间(单位:毫秒)应略大于digestWaitTime
requestWaitTime: 1500ms
# 结束拉取数据处理前的等待时间(单位:秒)
responseWaitTime: 2s
# 心跳检查间隔时间(单位:秒)
aliveTimeInterval: 5s
# 心跳消息的超时时间 (单位:秒)