3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

nem / symbolAdvent Calendar 2024

Day 8

Symbol Dual (Peer+API) ノードの起動

Last updated at Posted at 2024-12-07

MongoDB インストール

公開鍵のインポート

MongoDB の公開鍵 GPG キーをインポートします。

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
   --dearmor

リストファイルを作成する

Ubuntu 24 用のリストファイルを作成する。

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

MongoDB のインストール

sudo apt update
sudo apt install -y mongodb-org

作業ディレクトリへの移動

cd /opt/symbol-node

MongoDB の準備

DB データ格納ディレクトリの作成

Symbol のデータを格納するディレクトリを作成する。

mkdir /opt/symbol-node/dbdata

MongoDB の起動

mongod --dbpath=dbdata --wiredTigerCacheSizeGB 2

MongoDB の初期化

初回起動時は、データベースもコレクションも無い状態なので、catapult データベースを作成し、初期化します。
もう一つコンソールを開いて、以下を実行します。

cd /opt/symbol-node/mongo
mongosh catapult mongoDbDrop.js
mongosh catapult mongoDbPrepare.js
cd ..

しばらく、MongoDB は使用しないのでCtrl + Cで終了します。

Rest の準備

Rest のコピー

/opt/symbol-node/symbol-nodeに持って行きます。

cd /opt/symbol-node
cp -r ~/symbol/client/rest app
cd app
npm i
cd ..

コンフィグの編集

rest/rest.jsonを編集します(app/resources 内の rest.json は使用しません)。
各ホストをループバック IP に変更します。また、ノードの証明書とプロパティへのパスを設定します。deploymentnodeMetadataの変更は任意です。

rest/rest.json
...
        "db": {
                "url": "mongodb://127.0.0.1:27017/",
...
        "apiNode": {
                "host": "127.0.0.1",
                "port": 7900,
                "timeout": 1000,
                "tlsClientCertificatePath": "../certificates/node.crt.pem",
                "tlsClientKeyPath": "../certificates/node.key.pem",
                "tlsCaCertificatePath": "../certificates/ca.crt.pem",

                "inflationPropertyFilePath": "../resources/config-inflation.properties",
                "networkPropertyFilePath": "../resources/config-network.properties",
                "nodePropertyFilePath": "../resources/config-node.properties"
        },

        "websocket": {
                "mq": {
                        "host": "127.0.0.1",
...
                "file": {
                        "formats": ["prettyPrint"],

                        "level": "verbose",
                        "handleExceptions": true,

                        "filename": "../logs/rest/catapult-rest.log",
                        "maxsize": 20971520,
                        "maxFiles": 100
                }
...
        "deployment": {
                "deploymentTool": "n/a",
                "deploymentToolVersion": "n/a",
                "lastUpdatedDate": "n/a"
        },

        "nodeMetadata": {
                "_info": "replace the body of this object with custom fields and objects to personalize your node"
        }
}

Symbol

ノードのコンフィグ編集

resources/config-extensions-server.propertiesを編集します。
extension.filespoolingextension.partialtransactionを有効にする。

resources/config-extensions-server.properties
[extensions]

# api extensions
extension.filespooling = true
extension.partialtransaction = true
...

resources/config-extensions-broker.propertiesを編集します。
すべての拡張機能を有効にする。

resources/config-extensions-broker.properties
[extensions]

# addressextraction must be first because mongo and zeromq depend on extracted addresses
extension.addressextraction = true
extension.mongo = true
extension.zeromq = true

extension.hashcache = true

resources/config-extensions-recovery.propertiesを編集します。

resources/config-extensions-recovery.properties
[extensions]

# addressextraction must be first because mongo and zeromq depend on extracted addresses
extension.addressextraction = true
extension.mongo = true
extension.zeromq = true

extension.filespooling = false
extension.hashcache = true

resources/config-node.propertiesを編集します。
enableAutoSyncCleanupを無効にする。
rolesに Api を追加する。

resources/config-node.properties
...
enableAutoSyncCleanup = false
...
roles = Peer, Api
...

resources/config-database.propertiesを編集します。
databaseUriをループバック IP に変更する。

resources/config-database.properties
[database]

databaseUri = mongodb://127.0.0.1:27017
...

peers-api.jsonを作成します。API を持つノードのリストなのですが、peers-p2p.json のコピーで問題ないでしょう。もし、Peer ノードが含まれていたら外す。

cp resources/peers-p2p.json resources/peers-api.json

Dual ノードの起動

server が起動しているなら、停止させる。
また、すでに同期したデータがある場合はデータを削除する。
コンソールを 5 つ立ち上げ、以下の順番にコマンドを実行する。

cd /opt/symbol-node
mongod --dbpath=dbdata --wiredTigerCacheSizeGB 2
cd /opt/symbol-node/app
npm start ../rest/rest.json
cd /opt/symbol-node
catapult.broker .
cd /opt/symbol-node
catapult.server .

ポートの開放

sudo ufw allow 3000

動作確認

正常な応答があるか確認します。

curl -s http://localhost:3000/node/health | jq
curl -s http://localhost:3000/chain/info | jq
curl -s http://localhost:3000/node/info | jq
curl -s http://localhost:3000/node/unlockedaccount | jq
curl -s http://localhost:3000/network/properties | jq

ノードの停止

起動の逆順に停止します。

  • server
  • broker
  • rest
  • MongoDB

次回

3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?