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