Symbol testnet node構築の前提条件
はじめましてのヒトは、はじめまして。
いつもの皆様、こんにちわ。
大葉さんです。
ご縁がありましてお声がけ頂けたのでsymbol testnet nodeを構築してみました。ですが、コマンドを打ち始めるまでの段階で結構ハマっちゃいましたので、皆様への情報共有の為にnoteに記録を残しておきます。
なぜこの記事を書いたのか?
「第1回 Symbolテストネット負荷祭」へ参加する為に、自前でnodeを立てようとしていましたが、自前のVPSへのインストールに失敗してしまったからです。いろいろ調べた結果、思った以上に前提条件があるってことが分かったので、記事として残してみました。
■前提条件その1:公式のオンラインマニュアル
なにはともあれ、最初に公式の資料を読みましょう。日本語もあるよ!
構築方法はいろいろありますが、上記に紹介されたBootstrap方式が一番簡単で確実だと思います。ソースからコンパイルみたいな芸当は、ある程度慣れて来てからやりましょう。まずはnodeを立ててしまう事が目的!
■前提条件その2:VPSのCPUがAVX2に対応しているか?
詳細はこちらの記事に書いておきました。
大葉さんの検証結果はこんな感じでした(2021年3月現在)
○:ConoHa , SAKURA, AWS, azure
× : CloudAtCost
■前提条件その3:VPS要求スペック(ケチってはいけない)
ケチるの良くないです。負荷試験を実施した際に、最初に応答無くなって沈みました!以下の最低スペックは必ず守ってください!
CPU: 4コア / メモリ: 4GB / ディスク: 300GB /スワップ領域12GB(Ubuntuデフォルト値は2GBなので要拡張)
特にディスクサイズが重要です。みなさんがストレステストを頑張って実施したおかげで、ブロックチェーンが肥大化しちゃっています。既存テストネットのチェーンをダウンロードするだけで80GBくらい吹き飛ぶヨ!メモリーが足りない場合はスワップ領域を拡張したくなるけど、ディスクの空き容量がないとおしまいだよ!
■前提条件その4:targetフォルダの作成位置に注意!
上記3から続くのですが、Symbol TESTNETのブロックチェーンはとにかくデカいです。大きいのです。そのデータはどこに保存されるかと言いますと、targetフォルダ内です。従って、targetフォルダを大容量ストレージ内に作る必要があります。ユーザの ルートフォルダにポンと作っちゃダメダメ。あっさりとディスク容量が枯渇します。
symbol-bootstrap compose
あるいは
symbol-bootstrap start
を実行した階層にtargetフォルダは自動作成されるので、コマンド実行時の階層をしっかりと意識しましょう!
■前提条件その5:サービス起動は必ず「symbol-bootstrap run」を利用すること!
いろんなOSSを触っていると、サービス開始の文字列、どれだったっけってなるんですよね。symborl-bootstrapには起動用のコマンドが2つあります。
以下、ヘルプより抜粋。
run
It boots the network via docker using the generated `docker-compose.yml` file and configuration. The config and compose methods/commands need to be called before this method. This is just a wrapper for the `docker-compose up` bash call.
start
Single command that aggregates config, compose and run in one line!
「start」コマンドには「compose」コマンドが含まれる点がポイントです。つまり、「start」コマンドで起動していると、コマンド実行階層を間違えてしまった際、新たにtargetフォルダを作成し、ブロックチェーンを1から落とし直し始めてしまうのです。
ディスクがさらに枯渇するね!
「run」コマンドであれば、以下のようにエラーで弾いてくれるので、安心!
test@symbol:~$ symbol-bootstrap run
_ _ _ _ _
___ _ _ _ __ ___ | |__ ___ | | | |__ ___ ___ | |_ ___ | |_ _ __ __ _ _ __
/ __| | | | | | '_ ` _ \ | '_ \ / _ \ | | _____ | '_ \ / _ \ / _ \ | __| / __| | __| | '__| / _` | | '_ \
\__ \ | |_| | | | | | | | | |_) | | (_) | | | |_____| | |_) | | (_) | | (_) | | |_ \__ \ | |_ | | | (_| | | |_) |
|___/ \__, | |_| |_| |_| |_.__/ \___/ |_| |_.__/ \___/ \___/ \__| |___/ \__| |_| \__,_| | .__/
|___/ |_|
Error: The file target/preset.yml doesn't exist. Have you executed the
'config' command?
test@symbol:~$
■前提条件その6:dockerに関する基礎知識
symbolさんはdockerのコンテナ技術を活用されています。したがってオンラインマニュアルに書かれているコマンドの意味がよく理解できない場合は、dockerの勉強をすることになります。程よい難易度のちょうど良い題材なので、自己学習に是非!
ワタクシは一時期「Error starting userland proxy: port is already allocated.」に悩まされました。dockerあるあるのポート重複問題ですね、うっかりさんでした。
■前提条件その7:rootユーザでの実行は推奨されていない
はい、これ、結構なワナなんです。オンラインドキュメントを読みながら、ほいほいとキーボードを叩いていると、ついつい「sudo」ってつけてしまいがちなのですが、開発コンセプトとしては推奨されていません。打てちゃいますけど。
エラーログに「permission denied」の文字が見えた場合は、symbolで利用するファイルのいづれかのオーナーがrootになっている可能性が高いです。「chown」コマンドで root 以外にユーザ変更をお願いします。
■前提条件その8:ブロックチェーンの個別ダウンロード
公式の手順に従って、ブロックチェーンを1からダウンロードすると、24時間経っても同期が終わらなかったりします。この問題を一時的に軽減する為に、有志の方がブロックチェーンの個別ダウンロードを用意してくれていますので、こちらをご活用しましょう。
将来的には、本家の方々にも改善して頂ける予定です。
今は正式リリースに向けてプログラム開発にリソースを寄せている感じ。
頑張って!!
■前提条件その9:メモリ領域は物理とスワップ合わせて16GB以上が必要
はい、前提条件その8、ブロックチェーンを落としてきたはずなのに、何故か起動したノードが「db読み込みエラー多発で途中で止まる」あなた。
「API」「dual」用のブロックチェーンはメモリ領域16GB以上確保しないと、ダウンロード後の処理でメモリ枯渇してプロセスKillされます。DB壊れるので、ご注意!
ubuntu 20.04デフォルト値はスワップ2GBなので、メモリ4GBのVPSを借りていると、ぜんぜん足りない。以下の記事を参考にして、スワップ領域を増やしましょう。
■前提条件その10:FWのポートはちゃんと管理しようぜ!
ブロックチェーンがうまくダウンロードされなかったり、起動後、Disconnect連続で発生する場合は、まずここを確認してください。
IP 7900/3000
上記を必ず解放すること。TCP/UDP は指定しない方が良いです。
あれ、そのポートを開けていないけど、うちのsymbolさんはちゃんと動いているよ?って方は、IPv6のポート全部開放していたりしませんか?それはそれでとっても危険なので、見直しましょう是非!
■前提条件その11:便利ツールズ
有志の方々が作成された便利ツールです。これらを知っていると、Symbol TESTNETが正常に構築出来たかどうかが簡単に確認できます。ありがたい!
■Symbol node list (testnet)
■Symbol testnet faucet (TESTNET専用通貨の配布サイト)
■負荷試験ツール(TESTNET専用)
■Symbol リアルタイム取引ビューアー(TESTNET専用)
以上です。それでは皆様、良きsymbol testnet node構築生活を!
ーーー
次の記事
ーーー
この記事が気に入ったらサポートをしてみませんか?