家蛙树

Hyperledger Fabric 1.4运维服务

Zealot
区块链
2019-03-01

1.简介

Fabric 1.4引入operation service即运维服务接口, orderer,peer节点可提供http服务, 方便外部获取节点的运行指标,管理日志级别,健康检查。

2.如何使用运维服务

以fabirc-sample/first-network为例, ./byfn.sh up

2.1 Orderer节点运维服务

启动后连接到orderer容器

docker exec -it -e LINES=$(tput lines) -e COLUMNS=$(tput cols) orderer.example.com  bash

查看下主要配置文件/etc/hyperledger/fabric/orderer.yaml, 注意不是core.yaml
(1)可以看到Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.

(2)端口8443如果映射出去默认是任何人都可以采访, 如果要控制采访, 必须开启TLS enabled为true, 且开启客户端鉴权即clientAuthRequired为true, 配置TLS自身私钥,证书和CA证书, 限制只有指定CA签发证书的客户才能采访。
这些配置我们只需在docker-compose.yaml使用环境变量重写即可, 见步骤(4)

################################################################################
#
#   Operations Configuration
#
#   - This configures the operations server endpoint for the orderer
#
################################################################################
Operations:
    # host and port for the operations server
    ListenAddress: 127.0.0.1:8443

    # TLS configuration for the operations endpoint
    TLS:
        # TLS enabled
        Enabled: false

        # Certificate is the location of the PEM encoded TLS certificate
        Certificate:

        # PrivateKey points to the location of the PEM-encoded key
        PrivateKey:

        # Require client certificate authentication to access all resources
        ClientAuthRequired: false

        # Paths to PEM encoded ca certificates to trust for client authentication
        RootCAs: []

(3)设置运行指标metrics
支持第三方监控软件, statsd和prometheus, Provider默认禁用,

################################################################################
#
#   Metrics  Configuration
#
#   - This configures metrics collection for the orderer
#
################################################################################
Metrics:
    # The metrics provider is one of statsd, prometheus, or disabled
    Provider: disabled

    # The statsd configuration
    Statsd:
      # network type: tcp or udp
      Network: udp

      # the statsd server address
      Address: 127.0.0.1:8125

      # The interval at which locally cached counters and gauges are pushed
      # to statsd; timings are pushed immediately
      WriteInterval: 30s

      # The prefix is prepended to all emitted statsd metrics
      Prefix:

配置为statsd的话, 需要orderer主动推送运行指标到statsd服务器, 设置一些写的间隔, statsd如何鉴权没提, 估计是ip白名单, 具体细节要查下statsd文档。 部分推送的数据如下表,https://hyperledger-fabric.readthedocs.io/en/release-1.4/metrics_reference.html

t_af84372026df430e8eef9836d509466b.png

如果配置为prometheus的话就需要外部来拉取数据了,改下Provider为prometheus即可, 数据格式和statsd类似。 我们这里演示使用prometheus。

(4)docker-compose-cli.yaml例子

  orderer.example.com:
    extends:
      file:   base/docker-compose-base.yaml
      service: orderer.example.com
    container_name: orderer.example.com
    environment:
      - ORDERER_OPERATIONS_LISTENADDRESS=0.0.0.0:8443
      - ORDERER_METRICS_PROVIDER=prometheus
    ports:
      - 8443:8443
    networks:
      - byfn

(5)测试接口

curl http://192.168.31.86:8443/logspec

默认get是返回当前日志级别

{"spec":"info"}

可使用PUT设置日志级别
curl -X PUT http://192.168.31.86:8443/logspec -d ‘{“spec”:”debug”}’

获取节点健康状况

curl http://192.168.31.86:8443/healthz

返回

{"status":"OK","time":"2019-03-01T07:06:33.805124616Z"}

获取运行指标, 返回一堆东西..

curl http://192.168.31.86:8443/metrics
2.2 Peer节点运维服务

和orderer类似, 不过容器对应的配置文件是/etc/hyperledger/fabric/core.yaml, 用环境变量修改, docker-compose-cli.yaml对应内容.

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    extends:
      file:  base/docker-compose-base.yaml
      service: peer0.org1.example.com
    environment:
      - CORE_OPERATIONS_LISTENADDRESS=0.0.0.0:9443
      - CORE_METRICS_PROVIDER=prometheus
    ports:
      - 9443:9443
    networks:
      - byfn

3. 小结

感觉运维接口功能有限,日志管理暂时还是得用docker的log driver, 不过方向是好的, 只是这个1.4 LTS维护期是一年长不长短不短, 2.0和ETCD based raft共识已在路上。 希望对大家有帮助。

点赞 1
0条评论
其他心得
1. 问题场景 Fabric peer节点使用文件保存区块, 使用level db或couchdb数据库保存状态, 数据很多state db会膨胀, 我们探讨下一些解决方案。 2. couchdb集群 couchdb2.x支持集群, 分片, 应该能把数据分散到集群的其它节点。先简单过一下如何安装。 2.1 couchdb集群搭建 Fabric用到的couchdb镜像是自己打包的, 1.4对应的是hyperledger/fabric-couchdb:0.4.14, 不过很悲催, 笔者
Zealot · 21天前 
1.简介 Fabric 1.4引入operation service即运维服务接口, orderer,peer节点可提供http服务, 方便外部获取节点的运行指标,管理日志级别,健康检查。 2.如何使用运维服务 以fabirc-sample/first-network为例, ./byfn.sh up 2.1 Orderer节点运维服务 启动后连接到orderer容器 docker exec -it -e LINES=$(tput lines) -e COLUMNS=$(tput co
Zealot · 30天前 
1.使用场景 Fabric区块链网络一个channel即一个记账本, 在很多业务场景,一个记账本的数据自身组织可以读写,也可以提供给其它组织只读,部分读或部分写。数据隔离使用channel是粗粒度的,private data私有数据是fabric 1.2引入, 是为了在更细的粒度上控制数据访问。 2.如何使用私有数据? 以fabric-sample/chaincode/marble02_private弹珠游戏为例. (1)文件collections_config.json
Zealot · 31天前 
1.简介 Fabric CA基于开源项目CFSSL开发, 主要为fabric网络提供PKI证书服务,是MSP生成的基础。可能有人会问, 官方不是有cryptogen工具批量生成MSP吗? cryptogen实际是辅助测试工具,默认不同orderer,org都有不同的CA, 如果一个org要追加个peer或user, cryptogen就不管用了。生产环境我们建议使用fabric ca全面管理证书, 如果想简单来而区块链组织,节点和用户基本不会变, cryptogen也没问题。 2.
1.Kafka排序服务原理 官方文档在google doc上, 参考翻译 https://www.jianshu.com/p/db006359133d 2. kafka 排序服务安装 所有的代码已分享在https://github.com/zealzeng/kafka-orderer-demo 2.1 安装环境 官方文档有一些简单的描述 https://hyperledger-fabric.readthedocs.io/en/release-1.4/kafka.h