メインコンテンツまでスキップ

トポロジーの構成

ネットワークトポロジは、ネットワークの物理的および論理的構造を表します。
Cardano ネットワークでは、各ステークプールは少なくとも1つのブロック生成ノードと1つのリレーノードを運用する必要があります。
ブロックを発行するために必要なキーと証明書は、ブロック生成ノードにあります。
セキュリティ上の理由から、ブロック生成者は、ステークプールオペレーターが制御する1つ以上のリレーノードにのみ接続する必要があります。

Cardano ネットワークコンポーネントの詳細については、ピアツーピア (P2P) ネットワークを参照してください。

ステークプールを構成するノードを開始する前に、次の操作を行う必要があります。

  • ブロック生成ノードに接続するようにリレーノードを構成します。
  • ブロック生成ノードをリレーノードのみに接続するように設定します。

ポート転送の設定

Cardano ネットワークのリレーノードがステークプール構成のリレーノードに接続できるようにするには、ファイアウォール構成でポートを開き、ポートで受信したトラフィックをリレーノードがリッスンするコンピューターとポートに転送する必要があります。

ヒント

トポロジーを構成する手順では、ステークプール構成内のすべてのブロック生成ノードとリレーノードがポート3001でリッスンします。

ポートが必要なとおりに設定されていることを確認するには、MGT.jp - Online Check Tools -を使用できます。

トポロジー設定

トポロジーの設定をするため、各サーバーでIP、ポート番号を出力して確認してください。

  1. $NODE_HOME/startCardanoNodeRelay.shファイル内からNodeポート番号を出力
port=`grep "PORT=" $NODE_HOME/startCardanoNodeRelay.sh`
node_port=${port#"PORT="}
echo "リレーポート : ${node_port}"
  1. 自サーバーのIPを出力
relay1_ipv4=$(curl -s https://api.ipify.org)
echo ${relay1_ipv4}

リレーでトポロジー設定

ファイアウォールの設定

ヒント

AWS系を使用されている場合は管理コンソールからファイアウォールの設定をしてください。

  1. ファイアウォールを設定します。
sudo ufw allow ${node_port}/tcp
  1. UFWのリロード
sudo ufw reload
  1. 各サーバーで出力されたIP、ポート番号を変数に代入します。
ヒント

DNSの方は変数*_ipv4へそのまま代入してください。

BP_ipv4=
BP_node_port=
relay2_ipv4=
relay2_node_port=
  1. $NODE_HOME/${NODE_CONFIG}-topology.jsonファイルの作成

Environment: Production (Mainnet)

cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": [
{
"address": "backbone.cardano.iog.io",
"port": 3001
},
{
"address": "backbone.mainnet.cardanofoundation.org",
"port": 3001
},
{
"address": "backbone.mainnet.emurgornd.com",
"port": 3001
}
],
"localRoots": [
{
"accessPoints": [
{
"address": "${BP_ipv4}",
"port": ${BP_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 1
},
{
"accessPoints": [
{
"address": "${relay2_ipv4}",
"port": ${relay2_node_port}
}
],
"advertise": true,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": 177724800
}
EOF
  1. 構文をチェックします。
cat $NODE_HOME/${NODE_CONFIG}-topology.json | jq .
  1. ノードを再起動します。
sudo systemctl reload-or-restart cardano-node

BPでトポロジー設定

各サーバーで出力されたIP、ポート番号を変数に代入します。

ヒント

DNSの方は変数*_ipv4へそのまま代入してください。

  1. リレー1のIPまたはDNSを変数に代入
relay1_ipv4=
  1. リレー1のNodeポート番号を変数に代入
relay1_node_port=
  1. リレー2のIPまたはDNSを変数に代入
relay2_ipv4=
  1. リレー2のNodeポート番号を変数に代入
relay2_node_port=
  1. startCardanoNodeBP.shファイル内のNodeポート番号を変数に代入
port=`grep "PORT=" $NODE_HOME/startCardanoNodeBP.sh`
node_port=${port#"PORT="}
echo "BPポート : ${node_port}"
  1. ファイアウォールの設定
ヒント

AWS系を使用されている場合は管理コンソールからファイアウォールの設定をしてください。

sudo ufw allow from ${relay1_ipv4} to any port ${node_port}
sudo ufw allow from ${relay2_ipv4} to any port ${node_port}
  1. UFWのリロード
sudo ufw reload
  1. ${NODE_CONFIG}-topology.jsonファイルの作成
cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": null,
"localRoots": [
{
"accessPoints": [
{
"address": "${relay1_ipv4}",
"port": ${relay1_node_port}
},
{
"address": "${relay2_ipv4}",
"port": ${relay2_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 2
}
],
"publicRoots": [],
"useLedgerAfterSlot": -1
}
EOF
  • 構文をチェックします。
jq . $NODE_HOME/${NODE_CONFIG}-topology.json
  • ノードを再起動します。
sudo systemctl reload-or-restart cardano-node