AWSのEC2(Amazon Linux2) でNEM Symbol のテストネットノードを起動


Symbolのノード起動方法を様々な環境で紹介するのが流行ってるっぽいので(流行ってない)、私はAWSのEC2(Amazon Linux2) での起動方法を紹介します。

起動スペック

t3.small(2CPU メモリ2GB)
30GB SSD

t3.large(2CPU メモリ8GB)
50GB SSD(うちスワップ割り当て16GB)

Using Symbol Bootstrap

インスタンス起動直後

sudo yum upgrade -y
sudo yum install git ntp -y

取り合えず実行する、いつものあれです。
正しい時刻を持っていないと同期されにくいかもしれないので、NTPもインストールしておきます。

NodeJSインストール

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
source .bashrc
nvm install  v14.12.0

今回は適当に NodeJS v14.12.0をインストールしてみました。

docker インストール

sudo amazon-linux-extras install docker -y
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -a -G docker ec2-user
sudo curl -L https://github.com/docker/compose/releases/download/1.25.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
exit

docker、docker-composeをインストールして最後にログアウトしてもう一度入り直します。
これは入りなおさないとec2-userでdockerを起動できないからなのですが、
どなたか公式な手順をご存知でしたら教えてください。

スワップ設定

sudo dd if=/dev/zero of=/swapfile bs=512M count=32
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s

EC2はスワップ設定無しで提供されます。
初回起動時は最新ブロックまで追いつこうと急激な負荷がかかりますのでスワップ設定をして耐えましょう。
今回は512MBx32cntで16GBほど確保しています。

再起動時設定
sudo vi /etc/fstab

最終行に以下を追加して保存
/swapfile swap swap defaults 0 0

次回、サーバ起動時にも有効になるようにfstabに記述をしておきます。

symbol起動設定

npm install -g symbol-bootstrap
symbol-bootstrap config -p testnet -a dual
symbol-bootstrap compose

最新のsymbol-bootstrapをインストールし、テストネット用の設定をします。

friendlyName 修正
vi target/nodes/api-node/userconfig/resources/config-node.properties

friendlyNameの欄を自分の好きな名称に変更します。ここを変更しておくと同期が完了した後にこちらのページで楽しめます。
https://symbolnodes.org/nodes_testnet/

起動

symbol-bootstrap start -d --timeout 600000

#ノードの設定状態確認
curl http://localhost:3000/node/info
#チェーンの同期状態確認
curl http://localhost:3000/chain/info

さあ、最後に起動です。
起動したら、ノードの設定状態とチェーンの同期状態を確認して終わりです。

お疲れ様でした。