Fabric-CA 架构及安装

2020-05-23  本文已影响0人  凡星_

一、Fabric-CA架构

官方手册给的图示

根据自己理解整理的图示

总结:

Hyperledger Fabric CA由服务端和客户端组件组成

Fabric CA Server服务端由一个树形结构的服务器集群组成,有一个ROOT节点(Root Server)和诺干个不同层级的中间节点(Intermediate Server)组成,如节点A,B是同级关系,它的上级为ROOT节点,而节点C,D的上级是节点B,因此中间CA节点上级可以是ROOT节点,也可以是其它中间节点。

与Hyperledger Fabric CA服务端进行交互的方式有两种:通过Hyperledger Fabric CA的Client客户端或通过Fabric SDK之一,并且与服务端的所有通信都是通过REST API完成

Client客户端或者SDK程序是通过HA代理实现负载均衡,连接到集群中的某一个中间CA节点,可能是A,也可以是BCD节点

所有的中间CA节点的数据都保存到同一个集群共享数据库里,,以便跟踪身份和证书。数据库可以是MySQL、LDAP、PostgresSQL或者SQLite,当然在集群环境中不推荐使用SQLite,否则有IO瓶颈问题。如果配置了LDAP,则将标识信息保存在LDAP中而不是数据库中。

使用SDK程序既可以操作CA,也可以操作peer节点

二、安装使用

安装环境准备

可以按本教程第一章节先完整环境软件的安装

Fabric运行环境配置

安装Fabric-CA

在本章前面几节其实已经使用fabric-samples中的test-network测试网络脚本,实现了Fabric-CA自动安装。这里我们再学习下单独安装Fabric-CA。

由于之前已经执行test-network安装过Fabric-CA,hyperledger目录下已经存在fabric-ca,如果直接执行安装命令会报下面的错误

 `

# cd E:\go\src\github.com\hyperledger\fabric-ca; git pull --ff-only

fatal: not a git repository (or any of the parent directories): .git

package github.com/hyperledger/fabric-ca/cmd/...: exit status 128

 `

我们先把fabric-ca目录改名为fabric-ca2,以作备份下。

官方建议的安装命令:

 `

go get -u github.com/hyperledger/fabric-ca/cmd/...

 `

上面的命令是将fabric-ca-server 和fabric-ca-client二进制文件下载到$GOPATH/bin目录,并克隆fabric-ca源码到$GOPATH/src/github.com/hyperledger/fabric-ca/目录下

如果你像我一样还遇到下面的错误

 `

# github.com/hyperledger/fabric-ca/vendor/github.com/mattn/go-sqlite3

exec: "gcc": executable file not found in %PATH%

 `

需要根据这个教程安装gcc:https://www.cnblogs.com/zsy/p/5958170.html

安装成功后可以在git base中查看fabric-ca-server版本

 `

fabric-ca-server version

# 返回 :

# fabric-ca-server:

#  Version: 1.4.6

#  Go version: go1.13.4

#  OS/Arch: windows/amd64

 `

如果报下面的错误

 `

panic: Version is not setfor fabric-ca library

 `

这是因为fabric-ca在运行时要调用lib/metadta/version.go,其中的version变量在初始化启动时默认没有赋值,因此可以通过编译二进制文件时指定版本:

 `

go get -v-ldflags "-X github.com/hyperledger/fabric-ca/lib/metadata.Version=1.1.0" github.com/hyperledger/fabric-ca/cmd/...

 `

启动Fabric-CA服务端

启动有两种方式,本地启动和docker启动

本地启动

使用下面命令是使用默认参数启动fabric-ca-server服务

 `

fabric-ca-server start -b admin:adminpw

 `

-b admin:adminpw 选项是使用一个管理员账号启动服务,如果未使用ldap.enabled设置启用LDAP,这个则是必需的。

该命令将在本地目录中创建一个名为fabric-ca-server-config.yaml的默认配置文件,我们也可以对其进行自定义配置参数。

docker启动

先打开https : //hub.docker.com/r/hyperledger/fabric-ca/tags/查看你要下载的fabric-ca版本,由于我们目前运行的是最新版本Fabirc,因此fabric-ca版本也选择最新版本就行,默认就是最新版(latest)。

如果你一定要指定使用哪个版本,可以使用编辑器打开$GOPATH/src/github.com/hyperledger/fabric-ca/docker/server 目录下的docker-compose.yml文件。把fabric-ca版本号由:

 `

fabric-ca-server:

  image: hyperledger/fabric-ca

修改为(假如要指定的版本为1.4)

fabric-ca-server:

  image: hyperledger/fabric-ca:1.4

 `

上面的配置我这边就不修改了,使用默认就好,接着在git base工具中进入到docker-compse.yml所在的目录中

 `

cd $GOPATH/src/github.com/hyperledger/fabric-ca/docker/server

 `

执行拉取fabric-ca镜像命令

 `

docker-compose up -d

 `

它会自动判断latest版本的fabric-ca镜像是否存在,不存在就会先下载,然后再启动fabric-ca-server服务

扩展:构建自己的docker镜像

我们可以通过Docker Compose只构建和启动fabric-ca-server服务

 `

cd $GOPATH/src/github.com/hyperledger/fabric-ca

make docker

cd docker/server

docker-compose up -d

 `

也可以使用下面的命令让hyperledger/fabric-ca安装的Docker镜像包含了fabric-ca-server和fabric-ca-client两部分的服务

 `

cd $GOPATH/src/github.com/hyperledger/fabric-ca

FABRIC_CA_DYNAMIC_LINK=true make docker

cd docker/server

docker-compose up -d

 `

本文由小韦云原创,转载请注明出处:https://www.bctos.cn/doc/4/1834,否则追究其法律责任

上一篇下一篇

猜你喜欢

热点阅读