Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8906

【Hyperledger Fabric】Fabricのコンテナ群とSDKアプリを別々のマシンで動かす時の注意点

$
0
0

はじめに

Fabricのコンテナ群とSDKアプリを別々のマシンで動かす時の注意点を書きます。
今回はfabric-samplesfirst-networkをネットワーク設定に用いるものとします。
fabric-node-sdkを使ったSDKアプリはdockerコンテナとして動いています。

状況を表したものが以下です。
マシン2ではCAやordererも動作していますが、図からは除いています。
スクリーンショット 2019-12-21 23.47.47.png

設定

SDKアプリを使用する際に用いるconnection profileは以下になります。

{
    "name": "first-network-org1",
    "version": "1.0.0",
    "client": {
        "organization": "Org1",
        "connection": {
            "timeout": {
                "peer": {
                    "endorser": "300"
                }
            }
        }
    },
    "organizations": {
        "Org1": {
            "mspid": "Org1MSP",
            "peers": [
                "peer0.org1.example.com",
                "peer1.org1.example.com"
            ],
            "certificateAuthorities": [
                "ca.org1.example.com"
            ]
        }
    },
    "peers": {
        "peer0.org1.example.com": {
            "url": "grpcs://マシン2のipアドレス:7051",
            "tlsCACerts": {
                "pem": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----\n"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer0.org1.example.com",
                "hostnameOverride": "peer0.org1.example.com"
            }
        },
        "peer1.org1.example.com": {
            "url": "grpcs://マシン2のipアドレス:8051",
            "tlsCACerts": {
                "pem": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----\n"
            },
            "grpcOptions": {
                "ssl-target-name-override": "peer1.org1.example.com",
                "hostnameOverride": "peer1.org1.example.com"
            }
        }
    },
    "certificateAuthorities": {
        "ca.org1.example.com": {
            "url": "https://マシン2のipアドレス:7054",
            "caName": "ca-org1",
            "tlsCACerts": {
                "pem": "-----BEGIN CERTIFICATE----------END CERTIFICATE-----\n"
            },
            "httpOptions": {
                "verify": false
            }
        }
    }
}

invokeやqueryの際にfabricのネットワークに接続する処理は以下のようになります。
asLocalhostfalseにしておかなければいけません。

await gateway.connect(ccpPath, { wallet, identity: 'user1', discovery: { enabled: true, asLocalhost: false } });

そして肝がSDKコンテナのdocker-composeファイルです。
SDKアプリがコンテナではない場合も、マシン1でドメイン名の解釈を以下のように設定する必要があります。

docker-compose.yml
extra_hosts:
      - "peer0.org1.example.com:マシン2のipアドレス"
      - "peer1.org1.example.com:マシン2のipアドレス"
      - "peer0.org2.example.com:マシン2のipアドレス"
      - "peer1.org2.example.com:マシン2のipアドレス"
      - "orderer.example.com:マシン2のipアドレス"

参考記事


Viewing all articles
Browse latest Browse all 8906

Trending Articles