R3 Corda 3rd party製ロードバランサを必要としない高可用性(HA)の構成方法
A. はじめに
前回の投稿では https://medium.com/@TIS_BC_Prom/r3-cordaノードの高可用性-ha-とその構成方法-34cb5dd409d1(以降“前記事”とします), ロードバランサを使用して、「ホットコールド高可用性デプロイメント」の設定方法を説明しました。その設定はバージョン4.0も使用できます。
この記事では、バージョン4.0から提供された3rd party製ロードバランサを必要としないHAノードを設定する代替アプローチを説明します。
この記事の検証環境は、前回と同じAWS環境を使用します。 ただし、AWS Load Balancerサービスは使用しません。
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.