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運行環境配置

安裝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,否則追究其法律責任

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章