Fabric-CA 架构及安装
一、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-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,否则追究其法律责任