5.3. いろはを運用・導入する

Hyperledger Irohaは、視点と目的に応じてさまざまな方法でシステムを導入することができます。 単一ノードでデプロイされている場合もあれば、複数のノードがローカルマシン上の複数のコンテナで実行される場合や、ネットワーク全体に分散している場合もあります。 このページでは、さまざまな導入シナリオについて説明し、初めてイロハを試してユーザーの皆さんのためのハウツーガイドとして役立つように意図されています。

5.3.1. 1つのインスタンス上で実行する

一般的に、まずイロハをローカルで実行してAPIを試し、その機能を試したいと考えています。 これはローカルまたはコンテナ環境(Docker)で行うことができます。 両方のケースを試してみますが、ピアコンポーネントの運用を簡素化するために、あなたのマシンにDockerをインストールすることをお勧めします

5.3.1.1. ローカル環境

ローカル環境では、デーモンプロセスとPostgresをコンテナなしで運用することを想定しています。 Dockerを使いこなすことが好まれない場合に役立ちますが、機能をざっくり試してみたいというときに便利な方法です。

5.3.1.1.1. postgresサーバーを起動させる

postgresサーバーをローカルで実行するには、postgres ウェブサイト<https://www.postgresql.org/docs/current/static/server-start.html> __に移動し、そのページの説明に従ってください。 一般に、postgresサーバーは、システムの起動時に自動的に実行されますが、この点についてはシステム設定で確認してください。

5.3.1.1.2. いろはデーモン(irohad)を実行する

これから先に進む前に、以下の前提条件が満たされていなければなりません:

  • Postgresサーバーが起動され、実行されている
  • irohad Iroha daemonのバイナリ形式が構築され、利用可能な状態にある
  • genesis blockを設定ファイルが生成されている
  • 設定ファイルで有効なpostgres接続の設定がなされている
  • ピアの鍵ペアが生成されている
  • これからこのピアのもとにイロハをはじめて実行し、新しいチェーンをこれから作成していく

ヒント

上記の前提条件リストと一致していないものがありますか? この文書の下のセクション、「問題に対処する」の項を参照してください。

全ての条件が整えば、あとは以下のパラメーターを用いてデーモンプロセスを起動させるだけです:

パラメーター 意味
config Postgresへの接続とシステムを調整するための値を含む設定ファイル
genesis_block 台帳上の1つ目のブロック
keypair_name ファイル拡張子なしの秘密鍵・公開鍵ファイル名。ブロックに署名する際にピアによって使用されるもの。

注意

Specifying a new genesis block using --genesis_block with blocks already present in ledger requires --overwrite_ledger flag to be set. The daemon will fail otherwise.

いろはデーモンを実行する際のコマンド例は、

irohad --config example/config.sample --genesis_block example/genesis.block --keypair_name example/node0

注意

もし一旦デーモンを停止しさせ、既存のチェーンを使用したい場合は、ジェネシスブロックのパラメータを渡さないでください。

5.3.1.2. Docker

Dockerを用いながら1つのインスタンス上でいろはノードを実行させたい場合は、まずIrohaのイメージをプルしてください:

docker pull hyperledger/iroha:latest

ヒント

最新の安定版は*latest*タグを、最新の開発版は*develop*してください

次に、正常にイメージを実行するための環境づくりをする必要があります。

5.3.1.2.1. dockerネットワークを構築する

PostgresとIrohaのコンテナは、それぞれ相互に利用できるように、同じ仮想ネットワーク上で実行する必要があります。 次のコマンドを入力してネットワークを作成します(ネットワークには任意の名前を使用できますが、例では* iroha-network * nameを使用しています)。

docker network create iroha-network

5.3.1.2.2. コンテナ内でPostgresqlを実行させる

同様に、postgresサーバーを実行して、これまでに作成したネットワークに接続し、通信用にポートを公開します。

docker run --name some-postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
--network=iroha-network \
-d postgres:9.5

5.3.1.2.3. ブロックの記録・保存用のボリュームを作成する

コンテナ内でirohaデーモンを実行する前に、ファイルを格納する永続ボリュームを作成し、チェーンのブロックを格納する必要があります。 これらは次のコマンドで行います。

docker volume create blockstore

5.3.1.2.4. Dockerコンテナでいろはデーモンを実行する

下記の条件が必須です:
  • PostgreSQLのサーバーが同じdockerネットワークで実行している
  • 各サーバーにconfigファイル及びキーペアが持っているフォルダがある
  • これからこのピアのもとにイロハをはじめて実行し、新しいチェーンをこれから作成していく

上記の条件が叶えたら、下記のコマンドを実行してください

docker run --name iroha \
# External port
-p 50051:50051 \
# Folder with configuration files
-v ~/Developer/iroha/example:/opt/iroha_data \
# Blockstore volume
-v blockstore:/tmp/block_store \
# Postgres settings
-e POSTGRES_HOST='some-postgres' \
-e POSTGRES_PORT='5432' \
-e POSTGRES_PASSWORD='mysecretpassword' \
-e POSTGRES_USER='postgres' \
# Node keypair name
-e KEY='node0' \
# Docker network name
--network=iroha-network \
hyperledger/iroha:latest

5.3.2. ピアのネットワークを起動する

ピアネットワークを設定するには、このセクションで説明するルーチンを実行してください。 このバージョンでは、手動での運用設定が可能で、またAnsible Playbookによって自動化されています。 セキュリティ基準やその他の要件を満たすオプションを選択してください。

5.3.2.1. 手動で行う方法

手動での実行では、自動化された支援なしにイロハ・ピア・ネットワークがセットアップされます。 単一のローカルインスタンスを実行するプロセスと似ていますが、違いはジェネシスブロックに複数のピアが含まれていることです。複数のピアを含むブロックを作成する場合、あるいは必要に応じてカスタマイズする必要がある場合は、「問題に対処する」の項を参照してください。

5.3.2.2. 自動で行う方法

5.3.3. 問題を解決する

—"Please, help me, because I…"

5.3.3.1. Do not have Iroha daemon binary

You can build Iroha daemon binary from sources. You can get binaries here

5.3.3.2. Do not have a config file

Check how to create a configuration file by following this link

5.3.3.3. Do not have a genesis block

Create genesis block by generating it via iroha-cli or manually, using the example and checking out permissions

5.3.3.4. Do not have a keypair for a peer

In order to create a keypair for an account or a peer, use iroha-cli binary by passing the name of the peer with --new_account option. For example:

./iroha-cli --account_name newuser@test --new_account