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共识已在路上。 希望对大家有帮助。

点赞 2
10条评论
Zealot
2019-05-16
多谢tmac关注,这个回复没通知未能及时回复:p
google_tmac
2019-04-29
刚刚又仔细看了看文章,发现“Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.”,把默认的127.0.0.1改为0.0.0.0就好了,多谢博主
google_tmac
2019-04-29
刚刚又仔细看了看文章,发现“Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.”,把默认的127.0.0.1改为0.0.0.0就好了,多谢博主
google_tmac
2019-04-29
刚刚又仔细看了看文章,发现“Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.”,把默认的127.0.0.1改为0.0.0.0就好了,多谢博主
google_tmac
2019-04-29
刚刚又仔细看了看文章,发现“Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.”,把默认的127.0.0.1改为0.0.0.0就好了,多谢博主
google_tmac
2019-04-29
刚刚又仔细看了看文章,发现“Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.”,把默认的127.0.0.1改为0.0.0.0就好了,多谢博主
google_tmac
2019-04-29
刚刚又仔细看了看文章,发现“Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.”,把默认的127.0.0.1改为0.0.0.0就好了,多谢博主
google_tmac
2019-04-29
刚刚又仔细看了看文章,发现“Operations->ListenAddress默认环回地址监听, 对外服务的话需要设置为0.0.0.0:8443.”,把默认的127.0.0.1改为0.0.0.0就好了,多谢博主
google_tmac
2019-04-29
博主,请教个问题,我在orderer节点的ports中添加了端口映射- 8443:8443,启动后,在宿主机执行“netstat -ltnp |grep 8443”也有信息,主机IP192.168.56.19,用docker network inspect net_bynf ,容器的IP是172.18.0.4 ,分别用这两个ip去执行“curl http://${IP}:8443/logspec”,都是Connection refused
google_tmac
2019-04-29
本地执行curl http://${IP}:8443/logspec时报错:curl: (7) Failed connect to 172.18.0.4:8443; Connection refused
其他心得
Zealot · 212天前 
1.简介 Fabric CA基于开源项目CFSSL开发, 主要为fabric网络提供PKI证书服务,是MSP生成的基础。可能有人会问, 官方不是有cryptogen工具批量生成MSP吗? cryptogen实际是辅助测试工具,默认不同orderer,org都有不同的CA, 如果一个org要追加个peer或user, cryptogen就不管用了。生产环境我们建议使用fabric ca全面管理证书, 如果想简单来而区块链组织,节点和用户基本不会变, cryptogen也没问题。 2.
Zealot · 109天前 
去年得知蚂蚁金服放出SOFA的部分开源项目, RPC部分号称源于阿里内部的HSF, HSF当年可是把dubbo 1.x踢出局的, 只是没想到京东改造dubbo为JSF, 当当改为dubbox。国内蛮多电商公司实施服务化就直接上dubbo 1.x或dubbox。这应该是阿里没想到的, 所以现在dubbo 2.x又回笼为apache的顶级项目, 把dubbox合并还继续完善。 朋友说他们公司花了千万买了SOFA的商业版, 那么值钱的东西今天抽空过了一下开源部分的SOFAStack和dubbo2.x文档
Zealot · 118天前 
Fabric 1.4.1引入Raft排序服务, 运维界比较出名的etcd实现的orderer服务。后生可畏, etcd是中国一个年轻人的作品, 实现了raft协议, 在k8s等容器化, 虚拟化, 集群化有官方应用。etcd也是go语言编写, fabric开窍了, 直接把etcd和orderer整合了, 相比kafka/zookeeper的排序服务,搭建简单多了,也比kafka这些省了很多资源(kafka默认开的堆是2GB..), 所以个人是强烈推荐使用,尽量出来不久,但在1.4LTS维护,
Luoying web framework Luoying web framework contains a bundle of components to accelerate J2EE development Github地址 https://github.com/zealzeng/luoying-web Maven地址 <dependency> <groupId>com.whlylc</groupId> <artifac
Zealot · 126天前 
Hyperledger Fabric v2.0 Alpha引入两大新功能,新的Fabric链码生命周期和FabToken. 新的链码生命周期 2.0支持链码的去中心化的治理,引入新的流程在节点上安装链码,在通道上启动实例。新的链码生命周期允许多个组织对链码的参数协同达成一致,例如链码的背书策略。新的模型的改进点如下: (1) 多个组织必须确认同意链码的参数 1.x版本里,一个组织拥有修改链码参数的能力,例如修改背书策略,通道的其它成员也被同步而更改。新的链码生命周期更灵活一些,它兼容支