Fabric Learning (3)----生産ネットワークの構築

ファブリック公式ドキュメント: https://hyperledger-fabric.readthedocs.io/en/release-2.2/

0.序文

前の概念とアーキテクチャの学習が完了したら、このセクションでは実用性にさらに重点を置き、実際の運用ネットワークを段階的に構築していきます。

1. cryptogen を使用して証明書ファイルを作成する

1.1 準備作業

まず、前のセクションでファブリック ネットワークをオフにすることを忘れないでください。その後、適切な場所に新しいフォルダーを作成して、ネットワークのセットアップを完了します。

./network.sh down
mkdir myfabric
cd myfabric

まず、CA を使用して ID を作成する必要がありますが、ここでは公式ドキュメントで提供されているコマンド cryptogen を使用します (合計 5 つのサブコマンドがあります)。

  • ヘルプ
  • 生成する
  • テンプレートを表示
  • 伸ばす
  • バージョン

1.2 テンプレートの作成

showtemplate コマンドを使用して構成テンプレートを作成できます。

cryptogen showtemplate > crypto-config.yaml

: このコマンドを使用する前に、fabric-samples の bin ディレクトリが環境ディレクトリにロードされていることを確認する必要があります。

VIM コマンドで開くと、次の図には、名前、ドメイン (ルート ドメイン名、ソート ノード組織のルート ドメイン名など) を含むソート ノードの関連構成情報が含まれています。実際の開発環境では、実際の登録済みドメイン名。テスト環境では、自分で作成できます。はい)、OU を構成するかどうか (OU は組織単位であり、単純に組織内の特別な人々のグループとして理解できます。構成されていない場合は、 MSP 内のすべての ID (ルート CA および中間 CA フォルダーによって指定される) は、組織のメンバーとみなされます)。ここで false を true に変更します。

同様に、下部にはピアノードの関連構成情報があり、ou も true に変更します。

ここに画像の説明を挿入します

このテンプレートでは、count は組織内に存在するノードの数を示します。ここでノードを選択します。

ここに画像の説明を挿入します

下部には組織 2 に関する情報があります。ここでも OU を true および open に変更します。

ここに画像の説明を挿入します

1.3 設定に従って証明書ファイルを生成する

cryptogenの生成コマンドを使用すると、コマンドの入力形式が確認できるので、必要に応じてコマンドを入力します。

ここに画像の説明を挿入します

cryptogen generate --config=crypto-config.yaml

生成後、ディレクトリ構造を表示し、構成ファイルで指定された証明書を生成できます。

ここに画像の説明を挿入します

2. チャンネルを作成する

チャネルを構築するには、fabric-samples の configtx.yaml モデルを使用します。

2.1 configtx.yaml をコピーする

cp コマンドを使用して、configtx.yaml を現在のフォルダーにコピーします。

cp ../fabric-samples/test-network/configtx/configtx.yaml ./ 

次に、構成ファイルを変更します。

すべての mspdir を正しいパスに変更します。

ここに画像の説明を挿入します

raft 関連のパスも変更する必要があります。

**注意:** バージョン 2.3 以降、最終的なプロファイルは少し異なります。前に構成したノード情報のドメインがデフォルトの example.com ではない場合は、ホスト値も変更する必要があります。

2.2 configtxgen を使用してチャネルとジェネシス ブロックを生成する

configtxgen コマンドの使用法を確認できます。

次のコマンドを使用してチャネルを作成します。

//创建创世块
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block -channelID fabric-channel
//创建通道
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel

//创建锚节点
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP

作成後、ディレクトリ情報が表示され、ジェネシス ブロックとチャネルが作成されました。

ここに画像の説明を挿入します

**注意:** 「InspectChannelCreateTx でのエラー: org 'Org1MSP' にはアンカー ピアが定義されていません」というエラーが発生した場合は、今すぐ構成ファイルを再構成して以下を追加する必要があります。

    AnchorPeers:
        - Host: peer0.org2.yucoding.club
          Port: 7051

3.ピアノードとソートノードの構成と展開

3.1 ノード動作環境:docker

ピア ノードとソート ノードはどちらも Docker コンテナ内で実行されるため、ノードを起動するには Docker が必要です。まず、docker 公式 Web サイトにアクセスして、ファブリック ピア イメージ内の開始ノードの導入を確認します。

docker の公式 Web サイト https://hub.docker.com/ にアクセスし、hyperledger プロジェクトを検索し、fabric-peer を見つけます。そこには非常に詳細な紹介が記載されています。必要な 3 つのポイントを見てみましょう。

  • core.yamlは必須です
  • mspファイル関連の設定
  • TLS 関連の構成 (構成されている場合)

ここに画像の説明を挿入します

まず、必要な core.yaml を取得する必要があります。公式 Web サイトを確認したところ、幸運なことに core.yaml はファブリックに組み込まれており、デフォルト値が設定されていることがわかりました。特別な必要がなければ、追加で core.yaml の設定を記述する必要はありません。具体的なファイルの内容と構成分析は、次の Web サイトで参照できます。

https://github.com/hyperledger/fabric/blob/main/sampleconfig/core.yaml

**注:** ノードのデプロイメントにデフォルトの core.yaml を使用したくない場合。ノードの起動時にデフォルトの定義の一部をオーバーライドするには、Docker 起動構成ファイルを作成する必要があります。具体的な定義は次のとおりです。

  • 環境変数は、関連するフレーズ間のすべての大文字、アンダースコア、接頭辞を使用して、core.yaml ファイル内のパラメーターから推測されます。たとえば、 というピア設定変数peer.localMSPid(localMSPid可変peer構造セクション内にある)はcore.yaml、いわゆる 環境変数 としてレンダリングされ、一方、設定ファイルのセクション内のCORE_PEER_LOCALMSPID順序付けサービス環境変数は、いわゆる 環境変数 としてレンダリングされます。変数General.LocalMSPIDGeneralorderer.yamlORDERER_GENERAL_LOCALMSPID

3.2 デプロイメントコードを作成する

公式に提供されているファブリックサンプルの yaml ファイルに基づいて直接変更します。ファイルのリンクは次のとおりです。

https://github.com/hyperledger/fabric-samples/blob/main/test-network/docker/docker-compose-test-net.yaml

変更されたコードは次のとおりです。

# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#

version: '2'

volumes:
  orderer.yucoding.club:
  peer0.org1.yucoding.club:
  peer0.org2.yucoding.club:
  cli1:
  cli2:


networks: # 节点所属的网络
  yzy_test:


services:
  orderer.yucoding.club:
    container_name: orderer.yucoding.club
    image: hyperledger/fabric-orderer:latest
    environment:
      - FABRIC_LOGGING_SPEC=INFO
      - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
      - ORDERER_GENERAL_LISTENPORT=7050
      - ORDERER_GENERAL_GENESISMETHOD=file
      - ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
      - ORDERER_GENERAL_LOCALMSPID=OrdererMSP
      - ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
      # enabled TLS
      - ORDERER_GENERAL_TLS_ENABLED=true
      - ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
      - ORDERER_KAFKA_TOPIC_REPLICATIONFACTOR=1
      - ORDERER_KAFKA_VERBOSE=true
      - ORDERER_GENERAL_CLUSTER_CLIENTCERTIFICATE=/var/hyperledger/orderer/tls/server.crt
      - ORDERER_GENERAL_CLUSTER_CLIENTPRIVATEKEY=/var/hyperledger/orderer/tls/server.key
      - ORDERER_GENERAL_CLUSTER_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
      - ORDERER_ADMIN_LISTENADDRESS=0.0.0.0:7053
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric
    command: orderer
    volumes:
        - ./channel-artifacts/genesis.block:/var/hyperledger/orderer/orderer.genesis.block
        - ./crypto-config/ordererOrganizations/yucoding.club/orderers/orderer.yucoding.club/msp:/var/hyperledger/orderer/msp
        - ./crypto-config/ordererOrganizations/yucoding.club/orderers/orderer.yucoding.club/tls/:/var/hyperledger/orderer/tls
        - orderer.yucoding.club:/var/hyperledger/production/orderer     #卷标挂载
    ports:
      - 7050:7050
      - 7053:7053
    networks:
      - yzy_test

  peer0.org1.yucoding.club:
    container_name: peer0.org1.yucoding.club
    image: hyperledger/fabric-peer:latest
    environment:
      #Generic peer variables
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      # https://docs.docker.com/compose/networking/
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=yzy_test
      - FABRIC_LOGGING_SPEC=INFO
      #- FABRIC_LOGGING_SPEC=DEBUG
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      # Peer specific variabes
      - CORE_PEER_ID=peer0.org1.yucoding.club
      - CORE_PEER_ADDRESS=peer0.org1.yucoding.club:7051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:7051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org1.yucoding.club:7052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.yucoding.club:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.yucoding.club:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
    volumes:
      - /var/run/docker.sock:/host/var/run/docker.sock
      - ./crypto-config/peerOrganizations/org1.yucoding.club/peers/peer0.org1.yucoding.club/msp:/etc/hyperledger/fabric/msp
      - ./crypto-config/peerOrganizations/org1.yucoding.club/peers/peer0.org1.yucoding.club/tls:/etc/hyperledger/fabric/tls
      - peer0.org1.yucoding.club:/var/hyperledger/production
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    ports:
      - 7051:7051
    networks:
      - yzy_test


  peer0.org2.yucoding.club:
    container_name: peer0.org2.yucoding.club
    image: hyperledger/fabric-peer:latest
    environment:
      #Generic peer variables
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      # the following setting starts chaincode containers on the same
      # bridge network as the peers
      # https://docs.docker.com/compose/networking/
      - CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=yzy_test
      - FABRIC_LOGGING_SPEC=INFO
      #- FABRIC_LOGGING_SPEC=DEBUG
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_PROFILE_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
      # Peer specific variabes
      - CORE_PEER_ID=peer0.org2.yucoding.club
      - CORE_PEER_ADDRESS=peer0.org2.yucoding.club:7051
      - CORE_PEER_LISTENADDRESS=0.0.0.0:7051
      - CORE_PEER_CHAINCODEADDRESS=peer0.org2.yucoding.club:7052
      - CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
      - CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.yucoding.club:7051
      - CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.yucoding.club:7051
      - CORE_PEER_LOCALMSPID=Org2MSP
    volumes:
      - /var/run/docker.sock:/host/var/run/docker.sock
      - ./crypto-config/peerOrganizations/org2.yucoding.club/peers/peer0.org2.yucoding.club/msp:/etc/hyperledger/fabric/msp
      - ./crypto-config/peerOrganizations/org2.yucoding.club/peers/peer0.org2.yucoding.club/tls:/etc/hyperledger/fabric/tls
      - peer0.org2.yucoding.club:/var/hyperledger/production
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: peer node start
    ports:
      - 9051:9051
    networks:
      - yzy_test



  # 配置两个客户端节点1
  cli1:
    container_name: cli1
    image: hyperledger/fabric-tools:latest
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ADDRESS=peer0.org1.yucoding.club:7051
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_LOCALMSPID="Org1MSP"
      # 根目录证书
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.yucoding.club/peers/peer0.yucoding.club/tls/ca.crt

      # 指定当前客户端的身份,用户的证书
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.yucoding.club/users/[email protected]/msp
        # 私钥文件
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.yucoding.club/peers/peer0.yucoding.club/tls/server.key
        # 证书文件 这些文件对应的是客户端要连接peer节点的证书目录
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.yucoding.club/peers/peer0.yucoding.club/tls/server.crt

      # - FABRIC_LOGGING_SPEC=DEBUG
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
      - /var/run/:/host/var/run/
      - ./chaincode:/opt/gopath/src/github.com/chaincode
      - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
      - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    depends_on:
      - peer0.org1.yucoding.club
    networks:
      - yzy_test
  # 配置两个客户端节点2

  cli2:
    container_name: cli2
    image: hyperledger/fabric-tools:latest
    tty: true
    stdin_open: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - FABRIC_LOGGING_SPEC=INFO
      - CORE_PEER_ADDRESS=peer0.org2.yucoding.club:9051
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_LOCALMSPID="Org2MSP"
      # 根目录证书
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.yucoding.club/peers/peer0.yucoding.club/tls/ca.crt

      # 指定当前客户端的身份,用户的证书
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.yucoding.club/users/[email protected]/msp
        # 私钥文件
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.yucoding.club/peers/peer0.yucoding.club/tls/server.key
        # 证书文件 这些文件对应的是客户端要连接peer节点的证书目录
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.yucoding.club/peers/peer0.yucoding.club/tls/server.crt

      #- FABRIC_LOGGING_SPEC=DEBUG
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash
    volumes:
      - /var/run/:/host/var/run/
      - ./chaincode:/opt/gopath/src/github.com/chaincode
      - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
      - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    depends_on:
      - peer0.org2.yucoding.club
    networks:
      - yzy_test

走る

docker-compose up -d

操作が成功したことを確認します

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/doreen211/article/details/129148360