1つの注文ノードでハイパーレジャーファブリックネットワークをセットアップしましたが、実行中の本番ハイパーレジャーネットワークに注文ノードを追加する方法がわかりません。
助けていただければ幸いです、ありがとう。
まず、ネットワーク注文サービスは、単独ではなく、Kafkaサービスとして設定する必要があります。 OrdererTypeの下のconfigtx.yamlファイルでこれを行うことができます。次に、kafkaブローカー、動物園の飼育係を作成し、それらすべてを構成する必要があります。これに慣れていない場合は、このリポジトリの実験と調査が非常に役立ちます https://github.com/keenkit/fabric-sample-with-kafka 。
Kafka Ordering Serviceを備えたネットワークが機能していると仮定すると、追加の注文者の追加は、新しい組織の追加と非常によく似たチャネル更新を介して行われます。かなりの数の手順が含まれますが、それらはすべてここにリストされ、説明されています http://hyperledger-fabric.readthedocs.io/en/release-1.1/channel_update_tutorial.html 。最初に組織の追加がどのように機能するかを理解することをお勧めしますが、快適に感じる場合は、注文者を追加する場合の唯一の違いは次のとおりです。
jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' config.json ./channel-artifacts/org3.json > modified_config.json
_を実行する代わりに、jsonファイルを開いて「OrdererAddresses」を探します。別のタグ「addresses」の下に注文者の配列があるはずです。ここに注文者を追加し、ファイルをmodified_config.jsonとして保存します。その後、同じコマンドを実行して先に進むことができます。peer channel signconfigtx -f org3_update_in_envelope.pb
_ bootstrapを使用してエンベロープに署名すると、アクティブな注文者とCLIを使用し、OrdererMSPを使用します。そうしないと、注文者はトランザクションを拒否します。新しい組織を追加するために使用される組織MSPは機能しません。トラブルシューティングに役立てるために、上記のgithubリポジトリが作成する2 Ordererセットアップを最初に起動してから、1 Ordererを削除してから、再度追加する方が簡単であることがわかりました。その後、3番目を追加してさらに実験します。
補足として、チャネルの更新で変更できる他のすべてのものをここで見つけることができます: http://hyperledger-fabric.readthedocs.io/en/release-1.1/config_update.html 。 「ここをクリックして構成を表示」をクリックして、json構成の例を表示します(注:例はKafkaではなくソロです)。
ステップバイステップ(要求に応じて):
cryptogen extend --config=./crypto-config.yaml
_を実行します。注:「extend」部分は、すべてを再生成するのではなく、必要なものを生成するようにします。docker exec -it cli bash
_をCLIコンテナに入れ、bootstrapアクティブな注文者情報を入力します。この変更を承認するにはOrdererMSPが必要になるためです。ブートストラップ(例: (あなたのものは異なるかもしれません):_CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/users/[email protected]/msp
_
_CORE_PEER_ADDRESS=orderer0.example.com:7050
_
_CORE_PEER_LOCALMSPID=OrdererMSP
_
_CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/tls/ca.crt
_
_ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer0.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
_
_CHANNEL_NAME=mychannel
_
apt update && apt install -y jq
_に戻します。peer channel fetch config config_block.pb -o orderer0.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA
_configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json
_configtxlator proto_encode --input config.json --type common.Config --output config.pb
_をブロックするための秘密のjsonフォームステップ7configtxlator proto_encode --input modified_config.json --type common.Config --output modified_config.pb
_に変換しますconfigtxlator compute_update --channel_id $CHANNEL_NAME --original config.pb --updated modified_config.pb --output org3_update.pb
_configtxlator proto_decode --input org3_update.pb --type common.ConfigUpdate | jq . > org3_update.json
_echo '{"payload":{"header":{"channel_header":{"channel_id":"mychannel", "type":2}},"data":{"config_update":'$(cat org3_update.json)'}}}' | jq . > org3_update_in_envelope.json
configtxlator proto_encode --input org3_update_in_envelope.json --type common.Envelope --output org3_update_in_envelope.pb
_peer channel update -f org3_update_in_envelope.pb -c $CHANNEL_NAME -o orderer0.example.com:7050 --tls --cafile $ORDERER_CA
_だけです。ピアがこの新しいブロックを取得すると、新しい注文者のアドレスがわかり、連絡できるようになります。
アントニオの答えに加えて、システムチャネルのジェネシスブロックを新しい注文者にボリューム化する必要があります。
既存の注文者から取得し、testchainid(デフォルト名)となるチャネル名を選択することで取得できます。