こんにちは。今回は、Symbolノードがうまく同期できておらずハーベストできない状態になっていたため、
最初から同期し直したときの手順とハマりポイントを備忘録としてまとめました。
まずは、再同期の前にチェックすべきこと
ノードが正しく動いていないからといって、すぐに「同期し直し」を始めてしまうのは早計です。以下のポイントを確認してからでも遅くありません。
1. ログファイルの確認
ノードが何らかの理由で停止した場合、まず最初にやるべきはログの確認です。異常終了の原因やエラーメッセージの手がかりが得られるかもしれません。
tail target/nodes/node/logs/catapult-server.log -f
2. ロックファイルの有無を確認
よくある原因として、前回のノード停止時にロックファイル(recovery.lock
)が残ったままになっているケースがあります。
ls target/nodes/node/data/recovery.lock
このファイルが存在していたら、ノードが正常に起動しない可能性が高いです。安全に停止されていることを確認した上で、ファイルを削除して再起動を試してみてください。
rm target/nodes/node/data/recovery.lock
3. 証明書の期限チェックも忘れずに
同期や起動とは直接関係ないように見えますが、証明書の有効期限切れもノードが正常動作しない原因のひとつです。以下で確認できます:
symbol-bootstrap healthCheck
「renewCertificates」の記述が出た場合は、以下のように更新します:
symbol-bootstrap renewCertificates
30日以上残っている場合でも、強制的に更新したいときは次のコマンドを使用:
symbol-bootstrap renewCertificates --force
Symbolノードを再同期する手順
チェックを終え、再同期を行うと判断したら、以下の手順で作業を進めました。
1. targetフォルダのバックアップとリネーム
まずは現在のデータを残しておくため、target
フォルダを別名にリネームしてバックアップします。
mv target target20250401
2. configの再生成
my_preset.yml
を使って、ノード設定を再構成します。事前にaddresses.yml
の内容(特に秘密鍵)をmy_preset.yml
に正しく転記しておく必要があります。
symbol-bootstrap config -p mainnet -a dual -c my_preset.yml
3. コンテナの構成・起動
設定が完了したら、composeして起動します。
symbol-bootstrap compose
symbol-bootstrap start -d
4. ヘルスチェックで状態確認
symbol-bootstrap healthCheck
また、ノードの情報は以下のURLでブラウザからも確認できます:
https://[あなたのサーバーIPまたはドメイン]:3000/node/info
ここまでで、ノードの同期が最初からやり直されます。完全に追いつくまでに数日かかるため、しばらく放置して様子を見ます。
4. ブロックの同期状況の確認
放置していてもいいですが 同期の状況は以下のURLで確認できます。
https://[あなたのサーバーIPまたはドメイン]:3000/chain/info
上記のURLにアクセスすると以下のようなjsonが表示されるのでheightの項目で同期状況がわかります。
{"height":"2714982","scoreHigh":"17","scoreLow":"1539462292576715214","latestFinalizedBlock":{"finalizationEpoch":1794,"finalizationPoint":72,"height":"2581920","hash":"1924A77271290203E730C7807C94BF3E1E9D0068650D094FABD95EE79CBADAC6"}}
2025年4月現在同期にかかる時間
実際にやってみたところちょうど丸2日かかりました。5年分のデータは大きいですね
どこかの信頼できるところにsymbol-bootstrap用のスナップショットがあれば時短できるのですが 残念ながら見つからずでした。
起動に失敗したときの注意点(再掲)
- ログを見る(
catapult-server.log
) recovery.lock
が残っていないか確認- 証明書の有効期限切れもチェック
証明書の更新(年1回)
証明書は1年ごとに更新が必要です。期限30日以内なら、ノードを停止せずに更新できます。
symbol-bootstrap renewCertificates
30日以上残っている場合でも、以下で強制更新できます:
symbol-bootstrap renewCertificates --force
有効期限は以下で確認できます:
symbol-bootstrap healthCheck
The node.crt.pem certificate for node node will expire on Mar 12 09:07:58 2023 GMT.
まとめ
Symbolノードの再同期は、以下のステップを意識すれば比較的スムーズに行えます:
- 再同期前にログとロックファイルを確認する
my_preset.yml
の準備を確実に- 証明書の更新も忘れずに
何か問題が起きたとき、焦らずに一つずつ確認していくことが大切です。この記事がノード運用の参考になれば嬉しいです!