小編給大家分享一下hyperledger v1.0.5區塊鏈運維的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
嘉禾網站制作公司哪家好,找創新互聯!從網頁設計、網站建設、微信開發、APP開發、成都響應式網站建設等網站項目制作,到程序開發,運營維護。創新互聯自2013年起到現在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創新互聯。
由于區塊鏈是區中心化,與傳統運維不同,所以之前你積累的經驗,不一定適用于區塊鏈。要想運維好區塊鏈項目,就必須理解去中心化這個概念。
首先談談傳統運維,總結為三個字“中心化”,當然有人反對并拋出“分布式”感念,傳統運維的分布式仍然建立在中心化的基礎之上。
我們來看看傳統應用模式,決多數應用都可以概括為:
用戶 -> WEB -> Application -> Cache -> Database
可以在這個體系下面做靈活變化,例如加入所有引擎、分布式文件系統,大數據等等應用,但都離不開這個模式。
區塊鏈完全不同,如果舉一個最接近的例子,我想可能與多數據中心遠程異地災備比較接近。
什么是區塊鏈呢? 區塊鏈實際上就是數據庫,一個只能插入和查詢的數據庫,數據不能被修改和刪除,并且這個數據庫沒有DBA管理員角色。這么一說你應該明白了把,實際上運維區塊鏈就是在維護一個分布式數據庫。
網上的絕大多數安裝例子中,均采用 docker 部署方案,但無一例外的是,全部安裝在一個物理機上。如果是生產環境,我們必須分開不是,首先要做的工作是化整為零,拆解應用,搞明白每個容器的功能和作用。然后我們將應用拆分,獨立部署到物理節點上去。
+---------------------------------+
| SDK |
+---------------------------------+
| golang | nodejs | python | java |
+---------------------------------+
|
V
+---------------------------------+
| fabric-ca |
+---------------------------------+
| |
+-------------------+ +-------------------+
| Peer | | Peer |
+-------------------+ +-------------------+
| |
V V
+-------------------+ +-------------------+
| Orderer | | Orderer |
+-------------------+ +-------------------+
| |
+-------------------+
| Couchdb |
+-------------------+
接下來我們要做的工作是將上面拓撲圖種的技術點分分擊破。
由于 Hyperledger Fabric 是建立在 Docker 基礎之上的。所以不建議你去除 Docker 轉而使用傳統的本地編譯安裝方式。我們仍然保持使用 Docker 在每個物理節點上,這回省去軟件的編譯和安裝環節。
需要注意的是于其他傳統系統一樣,Hyperledger Fabric 的啟動也是有順序的,這是因為他們之間存在著依賴關系。
這里我們需要幾個命令(configtxgen configtxlator cryptogen),官方的安裝方式:
curl -sSL https://goo.gl/byy2Qj | bash -s 1.0.5
無論如何我都安裝不成功,可能是(https://goo.gl/byy2Qj)被天朝給墻了。不過我發現 fabric-tools 里面有這個工具。
[root@localhost ~]# mkdir netkiller [root@localhost ~]# cd netkiller/ [root@localhost netkiller]# mkdir -p {chaincode,crypto-config,config,artifacts}
創建證書
OrdererOrgs: - Name: Orderer Domain: example.com Specs: - Hostname: orderer PeerOrgs: - Name: Org1 Domain: org1.example.com Template: Count: 1 Users: Count: 1
如果有多個Peer節點參考下面配置。
[root@localhost netkiller]# vim crypto-config.yaml OrdererOrgs: - Name: Orderer Domain: example.com Specs: - Hostname: orderer PeerOrgs: - Name: Org1 Domain: org1.example.com Template: Count: 2 Users: Count: 1 - Name: Org2 Domain: org2.example.com Template: Count: 2 Users: Count: 1
--- Profiles: OneOrgOrdererGenesis: Orderer: <<: *OrdererDefaults Organizations: - *OrdererOrg Consortiums: SampleConsortium: Organizations: - *Org1 OneOrgChannel: Consortium: SampleConsortium Application: <<: *ApplicationDefaults Organizations: - *Org1 Organizations: - &OrdererOrg Name: OrdererOrg ID: OrdererMSP MSPDir: crypto-config/ordererOrganizations/example.com/msp - &Org1 Name: Org1MSP ID: Org1MSP MSPDir: crypto-config/peerOrganizations/org1.example.com/msp AnchorPeers: - Host: peer0.org1.example.com Port: 7051 Orderer: &OrdererDefaults OrdererType: solo Addresses: - orderer.example.com:7050 BatchTimeout: 2s BatchSize: MaxMessageCount: 10 AbsoluteMaxBytes: 99 MB PreferredMaxBytes: 512 KB Kafka: Brokers: - 127.0.0.1:9092 Organizations: Application: &ApplicationDefaults Organizations:
創建文件 docker-compose-fabric-tools.yml
version: '2' networks: basic: services: tools: container_name: tools image: hyperledger/fabric-tools tty: true environment: - GOPATH=/opt/gopath - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock - CORE_LOGGING_LEVEL=DEBUG - CORE_PEER_ID=cli - CORE_PEER_ADDRESS=peer0.org1.example.com:7051 - CORE_PEER_LOCALMSPID=Org1MSP - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp - CORE_CHAINCODE_KEEPALIVE=10 # working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer working_dir: /root/netkiller command: /bin/bash volumes: - /var/run/:/host/var/run/ - ~/netkiller:/root/netkiller - ./chaincode/:/opt/gopath/src/github.com/ - ./crypto:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ networks: - basic
啟動 Docker 容器
[root@localhost netkiller]# docker-compose -f docker-compose-fabric-tools.yml up -d Creating tools
進入容器
[root@localhost netkiller]# docker-compose -f docker-compose-fabric-tools.yml exec tools bash root@88e9040d2d2a:/opt/gopath/src/github.com/hyperledger/fabric/peer#
命令
cryptogen generate --config=./crypto-config.yaml
演示
root@8f467a88de99:~/netkiller# cryptogen generate --config=./crypto-config.yaml org1.example.com org2.example.com root@8f467a88de99:~/netkiller# ls -1 crypto-config ordererOrganizations peerOrganizations
root@8f467a88de99:~/netkiller# configtxgen -profile OneOrgOrdererGenesis -outputBlock ./config/genesis.block 2018-02-08 08:35:30.121 UTC [common/configtx/tool] main -> INFO 001 Loading configuration 2018-02-08 08:35:30.236 UTC [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block 2018-02-08 08:35:30.238 UTC [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block
命令
CHANNEL_NAME=mychannel configtxgen -profile OneOrgChannel -outputCreateChannelTx ./config/channel.tx -channelID $CHANNEL_NAME
操作演示
root@8f467a88de99:~/netkiller# CHANNEL_NAME=mychannel root@8f467a88de99:~/netkiller# configtxgen -profile OneOrgChannel -outputCreateChannelTx ./config/channel.tx -channelID $CHANNEL_NAME 2018-02-08 08:41:08.010 UTC [common/configtx/tool] main -> INFO 001 Loading configuration 2018-02-08 08:41:08.020 UTC [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx 2018-02-08 08:41:08.020 UTC [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx
命令
CHANNEL_NAME=mychannel configtxgen -profile OneOrgChannel -outputAnchorPeersUpdate ./config/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP
操作演示
root@8f467a88de99:~/netkiller# CHANNEL_NAME=mychannel root@8f467a88de99:~/netkiller# configtxgen -profile OneOrgChannel -outputAnchorPeersUpdate ./config/Org1MSPanchors.tx -channelID $CHANNEL_NAME -asOrg Org1MSP 2018-02-08 08:46:19.162 UTC [common/configtx/tool] main -> INFO 001 Loading configuration 2018-02-08 08:46:19.176 UTC [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update 2018-02-08 08:46:19.177 UTC [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update
至此所需的證書與創世區塊都已生產完畢,fabric-tools 容易完成了它的使命,你可以繼續保留或者清理干凈。
[root@localhost netkiller]# docker-compose -f docker-compose-fabric-tools.yml down Stopping tools ... done Removing tools ... done Removing network netkiller_basic
清理 fabric-tools 容器
docker rm -f $(docker ps -qa)
整個 Hyperledger Fabric 技術棧中只有這個 CouchDB 是個外來戶,看到 CouchDB 我就非常興奮,這是一個NoSql數據庫(它與MongoDB十分類似),所以CouchDB 100%可以獨立運行,且最容易分離。
CouchDB 在這里有兩個方案可以選擇。
采用 Docker 運行 CouchDB的方案。
采用傳統方式物理機上本地安裝 CouchDB
理論兩種方案對實際結果沒有什么區別,只需提供IP地址,用戶名與密碼供其他節點訪問即可。但實際我們看到 Hyperledger Fabric 使用的鏡像是 hyperledger/fabric-couchdb 不清楚是否有修改過 CouchDB 數據庫。
如果你對 Docker 比較熟悉就采用 Docker 方案。如果不熟悉就采用本地安裝方式。總之選擇一種你能Hold住(掌控)的方案,一旦出現故障,你能第一時間排查并處理。
下面是 Docker 方案
couchdb: container_name: couchdb image: hyperledger/fabric-couchdb # Populate the COUCHDB_USER and COUCHDB_PASSWORD to set an admin user and password # for CouchDB. This will prevent CouchDB from operating in an "Admin Party" mode. environment: - COUCHDB_USER= - COUCHDB_PASSWORD= ports: - 5984:5984 networks: - basic
以上是“hyperledger v1.0.5區塊鏈運維的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!
本文標題:hyperledgerv1.0.5區塊鏈運維的示例分析
文章位置:http://m.newbst.com/article12/jedidc.html
成都網站建設公司_創新互聯,為您提供網站設計公司、關鍵詞優化、做網站、網站內鏈、服務器托管、標簽優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯