トポロジーの構成
ネットワークトポロジは、ネットワークの物理的および論理的構造を表します。
Cardano ネットワークでは、各ステークプールは少なくとも1つのブロック生成ノードと1つのリレーノードを運用する必要があります。
ブロックを発行するために必要なキーと証明書は、ブロック生成ノードにあります。
セキュリティ上の理由から、ブロック生成者は、ステークプールオペレーターが制御する1つ以上のリレーノードにのみ接続する必要があります。
Cardano ネットワークコンポーネントの詳細については、ピアツーピア (P2P) ネットワークを参照してください。
ステークプールを構成するノードを開始する前に、次の操作を行う必要があります。
- ブロック生成ノードに接続するようにリレーノードを構成します。
- ブロック生成ノードをリレーノードのみに接続するように設定します。
ポート転送の設定
Cardano ネットワークのリレーノードがステークプール構成のリレーノードに接続できるようにするには、ファイアウォール構成でポートを開き、ポートで受信したトラフィックをリレーノードがリッスン するコンピューターとポートに転送する必要があります。
トポロジーを構成する手順では、ステークプール構成内のすべてのブロック生成ノードとリレーノードがポート3001でリッスンします。
ポートが必要なとおりに設定されていることを確認するには、MGT.jp - Online Check Tools -を使用できます。
トポロジー設定
トポロジーの設定をするため、各サーバーでIP、ポート番号を出力して確認してください。
- リレー1
- リレー2
- BP
$NODE_HOME/startCardanoNodeRelay.shファイル内からNodeポート番号を出力
port=`grep "PORT=" $NODE_HOME/startCardanoNodeRelay.sh`
node_port=${port#"PORT="}
echo "リレーポート : ${node_port}"
- 自サーバーのIPを出力
relay1_ipv4=$(curl -s https://api.ipify.org)
echo ${relay1_ipv4}
$NODE_HOME/startCardanoNodeRelay.shファイル内からNodeポート番号を出力
port=`grep "PORT=" $NODE_HOME/startCardanoNodeRelay.sh`
node_port=${port#"PORT="}
echo "リレーポート : ${node_port}"
- 自サーバーのIPを出力
relay2_ipv4=$(curl -s https://api.ipify.org)
echo ${relay2_ipv4}
$NODE_HOME/startCardanoNodeBP.shファイル内からNodeポート番号を出力
port=`grep "PORT=" $NODE_HOME/startCardanoNodeBP.sh`
node_port=${port#"PORT="}
echo "BPポート : ${node_port}"
- 自サーバーのIPを出力
BP_ipv4=$(curl -s https://api.ipify.org)
echo ${BP_ipv4}
リレーでトポロジー設定
ファイアウォールの設定
AWS系を使用されている場合は管理コンソールからファイアウォールの設定をしてください。
- ファイアウォールを設定します。
sudo ufw allow ${node_port}/tcp
- UFWのリロード
sudo ufw reload
- Mainnet
- Preview
- PreProd
- Sancho
- リレー1 / BootStrapPeers有効
- リレー2 / BootStrapPeers有効
- 各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
BP_ipv4=
BP_node_port=
relay2_ipv4=
relay2_node_port=
$NODE_HOME/${NODE_CONFIG}-topology.jsonファイルの作成
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
- 各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
BP_ipv4=
BP_node_port=
relay1_ipv4=
relay1_node_port=
$NODE_HOME/${NODE_CONFIG}-topology.jsonファイルの作成
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": "${relay1_ipv4}",
"port": ${relay1_node_port}
}
],
"advertise": true,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": 177724800
}
EOF
- Preview-リレー1 / BootStrapPeers有効
- 各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
BP_ipv4=
BP_node_port=
$NODE_HOME/${NODE_CONFIG}-topology.jsonファイルの作成
cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": [
{
"address": "preview-node.play.dev.cardano.org",
"port": 3001
}
],
"localRoots": [
{
"accessPoints": [
{
"address": "${BP_ipv4}",
"port": ${BP_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": 107222465
}
EOF
- PreProd-リレー1 / BootStrapPeers有効
- 各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
BP_ipv4=
BP_node_port=
$NODE_HOME/${NODE_CONFIG}-topology.jsonファイルの作成
cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": [
{
"address": "preprod-node.play.dev.cardano.org",
"port": 3001
}
],
"localRoots": [
{
"accessPoints": [
{
"address": "${BP_ipv4}",
"port": ${BP_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": 118022427
}
EOF
- Sancho-リレー1 / BootStrapPeers有効
- 各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
BP_ipv4=
BP_node_port=
$NODE_HOME/${NODE_CONFIG}-topology.jsonファイルの作成
cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": [
{
"address": "sancho-testnet.able-pool.io",
"port": 6002
}
],
"localRoots": [
{
"accessPoints": [
{
"address": "${BP_ipv4}",
"port": ${BP_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": 33695977
}
EOF
- 構文をチェックします。
cat $NODE_HOME/${NODE_CONFIG}-topology.json | jq .
- ノードを再起動します。
sudo systemctl reload-or-restart cardano-node
BPでトポロジー設定
- Mainnet
- Preview
- PreProd
- Sancho
各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
- リレー1のIPまたはDNSを変数に代入
relay1_ipv4=
- リレー1のNodeポート番号を変数に代入
relay1_node_port=
- リレー2のIPまたはDNSを変数に代入
relay2_ipv4=
- リレー2のNodeポート番号を変数に代入
relay2_node_port=
startCardanoNodeBP.shファイル内のNodeポート番号を変数に代入
port=`grep "PORT=" $NODE_HOME/startCardanoNodeBP.sh`
node_port=${port#"PORT="}
echo "BPポート : ${node_port}"
- ファイアウォールの設定
AWS系を使用されている場合は管理コンソールからファイアウォールの設定をしてください。
sudo ufw allow from ${relay1_ipv4} to any port ${node_port}
sudo ufw allow from ${relay2_ipv4} to any port ${node_port}
- UFWのリロード
sudo ufw reload
- BP
${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
各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
- リレー1のIPまたはDNSを変数に代入
relay1_ipv4=
- リレー1のNodeポート番号を変数に代入
relay1_node_port=
startCardanoNodeBP.shファイル内のNodeポート番号を変数に代入
port=`grep "PORT=" $NODE_HOME/startCardanoNodeBP.sh`
node_port=${port#"PORT="}
echo "BPポート : ${node_port}"
- ファイアウォールの設定
AWS系を使用されている場合は管理コンソールからファイアウォールの設定をしてください。
sudo ufw allow from ${relay1_ipv4} to any port ${node_port}
- UFWのリロード
sudo ufw reload
- Preview-BP
${NODE_CONFIG}-topology.jsonファイルの作成
cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": null,
"localRoots": [
{
"accessPoints": [
{
"address": "${relay1_ipv4}",
"port": ${relay1_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": -1
}
EOF
各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
- リレー1のIPまたはDNSを変数に代入
relay1_ipv4=
- リレー1のNodeポート番号を変数に代入
relay1_node_port=
startCardanoNodeBP.shファイル内のNodeポート番号を変数に代入
port=`grep "PORT=" $NODE_HOME/startCardanoNodeBP.sh`
node_port=${port#"PORT="}
echo "BPポート : ${node_port}"
- ファイアウォールの設定
AWS系を使用されている場合は管理コンソールからファイアウォールの設定をしてください。
sudo ufw allow from ${relay1_ipv4} to any port ${node_port}
- UFWのリロード
sudo ufw reload
- PreProd-BP
${NODE_CONFIG}-topology.jsonファイルの作成
cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": null,
"localRoots": [
{
"accessPoints": [
{
"address": "${relay1_ipv4}",
"port": ${relay1_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": -1
}
EOF
各サーバーで出力されたIP、ポート番号を変数に代入します。
DNSの方は変数*_ipv4へそのまま代入してください。
- リレー1のIPまたはDNSを変数に代入
relay1_ipv4=
- リレー1のNodeポート番号を変数に代入
relay1_node_port=
startCardanoNodeBP.shファイル内のNodeポート番号を変数に代入
port=`grep "PORT=" $NODE_HOME/startCardanoNodeBP.sh`
node_port=${port#"PORT="}
echo "BPポート : ${node_port}"
- ファイアウォールの設定
AWS系を使用されている場合は管理コンソールからファイアウォールの設定をしてください。
sudo ufw allow from ${relay1_ipv4} to any port ${node_port}
- UFWのリロード
sudo ufw reload
- Sancho-BP
${NODE_CONFIG}-topology.jsonファイルの作成
cat > $NODE_HOME/${NODE_CONFIG}-topology.json << EOF
{
"bootstrapPeers": null,
"localRoots": [
{
"accessPoints": [
{
"address": "${relay1_ipv4}",
"port": ${relay1_node_port}
}
],
"advertise": false,
"trustable": true,
"hotValency": 1
}
],
"peerSnapshotFile": null,
"publicRoots": [],
"useLedgerAfterSlot": -1
}
EOF
- 構文をチェックします。
jq . $NODE_HOME/${NODE_CONFIG}-topology.json
- ノードを再起動します。
sudo systemctl reload-or-restart cardano-node