はじめに
fednode コマンドを使った、Monaparty (Coutnerparty も)ノードの保守/更新方法が日本語/英語ともに無い(少ない?) ようなので、記録しておきます。
保守方針はノードごとに様々とは思いますが、一般に、本稿の最初に出てくるほうが利用頻度が高く、後ろになるほど低頻度になるはずです。
保守用サブコマンド概説
コンテナのリビルド
fednode rebuild
これは数週間おきに実行します。
Monaparty の各コンテナのベースイメージは、OS やツールの脆弱性修正を伴う再構築が不定期に行われています。Counterparty の場合は頻繁ではないようですが、Monaparty は、最近 DockerHub の新機能に対応したので、ベースイメージの変更があるたびに自動でリビルドがかかります。
少しでも脆弱性の少ないノード運用を目指したい場合には、定期的な作業をおすすめします。
ベースイメージの変更差分のバイト数は、どのような脆弱性修正が上流で行われたかに大きく依存します。ときには数GBのサイズになることもあります。モバイル回線の場合は、いわゆる "パケ死" や長期の帯域制限に注意してください。
通信量が多いので時間目安も回線の太さに依存しますが、概ね数分から、長くても10分以内の作業になります。
コンテナ・ランタイムの再生成の際にはサービスが止まりますが、イメージ差分のダウンロード中はサービスが継続されます。ダウンタイムは数分程度が目安です。
ソースツリーのアップデート
fednode update
これは開発チームから告知があった場合に実行します。
ソースコードを保持している git リポジトリのアップデートがかかります。
ハードフォークを伴うアップデートの場合、これを怠ると開発者指定のブロック以降、ノードが立ち上がらなくなります。
このサブコマンドも、処理の最後にコンテナ・ランタイムが再生成されます。
ダウンタイムは、rebuild
と同様に数分程度の作業になります。
チェーンの再同期
fednode reparse {サービス名}
ローカルのデータベースにある内容を破棄して、チェーンからもう一回読み込みます。{サービス名}
には counterparty
, counterparty-testnet
, counterblock
, counterblock-testnet
が選べます。
何らかの理由でチェーンの更新が止まってしまったノードに対し、ソースコードのハンドパッチで応急手当した場合には、念の為おこなっておいたほうが良いでしょう。
再同期には、そこそこ時間(数十分程度)がかかります。その間、サービスは停止しますので、行うタイミングは予め検討したほうが良いです。
コンテナ・イメージ・キャッシュのお掃除
fednode docker_clean
ノードのディスク容量の残りが逼迫していない限り実行する必要はありません。rebuild
サブコマンドで使われなくなったイメージ差分をローカルのキャッシュから削除します。
具体的にはタグのついていないイメージのみを削除するようですが、何を削除するのかは明文化された仕様としては無いようです。ノードを fednode 以外の用途でも使っている場合には、このサブコマンドの実行は控えたほうが良いかもしれません。(docker コマンドを生でつかうほうが結果を想像しやすい)
まとめ
fednode のコマンドは、バージョンによって微妙に異なる場合があります。しかし、上記のコマンドが変更になることはないはず…ですが、fednode のヘルプも一応参照してください。