LoginSignup
6
6

More than 3 years have passed since last update.

Symbol Node運用 symbol-bootstrap更新方法

Posted at

Symbol Node運用にて、symbol-bootstrapを更新する方法を整理します。

注意)
 筆者の環境に依存する記述が多いので注意ください。
 WebサーバーとしてApache、HttpsとしてLet's Encryptのhttps-portal を利用しています。
 そこで、ユーザhomeディレクトリ配下にsymbol-bootstrap および https-portal を配置しています。

Symbol-bootstrap更新手順

筆者の更新手順を紹介します。

①停止

symbol-bootstrapを更新する際、各サービスを停止する必要があります。

①-1)Webサーバー停止(基本不要)

筆者環境では別途Webサーバを起動しているため、最初にWebサーバを停止しておきます。

# apache2の停止
sudo systemctl stop apache2

①-2)https-portalの停止(必要な方のみ)

筆者環境ではhttps化にLet's Ecryptのhttps-portalを利用しています。https-portalを停止します。

# https-portalの停止
# docker-compose.ymlのディレクトリに移動して停止
cd https-portal
docker-compose stop

①-3)symbol-bootstrapの停止

Symbol-bootstrapを停止します。

# symbol-bootstrapの停止
# symbol-bootstrapのディレクトリに移動して停止
cd ../symbol-bootstrap
symbol-bootstrap stop

②バックアップ

各サービスを停止したらバックアップを取ります。
アップデート作業失敗時の復旧に必須です。(委任ハーベスターの維持も可能)

②-1 ) データバックアップ

以下でtarget以下をもろもろバックアップします。
委任ハーベースターの維持に必要なのは、harvester.datになりますが、target配下に含まれます。

# symbol-bootstrapのディレクトリにて。自分が管理しやすい名称で。
# 外部の別サーバーへの保存が望ましい。
cp target ../target-yyyymmdd-ver1.X.X -r

②-2 ) アドレスバックアップ

もしもの事を考えて、筆者はこのタイミングでprivate addressを復号しておいています。

# privateアドレスを復号する。
# symbol-bootstrapのディレクトリにて
symbol-bootstrap decrypt --source target/addresses.yml --destination addresses_plain.yml

# パスワード打つとdecryptされる
vi addresses_plain.yml

# ここで平文にしたアドレス設定を作業端末上のローカル領域にコピーしておく。

# ローカル領域にコピーしたら、サーバ上の平文ファイルは削除しておく
rm addresses_plain.yml

③更新

Symbol-bootstrapを更新して、個人別設定を反映します。

③-1 ) symbol-bootstrap更新

symbol-bootstrapを更新します。

# symbol-bootstrapを更新。@1.X.Xとかバージョン指定しても良い。
sudo npm update -g symbol-bootstrap
# バージョン確認
symbol-bootstrap -v

③-2 ) 個人別設定の反映

個人別設定を反映させます。
個人別設定ファイル:custom.yml(my_preset.yml など名前は人それぞれ)は別途用意しておくこと。
docker-compose再構築は基本いらないと思いますが、おまじないでやってます。

# symbol-bootstrapのディレクトリに custom.ymlをコピー(省略)

# 設定ファイル反映
symbol-bootstrap config -p mainnet -a dual -c custom.yml --upgrade

# docker-compose.yml再構築
symbol-bootstrap compose --upgrade

④再起動

symbol-bootstrapを再起動します。

④-1 ) Symbol-bootstrapの起動と確認

# symbol-bootstrapの起動
symbol-bootstrap run -d

# 起動確認
docker ps

# ヘルスチェック
symbol-bootstrap healthCheck

# 疏通確認を適切に行ってください。
# http://[ip または host]:3000/node/info
# http://[ip または host]:3000/node/unlockedaccount

# ノードリストも確認
# https://symbolnodes.org/nodes/

④-2 ) https-portalの起動と確認(必要に応じて)

https-portalを再起動し、動作確認します。

# https-portalの起動
cd ../https-portal
docker-compose up -d

# https-portalの起動確認
docker-compose ps

# 疏通確認を適切に行ってください。
# https://[ip または host]:3001/node/info
# https://[ip または host]:3001/node/unlockedaccount

④-3 ) https-portalの再認証(必要に応じて)

なお、筆者環境では、https-portalのdocker-compose.ymlのport:80をコメントアウトしています。
https-portalの再認証ではport:80番を利用するため、90日の利用期間を過ぎると
上記の④-2)の手順を行っても、https-portalが10秒で落ちます。
その場合、以下手順を行います。

#docker-compose.ymlのports:80を編集して有効化する。

#https-portal起動(再認証)
docker-compose up -d

# 疏通確認を適切に行ってください。
# https://[ip または host]:3001/node/info
# https://[ip または host]:3001/node/unlockedaccount

#再認証が通ったら、一旦https-portalを停止
docker-compose stop

#docker-compose.ymlのports:80をコメントアウトして無効化する。
#なぜこんなことしているかというと、Webサーバーとportが競合するからです。

#https-portal再起動
docker-compose up -d

④-4 ) Webサーバーの起動と確認(基本は不要)

# apache2の起動
sudo systemctl start apache2

# apache2の起動確認
sudo systemctl status apache2

リカバリ対応

①symbol-nodeが立ち上がらない場合

①-1) ロックファイル

symbol-bootstrap更新によりsymbol-nodeが立ち上がらなくなった場合
以下ロックファイルの削除などで解消することがあります。
broker.lock
recovery.lock
server.loc

①-2) もはや動かん

Symbol-bootstrapの更新のおりにsudo つけ忘れるとかで、権限廻りが壊れると、
修正して再立ち上げすることが困難なケースがあります。
その場合はtarget以下を削除して、クリーンインストールしてください。

ローカル退避していたprivateアドレス等を初期設定として利用し、
データバックアップからharvester.datをサルベージし、
所定の位置に上書きすることで委任ハーベスターは引き継ぐことができます。

おわりに

運用者によって環境は様々です。
運用手順をShell化して自動化している方も多いと思いますが、
それらをインターネット上からコピーし拝借して利用しても動かないケースは多いです。

まずは、それぞれの環境別の手順を確立する事が肝要かと思いますので、頑張ってください。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6