从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析

Posted 区块链部落

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析相关的知识,希望对你有一定的参考价值。

从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析

黎跃春

孔壹学院创始人兼CEO

        从零到壹学习Hyperledger Fabric为一个系列,一共15讲,包括搭建Hyperledger Fabric环境、Hyperledger Fabric Samples安装、建立第一个网络、手动配置网络实现及测试Chaincode、编写第一个应用等。今天我们将为大家介绍从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析。话不多说,马上开启我们的Hyperledger Fabric学习之旅。


课程学习,添加莉莉微信(kongyixueyuan)。

孔壹学院
从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析

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

从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析

从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析        

课程学习

添加莉莉老师微信kongyixueyuan

不要错过


课程学习方式

从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析

从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析 从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析


系列阅读

从零到壹学习Hyperledger Fabric第六讲:添加Org组织到channel

更多文章,敬请期待








以上是关于从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析的主要内容,如果未能解决你的问题,请参考以下文章

《Flowable流程引擎从零到壹》引入日志框架和部署流程定义

《Flowable流程引擎从零到壹》引入日志框架和部署流程定义

《Flowable流程引擎从零到壹》引入日志框架和部署流程定义

2❤️Jenkins从零到壹❤️ :第一个maven构建项目(JAVA 小虚竹)

2❤️Jenkins从零到壹❤️ :第一个maven构建项目(JAVA 小虚竹)

《Flowable流程引擎从零到壹》Flowable流程引擎介绍和实战项目初始化流程引擎实例