ステークプールのネットワークについて

まえおき

奇抜倶楽部ステークプール管理人、YOWZAです。

今回は、ネットワークについて書き起こしたいと思います。

わたしは、以前、Hadoopを利用したサービスを運営していたことがありまして、非常に大変な思い。ではなく、大変良い経験をさせていただきました。Hadoopというソフトは、数年前まで住宅情報サイトの”SUUMO”やYahoo!Japanのアクセスログ解析などのシステムに利用されていました。流行り物好きのわたしも、時代の潮流に抗うことなく、Hadoopを採用した企業向けクラウドストレージサービス(ドロップボクスやマイクロソフト社ワンドライブにようなサービス)を企画・構築・運営していました。

ご存じの方も多いと思いますが、HadoopのHDFSはNameNodeとDataNodeの2種類のノード(ネートワークに繋がる機器)で構成されます。NameNodeが1台あり、その配下に複数台のDataNodeがぶら下がります。

DataNodeが分散化されたファイルの置き場で、NameNodeが分散化されたファイルの辞書をもっているとイメージしてもらえればわかりやすいかと思います。

NameNodeが厄介物でして。このノードはシングルでしか起動できないのです。なので、サービス停止を避けられないクリティカルな環境において(例えば、クレジットカードのオンライン決済やコンビニエンスストアの決済のような)は、DRDBというストレージをミラーリングするツールを利用し、アクティブースタンバイの構成にしたりします。

要は、通常はアクティブになっているNameNodeが動きつつ、動いている間に更新されるデータは、せっせせっせとDRDBが裏方でスタンバイのストレージに書き込んでいる(ミラーリング)といった感じです。

カルダノのステークプールも、ブロックプロデューサーノードの頭脳部分と他のステークプールのリレーサーバーと連携するリレーノードがあり、なんとなく構成似ているなーと思いつつ、プールを構築するに当たり、ネットワークで考慮するポイントをご紹介したいと思います。

ステークプールの宣言方法について

ステークプールで報酬を得るためには、自分が運営しているトポロジー(ブロックプロデューサーノードとリレーノードの組み合わせ)をカルダノのブロックチェーンに登録しなければならないです。

トポロジーを登録する際に、自分が運営するステークプールのリレーサーバーを宣言する必要があります。

リレーサーバの宣言の仕方は、複数存在しています。巷では、主に3つ紹介されていますが、実は以下の4つかな?と思っています。

IPによる指定

リレーノードのIPアドレスを直書きします。

--pool-relay-ipv4 [リレーサーバー1のIPアドレス] \
--pool-relay-port 6000 \
--pool-relay-ipv4 [リレーサーバー2のIPアドレス] \
--pool-relay-port 6000 \
  • 長所
  • 簡単でわかりやすい
  • リレーアドレスを2つに分離しているので、他のプールは最も近いリレーノードに接続してきます。
  • 2つのリレーノードが指定されているため、一つのリレーノードがダウンしても、もう一方のリレーノードが稼働していることでプールの評価に影響を与えません。
  • 短所
  • リレーノードのIPアドレスが変更をする必要がある場合、ステークプールを宣言し直す必要があります。
  • 他のプールにIPで伝搬してしまっているため、新しいリレーノードのIPに更新される必要があります。

サブドメインによる指定

ドメインのDNS管理画面にて、Aレコードを追加します。Aレコードとは、インターネット上のサーバーのニックネームみたいな感じです。IPアドレスは、数字の羅列ですが、webのように名前をつけることで、人間でも認識しやすくなります。
登録したレコードは、Aレコード+ドメインとして、インターネット上のアドレスとして機能します。この一意のアドレスをリレーノードごとに繰り返し記述します。

--single-host-pool-relay relay1.kibatsu.club \
--pool-relay-port 6000 \
--single-host-pool-relay relay2.kibatsu.club \
--pool-relay-port 6000 \
  • 長所
  • リレーアドレスを2つに分離しているので、他のプールは最も近いリレーノードに接続してきます。
  • 2つのリレーノードが指定されているため、一つのリレーノードがダウンしても、もう一方のリレーノードが稼働していることでプールの評価に影響を与えません。
  • リレーのIPが変更された場合においても、DNSレコードを更新するだけで済みます。
  • 短所
  • リレーを追加/削除する場合は、ステークプールを再度登録する必要があります。

SRV DNSによる指定

ドメインのDNS管理画面にて、SRVレコードを追加します。レコードの名前はサブドメインになります。同一のSRVレコードの優先順位に応じて接続されるリレーノードが変わります。

--multi-host-pool-relay _relay._tcp.kibatsu.club \
--pool-relay-port 6000 \
  • 長所
  • リレーのIPが変更された場合においても、DNSレコードを更新するだけで済みます。
  • 短所
  • すべてのリレーのIPは1つのドメイン配下にグループ化されているため、ネットワークがリレーを個別に最適化することはできません。
  • 1つのリレーのダウンタイムは、他のリレーの評価に影響を与えます。

ラウンドロビンDNSによる指定
ドメインレジストラによっては、単一のAレコードを作成して、複数のIPを指定することができる場合があります。GoDaddyでは設定可能です。

--single-host-pool-relay relay.kibatsu.club \
--pool-relay-port 6000 \
  • 長所
  • リレーのIPが変更された場合においても、DNSレコードを更新するだけで済みます。
  • 短所
  • すべてのリレーのIPは1つのドメイン配下にグループ化されているため、ネットワークがリレーを個別に最適化することはできません。

奇抜倶楽部のステークプールでは、2のサブドメインで指定してます。

リレーノードの地理的設置場所について

奇抜倶楽部のステークプールでは、現在、リレーノードを2台配備しています。同一のサービス内もしくは同一のリージョンに構築・運営し、万が一大災害が発生した場合でも事業継続できるような仕組みにしています。

ということで、奇抜倶楽部ステークプールをよろしくお願いします。