Hyperledger Fabric 应用实战(4)--配置文件orderer.yaml

1. 简介

orderer.yaml主要是为Orderer服务提供一些配置定义,与Peer服务类似,当Orderer节点启动时,会先从命令行获取参数、环境变量、和Orderer.yaml读取配置信息。通过docker去搭建一个Orderer服务,命令行默认是不带参数的,主要通过docker-compose 文件和orderer.yaml 去定义配置信息。docker-compose相当于环境变量,其优先级比较高,用来更灵活和个性化配置Orderer服务的配置。

2. 官方orderer.yaml学习

core.yaml主要包括General、FileLedger、Kafka、Debug、Operation、Metrics和Consensus八大部分。

2.1 General部分

peer部分保护与服务直接相关的核心配置

General:
    # 服务绑定的监听地址和端口
    ListenAddress: 127.0.0.1
    ListenPort: 7050

    # TLS设置  相关文件路径可以是绝对路径,或者是相对配置目录的相对路路径
    TLS:
      
        Enabled: false
         # 提供 TLS CA 为此节点生成的私钥的路径和文件名
        PrivateKey: tls/server.key
        # 提供 TLS CA 为该节点生成的公共证书(也称为签名证书)的路径和文件名
        Certificate: tls/server.crt
        # (应注释掉)此参数通常未设置以供正常使用。
        # 它是附加根证书的路径列表,用于在出站连接期间验证其他排序节点的证书。
        # 它可用于扩充每个通道配置的 MSP 中可用的 TLS CA 证书集。
        # 可信任的根CA证书
        RootCAs:
          - tls/ca.crt
        #入站连接需要客户端证书/双向TLS。
        ClientAuthRequired: false
        #如果启用了双向TLS,ClientRootCA将包含其他根证书列表用于验证客户端连接的证书。
        #它不需要设置,但可以用于扩充TLS CA证书集可从每个信道配置的MSP获得。
        ClientRootCAs:

    # 服务的保活设置
    Keepalive:
        # 客户机ping之间的最小允许时间(除非通过测试确定有必要,否则不应覆盖默认值)
        ServerMinInterval: 60s
        # 连接到客户机的ping之间的时间
        ServerInterval: 7200s
        # 服务器等待响应的超时时间
        ServerTimeout: 20s
        
    #由于所有节点应保持一致,建议MaxRecvMsgSize和MaxSendMsgSize的默认值保持为100MB
    #GRPC服务器和客户端可以接收的最大消息大小(字节)
    MaxRecvMsgSize: 104857600
    # Max message size in bytes the GRPC server and client can send
    # GRPC服务器和客户端可以发送的最大消息大小(字节)
    MaxSendMsgSize: 104857600

    # Raft模式下相关配置
    Cluster:

        # SendBufferSize 是缓冲区中的最大消息数。
        # 如果缓冲区已满,共识消息将被丢弃,交易消息就会被等待去释放。
        SendBufferSize: 10
        # 双向TLS认证时,作为客户端证书的文件路径
        ClientCertificate:
        # 双向TLS认证时,作为客户端私钥的文件路径
        ClientPrivateKey:
        
        # 以下4个属性要么一起设置,要么一起取消设置。
        # 如果设置了它们,那么order节点将使用单独的侦听器进行集群内通信。
        # 如果它们未设置,则使用常规Order侦听器。
        # 如果希望在面向客户机的侦听器和集群内侦听器上使用不同的TLS服务器证书,这非常有用。

        # 定义群集侦听连接的端口
        ListenPort: 
        ListenAddress:
        # 定义用于侦听集群内通信的IP
        # 双向TLS时候,服务端的TLS证书的文件位置
        ServerCertificate:
         # 双向TLS时候,服务端的TLS密钥的文件位置
        ServerPrivateKey:

    # Bootstrap method: 指定获取引导块系统通道的方法。
    # "file" - 包含文件块或系统通道的Config块的文件路径
    # "none" - 允许订购器启动,而无需系统频道配置  
    # 无系统通道必须为none
    BootstrapMethod: file

    # 在版本2.3版本以上,启用无配置通道,不需要填写
    BootstrapFile:

    # 排序节点的本地 MSP 的路径,必须在部署之前创建
    LocalMSPDir: msp

    # MSPID
    LocalMSPID: SampleOrg

    # Enable an HTTP service for Go "pprof" profiling as documented at:
    # https://golang.org/pkg/net/http/pprof
    # 开启影响性能
    Profile:
        Enabled: false
        Address: 0.0.0.0:6060

    # BCCSP配置BlockChain Crypto服务提供商。 无需关注
    BCCSP:
        #  - SW: a software based crypto provider SW: 一种基于软件加密提供程序
        #  - PKCS11: a CA hardware security module crypto provider. 硬件加密
        Default: SW

        # SW configures the software based blockchain crypto provider.
        SW:
            Hash: SHA2
            Security: 256
            FileKeyStore:
                KeyStore:

        # Settings for the PKCS#11 crypto provider (i.e. when DEFAULT: PKCS11)
        PKCS11:
            # Location of the PKCS11 module library
            Library:
            # Token Label
            Label:
            # User PIN
            Pin:
            Hash:
            Security:
            FileKeyStore:
                KeyStore:

 
    # 与客户端消息认证相关的配置
    Authentication:
        # 客户端和服务器时间差异范围
        TimeWindow: 15m


2.2 FileLedger部分

指定使用基于文件的账本类型时的相关配置

FileLedger:
    # 区块存储路径
    Location: /var/hyperledger/production/orderer

2.3 Kafka部分

Kafka:

   
    # Kafka未准备时,orderer的重试配置
    Retry:
        #创建新通道时,或重新加载现有通道时(对于刚刚重新启动的订购者),订购者将通过以下方式与Kafka集群交互:
        #1.它为对应于频道的Kafka分区创建一个Kafka制作人(作家)。
        #2.它使用该生产者向该分区发布no-op CONNECT消息
        #3.它为该分区创建一个Kafka消费者(读取器)。如果这些步骤中的任何一个失败,将每隔
        #<ShortInterval>总共<ShortTotal>,然后每隔
        #<LongInterval>,总计<LongTotal>,直到成功。
        #请注意,在成功完成上述所有步骤之前,订购者将无法写入或读取通道。

        ShortInterval: 5s # 重试时间间隔
        ShortTotal: 10m # 重试的总时间
        LongInterval: 5m  # 重试失败后再次发送重试的时间间隔
        LongTotal: 12h  # 重试的最长总时间
        # https://godoc.org/github.com/Shopify/sarama#Config
        # sarama网络超时设置
        NetworkTimeouts:
            DialTimeout: 10s
            ReadTimeout: 10s
            WriteTimeout: 10s
        # https://godoc.org/github.com/Shopify/sarama#Config
        # kafka leader 选取配置
        Metadata:
            RetryBackoff: 250ms
            RetryMax: 3
        # https://godoc.org/github.com/Shopify/sarama#Config
         # 向kafka发送消息的设置
        Producer:
            RetryBackoff: 100ms
            RetryMax: 3
        # https://godoc.org/github.com/Shopify/sarama#Config
        # 从kafka读取消息的设置
        Consumer:
            RetryBackoff: 2s

    Topic:
      
        # 备份数量
        ReplicationFactor: 3
 
    # 与kafka 交互 日志是否启用
    Verbose: false


    # Orderer连接到Kafka集群的TLS设置
    TLS:
 
      Enabled: false

      # orderer证明身份用的签名密钥
      PrivateKey:
        # As an alternative to specifying the PrivateKey here, uncomment the
        # following "File" key and specify the file name from which to load the
        # value of PrivateKey.
        #File: path/to/PrivateKey

      # kafka 身份证书
      Certificate:
        # As an alternative to specifying the Certificate here, uncomment the
        # following "File" key and specify the file name from which to load the
        # value of Certificate.
        #File: path/to/Certificate

      # 验证kafaka侧证书时的根CA证书
      RootCAs:
        # As an alternative to specifying the RootCAs here, uncomment the
        # following "File" key and specify the file name from which to load the
        # value of RootCAs.
        #File: path/to/RootCAs

    # 采用SASL/Plain 协议进行认证的相关配置
    SASLPlain:
      Enabled: false
      User:
      Password:
    # kafka版本号 defaults to 0.10.2.0
    Version:


2.4 Debug部分

Debug:

    # 广播请求的追踪路径  日志路径
    BroadcastTraceDir:

    # 交付请求的追踪路径  日志路径
    DeliverTraceDir:

2.5 operations部分

该部分主要设置运行时对外的RESTful管理服务。

Operations:
    # RESTful管理服务的监听地址,需要指定为特定网口地址
    ListenAddress: 127.0.0.1:8443

    # 接口的TLS相关设置
    TLS:
        # TLS enabled
        Enabled: false
        # 服务端使用证书文件路径
        Certificate:
        # 服务端使用私钥文件路径
        PrivateKey:
        # 是否开始客户端验证
        ClientAuthRequired: false
        # 信任的客户端根证书列表
        ClientRootCAs: []

2.6 metrics部分

metrics部分负责配置统计服务,和Peer类似。

metrics:
    # metrics provider is one of statsd, prometheus, or disabled
    # metrics provider是 statsd(推送模式)、prometheus(拉取模式) 或 disabled 之一
    provider: disabled
    statsd:
        # 网络类型:tcp 或 udp
        network: udp
        # 修改为外部statsd的服务地址
        address: 127.0.0.1:8125
        # 地缓存的计数器和仪表被推送到 statsd 的时间间隔
        writeInterval: 10s
        # 统计推送的前缀
        prefix: 

2.7 Admin部分

Admin 为orderer配置管理服务器端点

Admin:
    # 可以使用的 orderer 管理服务器地址(主机和端口)
    ListenAddress: 127.0.0.1:9443

    TLS:
        # TLS enabled
        Enabled: false
        # TLS CA 颁发的 orderer 签名证书的路径和文件名。
        Certificate:
        # TLS CA 发布的 orderer 私钥的路径和文件名。
        PrivateKey:
        # 此值必须设置为true。
        # 请注意,虽然 ordererAdmin端点上的所有操作都需要双向 TLS,
        # 但整个网络不需要使用双向 TLS。
        ClientAuthRequired: true
        # 管理客户端 TLS CA 根证书的路径和文件名
        ClientRootCAs: []

2.8 ChannelParticipation部分

Admin 为orderer提供了通道参与API配置, 通道参与使用管理服务的ListenAddress和TLS设置。

ChannelParticipation:
    # Channel participation API is enabled.
    # 启用通道参与API
    Enabled: false

    # The maximum size of the request body when joining a channel.
    # 加入通道时请求主体的最大大小
    MaxRequestBodySize: 1 MB

2.9 Consensus部分

共识的日志存储配置

Consensus:

    #这里允许的键值对取决于共识插件。对于etcd/raft,我们使用以下选项:

    # 预写日志的路径,每个通道独占一个同名的子目录
    WALDir: /var/hyperledger/production/orderer/etcdraft/wal
    # 快照文件的路径
    SnapDir: /var/hyperledger/production/orderer/etcdraft/snapshot

3. freerent orderer.yaml配置

3.1 core.yaml

基础环境针对于官方示例配置,无任何修改,所有配置条目均在compose

3.2 compose中orderer环境变量配置

以orderer0 为例,完整docker-compose文件看后续章节

orderer0:
    image: "${PRIVATE_REGISTRY_URL}/fabric-orderer:${FABRIC_TAG}"
    hostname: orderer0.freerent.cn
    environment:
      - FABRIC_LOGGING_SPEC=INFO # DEBUG

      # General 基础部分
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_LISTENPORT=7050
      - ORDERER_GENERAL_BOOTSTRAPMETHOD=none #无系统通道启动方式
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # General TLS部分 
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
      # General CLUSTER部分 Raft模式下相关配置
      # 双向TLS认证时,作为客户端证书的文件路径
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt 
      # 双向TLS认证时,作为客户端私钥的文件路径
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]

      # FileLedger 部分
      # Kafka 部分
      # Debug 部分

      # operations 部分
      - ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443      

      # metrics 部分
      - ORDERER_METRICS_PROVIDER=prometheus

      # Admin 部分
      - ORDERER_ADMIN_TLS_ENABLED=true
      - ORDERER_ADMIN_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_ADMIN_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_ADMIN_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
      - ORDERER_ADMIN_TLS_CLIENTROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
      - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7060

      # ChannelParticipation 部分
      - ORDERER_CHANNELPARTICIPATION_ENABLED=true

      # Consensus 部分


猜你喜欢

转载自blog.csdn.net/weixin_43274469/article/details/129330968