BPサーバー移行(旧VPS会社→新VPS会社)¶
前提注意事項
- 本まとめは現VPS会社→新VPS会社へと
BPのみを移行するまとめです。 - 実際に行う際には手順をよく読みながら進めてください。
- ブロック生成予定まで余裕がある時に実施してください。
- 旧BPは6-1. 旧BPシャットダウンまで、起動状態 にしておいてください。
1. 新BPセットアップ¶
留意事項
- サーバ独自機能に留意する
- さくらのパケットフィルタや、AWSのFW設定などのサーバー独自の機能に気を付けてください。
- 新BPのファイヤーウォール設定は、旧BPと同じ設定にしてください。
- 旧BPのユーザー名(例:ubuntu)と新BPのユーザー名は変更しないでください。
- もし変更する場合は、以下のファイル内のパス名を手動で変更してください。
startBlockProducingNode.shDIRECTORY=/home/ユーザー名/cnode
1-1. Ubuntu初期設定¶
新サーバーでUbuntu初期設定を実施します。
1-2. ノードセットアップ¶
- 1. 依存関係インストール 〜 7. gLiveViewのインストールまで実施します。
- 2. トポロジーファイル設定変更の「
BPの場合」を実施します。
2. 既存リレー作業¶
リレートポロジー情報変更
nano $NODE_HOME/${NODE_CONFIG}-topology.json
旧BPのIPとポートを新BPのIPとポートに変更します。
トポロジーファイルの再読み込み
cnreload
3. 旧BP移行処理¶
ユーザー名とノードポート番号をメモなどに控えておいてください。
nano $NODE_HOME/startBlockProducingNode.sh
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 | 残高確認で必要 |
| poolMetaData.json | pool.cert作成時に必要 |
| poolMetaDataHash.txt | pool.cert作成時に必要 |
| startBlockProducingNode.sh | ノード起動スクリプト |
| pool.id-bech32 | stakepoolid(bech32形式) |
| pool.id | stakepoolid(hex形式) |
| guild-db | ブロックログ関連ディレクトリ(cncli.db以外) |
| governance | ガバナンス関連ディレクトリ |
| calidus | Calidus関連ディレクトリ |
Zstandardインストール
sudo apt install zstd
上記の移行ファイルを一つのファイルに圧縮します。
該当ディレクトリが存在しない場合
governance/ や calidus/ を使用していない場合は、存在しないディレクトリ名をコマンドから削除して実行してください。
cd $NODE_HOME
tar --exclude "guild-db/cncli/cncli.db" -acvf bp-move.zst \
vrf.skey vrf.vkey \
kes.skey kes.vkey \
node.cert \
payment.addr stake.addr \
poolMetaData.json poolMetaDataHash.txt \
startBlockProducingNode.sh \
pool.id-bech32 pool.id \
guild-db/ governance/ calidus/
旧BPのcnodeにあるbp-move.zstを新BPのcnodeディレクトリにコピーする
graph LR
A[旧BP] -->|bp-move.zst| B[新BP];
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
新規BPサーバーで5. BPノードとして再起動を実行し、「startBlockProducingNode.sh」を生成してください。
旧BPと新BPのユーザー名とノードポート番号は同じにしておくこと
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
PeerリストにリレーのIPがあることを確認してください。
4-4. params.json再作成¶
cd $NODE_HOME
cardano-cli conway query protocol-parameters \
--mainnet \
--out-file params.json
4-5. ブロックログ設定¶
4-6. SJGツール導入¶
4-7. ブロック生成状態チェック¶
SJGツールを起動し、「[2] ブロック生成状態チェック」ですべての項目がOKになることを確認する
4-8. ブロック生成ステータス通知設定¶
(SPO Block Notify)
- 新BPで1. 依存プログラムのインストールのみを実施する
- 旧BPで設定ファイルを確認する
cat $NODE_HOME/scripts/block-notify/.env
cat $NODE_HOME/guild-db/blocklog/.env
cat $NODE_HOME/scripts/block-notify/config.ini
- 新BPで3. 通知プログラムの設定を実施する (config.iniの設定値は旧BPで表示された設定ファイルの内容を参考にする)
SPO BlockNotify設定から導入してください。
5. Prometheus設定¶
5-1. 新BPnode exporterインストール¶
sudo apt install -y prometheus-node-exporter
サービスを有効にして、自動的に開始されるように設定します。
sudo systemctl enable prometheus-node-exporter.service
FW設定でPrometheusメトリクスポートをリレー1のIP限定で開放する
sudo ufw allow from <リレーノード1のIP> to any port 12798
sudo ufw allow from <リレーノード1のIP> to any port 9100
sudo ufw reload
ノード再起動
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. 最終作業¶
6-1. 旧BPシャットダウン¶
sudo shutdown -h now
6-2. 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
6-3. Mithril-Signer再セットアップ¶
旧サーバーでMithril-Signer-Nodeを実行していた場合は、新サーバーでも再セットアップしてください。不明点がある場合はBTBF SPO LAB.でご質問ください。