R3 Corda 3rd party製ロードバランサを必要としない高可用性(HA)の構成方法

TIS Blockchain Promotion Office
6 min readJul 4, 2019

--

A. はじめに

前回の投稿では https://medium.com/@TIS_BC_Prom/r3-cordaノードの高可用性-ha-とその構成方法-34cb5dd409d1(以降“前記事”とします), ロードバランサを使用して、「ホットコールド高可用性デプロイメント」の設定方法を説明しました。その設定はバージョン4.0も使用できます。

この記事では、バージョン4.0から提供された3rd party製ロードバランサを必要としないHAノードを設定する代替アプローチを説明します。

この記事の検証環境は、前回と同じAWS環境を使用します。 ただし、AWS Load Balancerサービスは使用しません。

図1 本記事のHA設定の全体像

B. EFS とRDSを作成する

前回の投稿では、AWS のEFSとRDSサービスの構築手順を説明しました。今回も前記事と同様に構築してください。(前記事のセクションDおよびE参照)

C. ノードの設定

Cordaの公式サイトでは、HA用のバックアップノードは [additionalP2PAddresses]設定で追加できることを簡単に述べています。この構成の詳細な手順を本章で説明します。

1. <build.gradle>ファイルの設定について

HAに関する設定情報は本ファイルには必要ありません。

HAの設定については、後程HAノード(Step3 )の“PartyB_conf”ファイルで追記・説明します。

……. <build.gradle>…….

前回の記事ではextraConfigの記載をしておりましたが、ver4.0 から変更になり、利用できなくなりました。

2. CorDappsをビルドする

上記の<build.gradle>ファイルを保存して、CorDappsのディレクトリで「./gradlew deployNodes」を実行してCorDappsをコンパイルします。これで、PartyBを含むすべてのcordaノードのディレクトリが“ build / nodes”の下に作成されます。 PartyBのnode.confファイルは次のようになります。

3. HAノード(PartyB)の設定

HA設定に関する情報(additionalP2PAddresses(コールドノードIP), 共有DB )を/ build / nodesの下の“ PartyB_conf”ファイルに追加してください。

additionalP2PAddressesには複数定義することが出来るため、配列型[ ]で定義します。

ネットワークに新しいノード(コールドノード)が追加されたので、ネットワークパラメータファイルを更新するためにブートストラップの実行が必要となります。

ブートストラップを実行する前に、PostgreSQL DBに必要なスキーマを作成するために、まずPartyB用のデータ移行ファイルを作成する必要があります。

4. 必要な「移行スクリプト」を作成する

移行スクリプトの説明と作成方法は、前記事のSection Iで紹介しました。同じ手順で作成してください。

5. HAノードのNW構築を作成(ブートストラップ)

プロジェクトのルートディレクトリの下で、以下のコマンドを実行してください。

java -jar corda-tools-network-bootstrapper-4.0.jar — dir build/nodes/

上記で使用されている「corda-tools-network-bootstrapper-4.0.jar」ファイルは、Corda-Enterprise-4.0 Evaluation Packの〜/ tools / network-bootstrapper /からコピーしたものです。

ブートストラップが成功すると、以下のようなコンソールメッセージが表示されます。

これで、PartyBのコールドノードの情報が新しいCordaネットワークに追加されました。

ブートストラップが完了後、PartyBのnode.confファイルも更新されました。更新された内容は次のようになります。

PartyBのコールドノードのIP(additionalP2PAddresses)、ホットノードとコールドノードの共有データベース「HAPartyB」( dataSourceProperties)を設定できました。

6. ParyBの設定情報をホットノード・コールドノードに配置する

上記Step5で作成されたPartyBのディレクトリをホットノードの”26.132.137.54" とコールドノードの”26.132.133.94" 両方にコピーします。

7. HAノード用の共有ドライブを設定する

前記事のSection-Hに参照し、PartyBのホットノードとコールドノード用の共有ドライブ(Artemis)を設定してください。

D. 全てのcordaノードを起動・検証する

Step5で作成されたPartyB以外の全てのノードディレクトリを各自の該当ノードに配置(コピー)してください。これで、図1のように、すべてのCordaノードがEC2インスタンスで正常に起動できます。

PartyBのHA機能の動作確認については、前記事のSection-Jに参照し、ご検証ください。前記事と同じく動作可能なことが確認できます。また、前記事と同様、PartyBのホットノード、コールドノードとも、corda.jarの起動が必要です。コールドノード起動時、ホットノードが稼働していたら、待ち状態となります。

まとめ

本記事は、Corda Enterpriseバージョン(CE4.0)のロードバランサなしでHAノードを設定するアプローチを説明しました。CE4.0は、従来必要な3rd Partyのロードバランサ サービス及びその設定は必要無くなり、より簡単・低コストで、ノードの高可用性を担保できると考えます。ただし、前回記事でも記載した通り、あくまでノードのHA構成です。実際の運用ではDBや共有ドライブについてもHA構成が必要となります。

次回の記事は、Notaryクラスタに関して紹介する予定です。

記:TIS Blockchain Promotion Office ()

Thanks to Kiyotaka Yamasaki.

--

--