BPサーバー移行(旧VPS会社→新VPS会社)
前提注意事項
- 本まとめは現VPS会社→新VPS会社へと
BPのみを移行するまとめです。 - 実際に行う際には手順をよく読みながら進めてください。
- ブロック生成予定まで余裕がある時に実施してください。
- 旧BPは6-1. 旧BPシャットダウンまで、起動状態 にしておいてください。
1. 新BPセットアップ
留意事項
- サーバ独自機能に留意してください。※さくらのパケットフィルタや、AWSのFW設定などのサーバー独自の機能に気を付けてください。
- 新BPのファイヤーウォール設定は、旧BPと同じ設定にしてください。
- 旧BPのユーザー名(例:ubuntu)と新BPのユーザー名は変更しないでください。
- もし変更する場合は、以下のファイル内のパス名を手動で変更してください。
startBlockProducingNode.shDIRECTORY=/home/ユーザー名/cnode
Ubuntu初期設定
新サーバーでUbuntu初期設定を実施します。
ノードセットアップ
- 1. 依存関係インストール 〜 7. gLiveViewのインストールまで実施します。
- 2. トポロジーファイル設定変更の
BPの手順を実施します。
2. 既存リレーでの作業
リレートポロジー情報変更
nano $NODE_HOME/${NODE_CONFIG}-topology.json旧BPのIPとポートを新BPのIPとポートに変更します。
トポロジーファイルの再読み込み
cnreload3. 旧BP移行処理
ユーザー名とノードポート番号をメモなどに控えておいてください。
nano $NODE_HOME/startBlockProducingNode.sh旧BPノード停止
sudo systemctl stop cardano-nodesudo systemctl disable cardano-node旧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ディレクトリにコピー
4. 新BP再設定
移行ファイル復元
ノード停止
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のユーザー名とノードポート番号は同じにしておくこと
パーミッション変更
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新BP接続確認
gLiveViewで新BPが最新ブロックと同期後、リレーと疎通(I/O)ができているかを確認します。
gLiveView確認
cd $NODE_HOME/scripts
./gLiveView.shPeerリストにリレーのIPがあることを確認してください。
params.json再作成
cd $NODE_HOME
cardano-cli latest query protocol-parameters \
${NODE_NETWORK} \
--out-file params.jsonブロックログ設定
SJGツール導入
ブロック生成状態チェック
SJGツールを起動し、「[2] ブロック生成状態チェック」ですべての項目がOKになることを確認
ブロック生成ステータス通知設定
(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設定
新BPnode exporterインストール
sudo apt install -y prometheus-node-exporterサービスを有効にして、自動的に開始されるように設定します。
sudo systemctl enable --now prometheus-node-exporter.serviceファイアウォール設定でPrometheusメトリクスポートをGrafana稼働サーバーのIP限定で開放
sudo ufw allow from <Grafana稼働サーバーのIP> to any port 12798sudo ufw allow from <Grafana稼働サーバーのIP> to any port 9100sudo ufw reloadノード再起動
sudo systemctl reload-or-restart cardano-nodeGrafanaサーバーprometheus.ymlの修正
prometheus.ymlに記載されてる旧BPのIPを新BPのIPへ変更してください
sudo nano /etc/prometheus/prometheus.ymlサービス再起動
sudo systemctl restart grafana-server.service prometheus.service prometheus-node-exporter.serviceサービスが正しく実行されていることを確認します。
sudo systemctl --no-pager status grafana-server.service prometheus.service prometheus-node-exporter.serviceGrafanaにBPのメトリクス(KESなど)が表示されているか確認
6. 最終作業
旧BPシャットダウン
sudo shutdown -h nowTracemempool無効化
Txの増加が確認できたらTracemempoolを無効にします。
sed -i $NODE_HOME/${NODE_CONFIG}-config.json \
-e "s/TraceMempool\": true/TraceMempool\": false/g"ノード再起動
sudo systemctl reload-or-restart cardano-nodeMithril-Signer再セットアップ
旧サーバーでMithril-Signer-Relayを実行していた場合は、新サーバーでも再セットアップしてください。
Mithril Signerノードの設定、更新
Last updated on