コンテンツにスキップ

BPサーバーの引越し手順(旧VPS会社→新VPS会社)

前提注意事項

  • 本まとめは現VPS会社→新VPS会社へと BPのみ を移行するまとめです。
  • 実際に行う際には手順をよく読みながら進めてください。
  • ブロック生成予定まで余裕がある時に実施してください。
  • 旧BPは3-3.旧BPシャットダウンまで、起動状態 にしておいてください。

1.新BPセットアップ

留意事項

  1. サーバ独自機能に留意する
    • さくらのパケットフィルタや、AWSのFW設定などのサーバー独自の機能に気を付けてください。
  2. 新BPのファイヤーウォール設定は、旧BPと同じ設定にしてください。
  3. 旧BPのユーザー名(例:ubuntu)と新BPのユーザー名は変更しないでください。
    • もし変更する場合は、以下のファイル内のパス名を手動で変更してください。
    • startBlockProducingNode.sh DIRECTORY=/home/ユーザー名/cnode

1-1.Ubuntu初期設定

新サーバーでUbuntu初期設定を実施します。

1-2.ノードセットアップ

依存関係インストールgLiveViewのインストールまで実施します。

2.既存リレー作業

リレートポロジー情報変更

nano $NODE_HOME/relay-topology_pull.sh
旧BPのIPとポートを新BPのIPとポートに変更する

  • BLOCKPRODUCING_IP=xxx.xxx.xxx
  • BLOCKPRODUCING_PORT=xxxx

relay-topology_pull.shを実行し、リレーノードを再起動します。

cd $NODE_HOME
./relay-topology_pull.sh
ノード再起動
sudo systemctl reload-or-restart cardano-node

gLiveviewでリレーが最新ブロックと同期することをご確認ください

nano $NODE_HOME/${NODE_CONFIG}-topology.json

旧BPのIPとポートを新BPのIPとポートに変更する

トポロジーファイルの再読み込み

kill -SIGHUP $(pidof cardano-node)

ダイナミックP2P有効時、トポロジーファイル変更による再起動は不要です。

3.旧BP移行処理

3-1.旧BPノード停止

sudo systemctl stop cardano-node
sudo systemctl disable cardano-node

3-2.旧BPファイル移動

参考)移行ファイル一覧
ファイル名 用途
vrf.skey ブロック生成に必須
vrf.vkey ブロック生成に必須
kes.skey ブロック生成に必須
kes.vkey KES公開鍵
node.cert ブロック生成に必須
payment.addr 残高確認で必要
stake.addr 残高確認で必要
mainnet-topology.json トポロジーファイル
poolMetaData.json pool.cert作成時に必要
poolMetaDataHash.txt pool.cert作成時に必要
startBlockProducingNode.sh ノード起動スクリプト
pool.id-bech32 stakepoolid(bech32形式)
pool.id stakepoolid(hex形式)
guild-db ブロックログ関連フォルダ(cncli.db以外)

Zstandardインストール

sudo apt install zstd

上記の移行ファイルを一つのファイルに圧縮する

cd $NODE_HOME
tar --exclude "guild-db/cncli/cncli.db" -acvf bp-move.zst guild-db/ vrf.skey vrf.vkey kes.skey kes.vkey node.cert payment.addr stake.addr mainnet-topology.json poolMetaData.json poolMetaDataHash.txt startBlockProducingNode.sh pool.id-bech32 pool.id

旧BPのcnodeにあるbp-move.zstを新BPのcnodeディレクトリにコピーする

graph LR
    A[旧BP] -->|bp-move.zst| B[新BP];

3-3.旧BPシャットダウン

sudo shutdown -h now

4.新BP再設定

4-1.移行ファイル復元

ノード停止

sudo systemctl stop cardano-node

ファイル確認

ls $NODE_HOME/bp-move.zst

ファイルパスが表示されることを確認する。
例)/home/cardano/cnode/bp-move.zst

ファイル展開

cd $NODE_HOME
tar -xvf bp-move.zst

戻り値に移行ファイル一覧のファイル名が表示されることを確認する

圧縮ファイルを削除する

rm bp-move.zst

4-2. パーミッション変更

cd $NODE_HOME
chmod 400 vrf.skey
chmod 400 vrf.vkey
chmod +x startBlockProducingNode.sh

ノードを起動します。

sudo systemctl start cardano-node
ノードログ確認
journalctl --unit=cardano-node --follow

4-3. 新BP接続確認

gLiveViewで新BPが最新ブロックと同期後、リレーと疎通(I/O)ができているかを確認します。

gLiveView確認

cd $NODE_HOME/scripts
./gLiveView.sh

InとOutにリレーのIPがあることを確認してください。

4-4. params.json再作成

cd $NODE_HOME
cardano-cli query protocol-parameters \
    --mainnet \
    --out-file params.json

4-5. ブロックログ設定

注意

「10-6. 過去のブロック生成実績取得」は実施しないでください。

4-6. SJGツール導入

4-7. ブロック生成状態チェック

SJGツールを起動し、「[2] ブロック生成状態チェック」ですべての項目がOKになることを確認する

4-8. ブロック生成ステータス通知設定

SPO BlockNotify移行マニュアルに沿って移行してください。

5. Prometheus設定

5-1.新BPnode exporterインストール

sudo apt install -y prometheus-node-exporter

サービスを有効にして、自動的に開始されるように設定します。

sudo systemctl enable prometheus-node-exporter.service

ノード再起動

sudo systemctl reload-or-restart cardano-node

5-2.Grafanaサーバーprometheus.ymlの修正

prometheus.ymlに記載されてる旧BPのIPを新BPのIPへ変更してください

sudo nano /etc/prometheus/prometheus.yml

サービス再起動

sudo systemctl restart grafana-server.service
sudo systemctl restart prometheus.service
sudo systemctl restart prometheus-node-exporter.service

サービスが正しく実行されていることを確認します。

sudo systemctl --no-pager status grafana-server.service prometheus.service prometheus-node-exporter.service

GrafanaにBPのメトリクス(KESなど)が表示されているか確認する。


6.補足

Tracemempool無効化

Txの増加が確認できたらTracemempoolを無効にします。

sed -i $NODE_HOME/${NODE_CONFIG}-config.json \
    -e "s/TraceMempool\": true/TraceMempool\": false/g"

ノード再起動

sudo systemctl reload-or-restart cardano-node

Mithril-Signer再セットアップ

旧サーバーでMithril-Signer-Nodeを実行していた場合は、新サーバーでも再セットアップしてください。不明点がある場合はBTBF SPO LAB.でご質問ください。