スキップしてメインコンテンツへ

AzureクラウドプラットフォームでのHyperledgerファブリックの構築とデプロイ-パート1

2021年5月26日#!30木、10 6月202114:09:53 +0000Z5330#30木、106月202114:09:53 +0000Z-2 +00:0030 +00:00X30 10 PM30PM-30℃、10 6月2021 14: 09:53 +0000Z2+00:003030+00:00x302021木, 10 6月 2021 14:09:53 +0000092096pm木曜日=618#!30木, 10 6月 2021 14:09:53 +0000Z+00:006#現在の#!30木, 10 6月 2021 14:09:53 +0000Z5330#/30木, 10 6月 2021 14:09:53 +0000Z-2+00:003030+00:00x30#! 30木、10 6月 2021 14:09:53 +0000Z+00:006#お知らせ

By Matt Zand and Abhik Banerjee

この一連の記事で取り上げられているトピックの概要は次のとおりです。

  1. ブロックチェーン アプリケーションのためのAzureクラウド
  2. Fabricマーケットプレイスのテンプレートとマニュアル設定
  3. Ordererやピア組織のデプロイ
  4. 開発環境のセットアップ
  5. 注文者とピアの構成の設定
  6. 開発用のポッドとボリュームマウントのセットアップ
  7. チャネルを作成する
  8. ネットワーク、チャネル、ノードへのピアの追加
  9. チェーンコードのデプロイと運用

このシリーズは3つのパートに分かれています。 

前半では、概要の 1、2、3 について説明します。の中に 第二部、項目 4、5、6 について説明します。 最後の部分 残りの項目 (7、8、9) について説明します。 

はじめに

この一連の記事を終了することで、AzureクラウドプラットフォームにFabricアプリケーションを作成してデプロイすることで、Hyperledger Fabricのスキルを習得し、実践できるようになります。そのため、この記事では、Fabricアプリケーションをパイロットステップから本番環境に移行することに関心のある人のための非常に実用的なステップについて説明します。まず、Azureクラウドプラットフォームとその機能を確認し、AzureでFabricアプリケーションを構築してデプロイするための実践的な手順を実行します。 

Azureのマネージドブロックチェーンソリューションは、Quorumと呼ばれるエンタープライズEthereumバリアントに限定されていましたが、HyperledgerFabricもサポートされるようになりました。ただし、執筆時点では、Azure BlockchainServiceは一般提供のクォーラムのみを提供しています。 Hyperledger Fabricのサポートは、AzureプラットフォームでBlockchain-As-A-Service(BAAS)ソリューションを提供することの一部です。

この記事は初心者向けですが、Azureについて事前に理解しておくと役立ちます。 Kubernetes API、およびAzure Kubernetes Service(AKS)。また、この記事で説明する手順を実行するには、HyperledgerFabricとそのコンポーネントに関する十分な知識が必要です。 Fabricの経験がない場合は、The LinuxFoundationが無料で利用できます。 Introduction to Hyperledger Blockchain Technologies コースは始めるのに良い場所です。この記事で取り上げるトピックと手順は、やりたい人にとって非常に役立ちます。 ブロックチェーンのコンサルティングと開発.

1-ブロックチェーンアプリケーション用のAzureクラウド

Azureでブロックチェーンネットワークを構築する前に、MicrosoftAzureが提供する3つの主要なブロックチェーンオプションを確認することをお勧めします。これらは:

  • Azure Blockchain Service(ABS) 

Azure Blockchain Serviceは、組織がブロックチェーンソリューションを迅速に開始できるようにすることを目的としたMicrosoftAzureのマネージドサービスです。ネットワーク内のバリデーターノードとトランザクションノードのデプロイを管理し、Azureポータル自体から簡単に使用できます。 

  • Azure Blockchain Workbench(ABW)

Azure Blockchain Workbenchは、「マネージド」パラダイム全体を別のレベルに引き上げます。ネットワークにマネージドID要素を導入します。ネットワークの参加者は、Azure Active Directory(AD)を使用してアドレスを管理できます。 ABWは、分析用のオフチェーンデータを格納するために、CosmosDatabaseなどのAzureサービスとの簡単な統合も提供します。ただし、ABSと同様に、これも現時点ではクォーラムのみをサポートしています。 Azure Blockchain Workbenchは「パブリックプレビュー」にあり、概念実証をすばやくテストするための優れた方法です。

  • Azure Resource Managerテンプレート(ARMテンプレート)

Azure Resource Manager(ARM)は、MicrosoftAzureリソースの作成者および羊飼いと考えることができます。 JSONオブジェクトをARMに渡すのと同じくらい簡単です。 ARMテンプレートは基本的に、デプロイする可能性のあるインフラストラクチャの詳細を含むJSONファイルです(たとえば、3つのvCoreと100 GBのSSDストレージおよびCentOSを備えたVM)。 ARMはこれらのテンプレートを取り込んでから、必要に応じて上記のリソースをプロビジョニングします。私たちの場合、Azure Marketplaceは、AzureにHyperledgerFabricをデプロイするためのARMテンプレートを見つけることができる場所です。 Azure Marketplaceには、AKSを使用してHyperledgerファブリックノードをデプロイするためにARMテンプレートを使用するオプションがあります。 Azureは、Azure Portal自体から展開するオプションを許可することで、より簡単にします。デプロイされたノードはAKSクラスターに存在し、 ポータル、Azure Shellまたはコマンドライン、あるいはkubectlを介したローカルPC(KubernetesはCLIを制御します)。このセクションでは、後者のソリューションを使用します。

次のセクションでは、手動構成を使用してマーケットプレイステンプレートとAKSを簡単に比較し、デプロイされたソリューションでカスタムチェーンコードを試しながら、Azureでの実践的なHyperledgerFabricネットワークのデプロイについて詳しく説明します。

2-ファブリックマーケットプレイステンプレートと手動構成

Azure Marketplaceは、構築済みのソリューションを見つけるのに最適な場所です。私たちの場合、「AzureKubernetesサービス上のHyperledgerFabric」という名前の特定のソリューションを探しています。使用方法について説明する前に、自分のリソースを手動でプロビジョニングするよりも、誰かがそれを好む理由を探りましょう。 

手動プロビジョニングは、ソリューションを構築するための適切な基盤が見つからない場合に役立ちます。ただし、プラットフォームに関する深い知識が必要です。これは、Azureだけでなくすべてに当てはまります。手動で構成する必要がある場合、アーキテクトはAzureのネットワーク、セキュリティ、コンプライアンスを完全に理解している必要があります。つまり、ネットワークを手動で構成する人は、SSHキーやストレージなどのリソースを攻撃にさらすことなく、VMを設置してネットワークにリンクする方法を知っている必要があります。

このため、「何かがうまくいかない場合は、うまくいく」というマーフィーの法則に従うことをお勧めします。もしそうなら、ネットワークの側面をAzure自体で処理できるようにしたほうがよいのではないでしょうか。これは、ブロックチェーンの開発者/オペレーターがユースケースを改善し、チェーンコード、アクセス制御リスト、 ファブリックネットワークアーキテクチャ、およびピアポリシー。これは、実行中のクラウドプラットフォームに関係なく、外部ノードがAzureにデプロイされたHyperledger Fabric Networkに参加できるため、ネットワーク内のノードを手動で管理するパスを閉じることもありません。

3-注文者とピア組織を展開する

開始するには、 Azureポータル 次に、[リソースの作成](大きな+記号)をクリックすると、AzureMarketplaceに移動します。左側のリストから、「Blockchain」というタイトルのオプションを見つけます。それをクリックすると、「Azure Blockchain Service」、「Azure Blockchain Workbench」、「EthereumStudio」などのオプションが表示されます。 「AzureKubernetesサービス上のHyperledgerFabric」をクリックします。

この時点で、事前に作成されたAzureサービスプリンシパルが必要になる場合があります。 AzureにKubernetes(K8s)クラスターをデプロイするには、サービスプリンシパルが必要です。この背後にあるロジックは、Azureでは権限なしでは何もできないということです。しかし、あなたの人に許可を付ける代わりに、あなたにはサービスプリンシパルがいます。たとえば、AzureでK8sノードを作成するためのアクセス許可は、他の必要なアクセス許可とともにこのサービスプリンシパルに関連付けられます。 AKSクラスターをデプロイするたびに、このサービスプリンシパルを使用できるようになります。 

ヒント

サービスプリンシパルは複雑で重要であり、考慮すべき多くのベストプラクティスがあります。これはこの記事の範囲外であるため、AKS上のFabricに焦点を当てます。

Azureを定期的に使用している人は、「AKSは自動的にサービスプリンシパルを作成しませんか?」と尋ねる場合があります。通常はそうですが、これは例外です。 Azure CLIで次のコマンドを実行することにより、サービスプリンシパルがまだない場合は、簡単に作成できます。

az ad sp create-for-rbac –skip-assignment –name {サービスプリンシパルの名前}

これを実行すると、特にアプリIDとパスワードを提供する出力が得られます。これらはあなたがここで必要とするものです。

それでは、ポータルを使用して注文ノードをデプロイしましょう。最初の画面には、次のオプションが表示されます。

サブスクリプション 

この時点で使用するサブスクリプションを選択します。 

リソースグループ 

Azure Resource Groupは、いわば同じ「バスケット」に複数のリソースを保持するための便利な方法です。これらは、リソースタイプ(たとえば、VMなどのコンピューティングリソース用の1つのRG、ストレージ用の別のRG)に基づいて、またはソリューション/ユースケースごとに分類できます。この例では、2つのリソースグループを作成します。1つはOrderer用で、もう1つはOrg01リソース用です。 「CreateNew」をクリックして、リソースグループ名を入力します(ここではRG-HLF-AzureOrdererを使用します)。

領域 

リソースをデプロイするAzureリージョン。ここでは、デフォルトの中央米国を使用します。

リソースプレフィックス 

これは、このAKSクラスターによって/のためにプロビジョニングされるリソースの前に追加される最大6文字のコレクションです。ここでは、接頭辞「order」を使用して、リソースがOrdererServiceに属していることを示します。

「次へ:ファブリック設定>」をクリックして、Hyperledgerファブリック関連情報を設定します。ここで、次の詳細を入力するように求められます。

組織名 

これは、ネットワークに参加しようとしている組織の名前になります。ご存知かもしれませんが、Hyperledger Fabricネットワークは、常に最初はOrdererで起動されます。ここでの訴訟に続いて、「OrdererOrg」という名前を付けます。

ファブリックネットワークコンポーネント: 

次に、サービスの種類を選択します。これは、「注文サービス」と「ピアノード」から選択できるドロップダウンメニューです。 「注文サービス」として選択させていただきます。

ノードの数 

注文サービスとして上記のオプションを選択した場合は、3つ、5つ、または7つのノードから選択する必要があります。これはデモなので、3を使用します(なぜこのような選択肢があるのか疑問に思われるかもしれません。これは、コンセンサスプロトコルに準拠した数の順序付けノードの数を取得するためです)。

ファブリックCAのユーザー名 

認証局は、ネットワークの中心的な部分の1つです。 CAがないと、新しいメンバーを登録したり、有効なIDから考慮されるトランザクションに署名したりすることはできません。ここでは、ユーザー名を「ordca01」として選択します。

ファブリックCAパスワード 

次に、CAユーザー名に使用する安全なパスワードを選択する必要があります。次のオプションでこれを確認します。

証明書 

自動的に管理される自己署名証明書から選択するか、独自のカスタム証明書をアップロードしてファブリック認証局の代理を務めるかを選択できます。ここでは、管理オプション「ファブリックCA自己署名証明書」を選択します。

Ordering ServiceのHFネットワーク固有のパラメーターを決定した後、それがデプロイされるAKSクラスターの設定を選択する必要があります。この画面のほとんどのオプションはデフォルトのままにしておきます。注意が必要なものは ノードサイズ (クラスターで使用するAzure VMの種類)、 ノード数 およびサービスプリンシパル関連フィールド サービスプリンシパルクライアントID、サービスプリンシパルクライアントシークレット、Azureモニター

次の点に注意してください。

  • この段階で選択するノードタイプは、HFネットワークを維持するためのコストに直接影響します。
  • ここでノード数を変更しないでください。前の画面で選択する必要があり、コンセンサスで重要な役割を果たします。
  • すでにサービスプリンシパルがある場合は、それを使用してこのクラスターをデプロイできます。それ以外の場合は、作成方法についてこのセクションの冒頭を参照してください。サービスプリンシパルのアプリIDとパスワードをそれぞれのフィールドに入力します。
  • Azure Monitorを使用してクラスター全体の監視を有効にすることを選択できます(実際、有効にすることをお勧めします)。これは、トランザクション数やメモリ増加率などのメトリックを分析するのに役立ちます。

Orderer ServiceClusterをAKSにデプロイします。クラスターのデプロイには約10〜15分かかります。その間に、別の重要なステップを完了することができます。このネットワークの一部となる組織のクラスターを作成します。この場合のほとんどの手順は、上記と同じです。 AzureMarketplaceの「HyperledgerFabricon Azure Kubernetes Service」テンプレートから再開し、同じ手順を実行します。この場合に異なる可能性のある値を以下の表に示します。 

フィールド
リソースグループ RG-HLF-AzureOrg(ピア用に別の新しいRGを作成)
リソースプレフィックス org01(ピアOrg01に属するすべてのリソースを識別するため)
組織名 Org01
ファブリックネットワークコンポーネント ピアノード
ノードの数 1(予算によって異なります)
ピアノードの世界状態データベース CouchDB
ファブリックCAのユーザー名 orgca01

ここでは、CouchDBとLevelDBのどちらかを選択するオプションがあります。これら2つは、現時点ではHyperledgerFabricからネイティブに提供されています。 CouchDBを使用します。興味のある方は、お気軽に両者の違いをお読みください。

これで、Ordering Serviceのクラスターとサンプル組織Org01がデプロイされ、これらはすぐに稼働します。いくつかの根拠をカバーしたので、今後の行動方針を振り返ってみましょう。注文者と組織のクラスターがあり、これら2つからネットワークを作成する必要があります。また、OrdererOrgが注文サービスとして機能するチャネルを作成する必要があります。Org01が最初に参加してから、それが所有するノード(基本的にはそのクラスター内のノード)を記録する必要があります。これらすべてを実行する一方で、それぞれのクラスター内およびクラスター外から開発するための共通の基盤を提供する開発環境をセットアップする必要もあります。これらはすべて、シリーズの次の記事で行います。

概要

一連の記事の最初の部分を終了し、ブロックチェーン開発用のAzureクラウドプラットフォームの提供と、Azureマーケットプレイステンプレートと手動構成の違いについて説明しました。また、Ordererとピア組織をデプロイすることにより、Azure上でHyperledgerFabricブロックチェーンアプリケーションを構築するための第一歩を踏み出します。 

このシリーズの 次の記事 このシリーズでは、開発環境の設定方法、Orderer とピアの設定方法、Fabric アプリケーションのポッドとボリューム マウントの設定方法について説明します。 

リソース

著者について

マットザンド シリアルアントレプレナーであり、4つのテックスタートアップの創設者です。 DCWebメーカー, ハッシュフロー, Coding Bootcamps High School Technology Services。彼はの筆頭著者です HyperledgerFabricを使用した実践的なスマートコントラクト開発 オライリーメディアの本。彼は、IBM、SAP、Alibaba Cloud、Hyperledger、The Linux Foundationなどのサイトで、Hyperledger、Ethereum、CordaR3プラットフォームのブロックチェーン開発に関する100を超える技術記事とチュートリアルを執筆しています。 Hash Flowで、彼はエンタープライズ分散型アプリケーションのコンサルティングと展開のためのブロックチェーンエキスパートのチームを率いています。チーフアーキテクトとして、彼はコーディングブートキャンプのブロックチェーンコースとトレーニングプログラムを設計および開発してきました。彼はメリーランド大学で経営学の修士号を取得しています。ブロックチェーンの開発とコンサルティングの前は、いくつかのスタートアップ企業でシニアWebおよびモバイルアプリの開発者およびコンサルタント、投資家、ビジネスアドバイザーとして働いていました。あなたはLIで彼とつながることができます: https://www.linkedin.com/in/matt-zand-64047871

Abhik Banerjee 研究者であり、熱心な読者であり、アニメファンでもあります。余暇には、ホワイトペーパーを読んだり、DLTからCloudInfraまでの趣味のプロジェクトを構築したりしています。彼は、Blockchainのいくつかの特許に加えて、InternationalConferencesとBookTitlesに複数の出版物を持っています。彼の興味には、ブロックチェーン、量子情報処理、バイオインフォマティクスが含まれます。あなたはLIで彼とつながることができます:  https://in.linkedin.com/in/abhik-banerjee-591081164

Linux Foundationのトレーニングと認定に関心をお寄せいただきありがとうございます。私たちは、中国のトレーニングサイトからより良いサービスを提供できると考えています。このサイトにアクセスするには、以下をクリックしてください。

Linux Foundationのカルチャに対するフィードバックは、より適切に、中国のカルチャウェブサイトに反映されることを期待しています。