#はじめに
前回は、AWS Managed Blockchainでネットワークを構築して、最初のトランザクション実行まで行いました。
#2では、チェーンコードやチェーンコードを呼び出すためのプログラムについて書こうと思ったのですが、Peerの冗長化について触れたいと思います。
というのも、AWS Managed Blockchainでデモアプリを作っていたのですが、ある日突然データが取れなくなり、Peer Nodeが死んだという衝撃的なことが起こりました。
デモアプリというのもあって、Starter Editonで、最小インスタンスタイプで、単一ノードで、みたいなゆる〜い構成にしていた自分がすべて悪かったというだけの話です。しかしながら、野良アプリを作る場合、誰でもゆる〜い構成になりがちだと思います。そこで、いくら野良アプリとはいえ、最低限やったほうがいい冗長化について書きたいと思います。
このように、StatusがFailedになります。メモリ不足などの問題によって、ネットワーク疎通性が失われた状態です。いったんこうなってしまうと、復旧不可となります。
The peer node has an issue that has caused Managed Blockchain to add it to the deny list on the network. This usually indicates that the peer node has reached memory or storage capacity. As a first step, we recommend that you delete the instance and provision an instance with more capacity.
Source:Work with Peer Nodes in a Managed Blockchain Network
なお、FailedになったPeer Nodeは、上述のとおり一切アクセスできない状態となるのですが、削除するまで有効数としてカウントされるみたいです。例えば、Starter Editionでは、メンバーシップごとに 2つまで Peer Node を追加可能なのですが、削除せずに2個めを作成しようとすると、エラーになりました。
#Peerを冗長化する
そこで今回は、こんな構成で応急処置を行いました。この構成は、すでに公開されているクイックスタートのテンプレートとHyperledger Fabric(HLF) Clientのyamlを使っているので、それほど苦労せず再構築ができます。
使用したテンプレートはこちらです。
AWS での Linux 踏み台ホスト
amazon-managed-blockchain-client-templates
PeerはOrdererとは異なり、Managed Blockchainで管理される仕組みで動いていないため、開発者が対応・管理する必要があります。とはいえ、2019年7月現在では、Peer Nodeにログやヘルスチェックなどの機能はなく、健康維持が難しいですが、いつでも復旧可能な構成にする必要があります。
#さいごに
今回は、Peer Nodeの冗長化を行いました。
デモアプリだからといって冗長化せず、どんどん前に突き進んでしまう自分への教訓として、ブログに残しておこうと思います。