真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

hyperledgerv1.0.5區(qū)塊鏈運(yùn)維的示例分析

小編給大家分享一下hyperledger v1.0.5區(qū)塊鏈運(yùn)維的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

嘉禾網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

hyperledger v1.0.5 區(qū)塊鏈運(yùn)維

 1. 背景

由于區(qū)塊鏈?zhǔn)菂^(qū)中心化,與傳統(tǒng)運(yùn)維不同,所以之前你積累的經(jīng)驗(yàn),不一定適用于區(qū)塊鏈。要想運(yùn)維好區(qū)塊鏈項(xiàng)目,就必須理解去中心化這個(gè)概念。

首先談?wù)剛鹘y(tǒng)運(yùn)維,總結(jié)為三個(gè)字“中心化”,當(dāng)然有人反對(duì)并拋出“分布式”感念,傳統(tǒng)運(yùn)維的分布式仍然建立在中心化的基礎(chǔ)之上。

我們來看看傳統(tǒng)應(yīng)用模式,決多數(shù)應(yīng)用都可以概括為:



用戶 -> WEB -> Application -> Cache -> Database 
 

可以在這個(gè)體系下面做靈活變化,例如加入所有引擎、分布式文件系統(tǒng),大數(shù)據(jù)等等應(yīng)用,但都離不開這個(gè)模式。

區(qū)塊鏈完全不同,如果舉一個(gè)最接近的例子,我想可能與多數(shù)據(jù)中心遠(yuǎn)程異地災(zāi)備比較接近。

2. 部署拓?fù)?/h3>

什么是區(qū)塊鏈呢? 區(qū)塊鏈實(shí)際上就是數(shù)據(jù)庫,一個(gè)只能插入和查詢的數(shù)據(jù)庫,數(shù)據(jù)不能被修改和刪除,并且這個(gè)數(shù)據(jù)庫沒有DBA管理員角色。這么一說你應(yīng)該明白了把,實(shí)際上運(yùn)維區(qū)塊鏈就是在維護(hù)一個(gè)分布式數(shù)據(jù)庫。

網(wǎng)上的絕大多數(shù)安裝例子中,均采用 docker 部署方案,但無一例外的是,全部安裝在一個(gè)物理機(jī)上。如果是生產(chǎn)環(huán)境,我們必須分開不是,首先要做的工作是化整為零,拆解應(yīng)用,搞明白每個(gè)容器的功能和作用。然后我們將應(yīng)用拆分,獨(dú)立部署到物理節(jié)點(diǎn)上去。



       +---------------------------------+
       |                SDK               |
       +---------------------------------+
       | golang | nodejs | python | java |
       +---------------------------------+
                  |
                  V
       +---------------------------------+
       |           fabric-ca             |
       +---------------------------------+
           |                       |
+-------------------+     +-------------------+
| Peer            |     |  Peer             |         
+-------------------+     +-------------------+
     |                       |
     V                       V
+-------------------+     +-------------------+
| Orderer           |     | Orderer           |
+-------------------+     +-------------------+
                 |           |
             +-------------------+
             | Couchdb           |
             +-------------------+
 

接下來我們要做的工作是將上面拓?fù)鋱D種的技術(shù)點(diǎn)分分擊破。

由于 Hyperledger Fabric 是建立在 Docker 基礎(chǔ)之上的。所以不建議你去除 Docker 轉(zhuǎn)而使用傳統(tǒng)的本地編譯安裝方式。我們?nèi)匀槐3质褂?Docker 在每個(gè)物理節(jié)點(diǎn)上,這回省去軟件的編譯和安裝環(huán)節(jié)。

2.1. 依賴關(guān)系

需要注意的是于其他傳統(tǒng)系統(tǒng)一樣,Hyperledger Fabric 的啟動(dòng)也是有順序的,這是因?yàn)樗麄冎g存在著依賴關(guān)系。

3. 生成證書和創(chuàng)世區(qū)塊

這里我們需要幾個(gè)命令(configtxgen configtxlator cryptogen),官方的安裝方式:

curl -sSL https://goo.gl/byy2Qj | bash -s 1.0.5

無論如何我都安裝不成功,可能是(https://goo.gl/byy2Qj)被天朝給墻了。不過我發(fā)現(xiàn) fabric-tools 里面有這個(gè)工具。

[root@localhost ~]# mkdir netkiller
[root@localhost ~]# cd netkiller/
[root@localhost netkiller]# mkdir -p {chaincode,crypto-config,config,artifacts}

3.1. 創(chuàng)建配置文件

3.1.1. crypto-config.yaml

創(chuàng)建證書

OrdererOrgs:
  - Name: Orderer
    Domain: example.com
    Specs:
      - Hostname: orderer
PeerOrgs:
  - Name: Org1
    Domain: org1.example.com
    Template:
      Count: 1
    Users:
      Count: 1

如果有多個(gè)Peer節(jié)點(diǎn)參考下面配置。

[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
3.1.2. configtx.yaml
---
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:

3.2. 啟動(dòng) fabric-tools 容器

創(chuàng)建文件 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
3.2.1. 啟動(dòng) Docker 容器

啟動(dòng) Docker 容器

[root@localhost netkiller]# docker-compose -f docker-compose-fabric-tools.yml up -d
Creating tools

進(jìn)入容器

[root@localhost netkiller]# docker-compose -f docker-compose-fabric-tools.yml exec tools bash
root@88e9040d2d2a:/opt/gopath/src/github.com/hyperledger/fabric/peer#
3.2.2. 生成證書

命令

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
3.2.3. 生成創(chuàng)世區(qū)塊
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
3.2.4. 生成通道配置文件

命令

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
3.2.5.  generate anchor peer transaction

命令

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
3.2.6. 清理 Docker 容器

至此所需的證書與創(chuàng)世區(qū)塊都已生產(chǎn)完畢,fabric-tools 容易完成了它的使命,你可以繼續(xù)保留或者清理干凈。

[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)

4. CouchDB 節(jié)點(diǎn)安裝

整個(gè) Hyperledger Fabric 技術(shù)棧中只有這個(gè) CouchDB 是個(gè)外來戶,看到 CouchDB 我就非常興奮,這是一個(gè)NoSql數(shù)據(jù)庫(它與MongoDB十分類似),所以CouchDB 100%可以獨(dú)立運(yùn)行,且最容易分離。

CouchDB 在這里有兩個(gè)方案可以選擇。

  • 采用 Docker 運(yùn)行 CouchDB的方案。

  • 采用傳統(tǒng)方式物理機(jī)上本地安裝 CouchDB

理論兩種方案對(duì)實(shí)際結(jié)果沒有什么區(qū)別,只需提供IP地址,用戶名與密碼供其他節(jié)點(diǎn)訪問即可。但實(shí)際我們看到 Hyperledger Fabric 使用的鏡像是 hyperledger/fabric-couchdb 不清楚是否有修改過 CouchDB 數(shù)據(jù)庫。

如果你對(duì) Docker 比較熟悉就采用 Docker 方案。如果不熟悉就采用本地安裝方式??傊x擇一種你能Hold住(掌控)的方案,一旦出現(xiàn)故障,你能第一時(shí)間排查并處理。

下面是 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區(qū)塊鏈運(yùn)維的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


分享題目:hyperledgerv1.0.5區(qū)塊鏈運(yùn)維的示例分析
鏈接地址:http://weahome.cn/article/jedidc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部