2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracle Cloud Infrastructureのarm64インスタンスでSymbolノードを動かしたがRESTゲートウェイがノードと繋がらない

Posted at

はじめに

Oracle Clouod Infrastructureのarm64インスタンスでSymbolノードを動かしたぞって記事を書きたかったです。

でも表題の通りRESTゲートウェイとAPIノードの接続ができない点の解消ができなかったので、仮想マシンをセットアップして起動する手順をいったん記載します。

手順

仮想マシン作成

image.png

シェイプはAmprereを選択します。

ノードの推奨要件には届きませんが、4コア24GBにします。

image.png

ディスクは推奨容量750GBって書いてあったのですが、デフォルト値が1024GBなのでこれでいきます。IOPSも1500以上が推奨ですが、25,000あるので問題ありません。

image.png

ボリュームのアタッチ

仮想マシン作成する画面でボリュームを新規作成したので、Webコンソール上ではアタッチされています。仮想マシンの内部での作業がありますのでやっていきます。

以下でコマンドを確認できます。

image.png

これを実行します。

image.png

アタッチのタイプにはparavirtualizedとiSCSIがあるみたいですが、iSCSIでアタッチされていましたのでその手順でやりました。

paravirtualizedだとコマンド入力のところが不要になるみたいですね。

ボリュームのマウント

情報が少なくてよくわかってないが、以下の記事を参考にしました。

# parted /dev/sdb mklabel gpt
# parted -a optimal /dev/sdb mkpart primary 0% 100%
# parted /dev/sdb print
# mkfs.xfs /dev/oracleoci/oraclevdb1
# mkdir /mnt/data
# chown opc:opc /mnt/data
# mount /dev/oracleoci/oraclevdb1 /mnt/data
# vi /etc/fstab
/dev/oracleoci/oraclevdb1 /mnt/data xfs defaults 0 2

ネットワーク・セキュリティ・グループ

作成ボタン

image.png

3000,3001,7900をあけます。

image.png

インスタンスの画面で、VNICにアタッチします。

image.png

ポート開放

$ sudo firewall-cmd --add-port=3000/tcp --permanent
$ sudo firewall-cmd --add-port=3001/tcp --permanent
$ sudo firewall-cmd --add-port=7900/tcp --permanent
$ sudo firewall-cmd --reload

Node.jsのインストール

$ node -v
v22.4.1

Dockerのインストール

Oracle Linuxですが、CentOSの手順を実施して無事インストールできました。

Docker Composeのインストール

こちらを参考にさせて頂きます。

image.png

docker-composeをdocker上で動かすみたいです。

Symbol Bootstrapのインストール

gitが無いのでインストール

$ sudo yum install -y git

Symbol Bootstrapのインストール

$ git clone https://github.com/symbol/symbol-bootstrap
$ cd symbol-bootstrap
$ npm i
$ npm run build
$ sudo npm i -g .

Symbol Bootstrapのセットアップ

$ mkdir alice
$ cd alice
$ symbol-bootstrap config -p mainnet -a dual

image.png

うーむ、Running image using Exec: symbolplatform/symbol-server:gcc-1.0.3.7 bash createNodeCertificates.shのとこ、arm64でないイメージを使っているのにうまくいっている。

とりあえず次へ。

$ symbol-bootstrap compose

docker-compose.ymlを編集します。

$ vi target/docker/dockse-compose.yml
version: '2.4'
services:
    db:
        user: '1000:1000'
        environment:
            MONGO_INITDB_DATABASE: catapult
        container_name: db
-       image: mongo:6.0.14
+       image: arm64v8/mongo:6.0.14
        command: mongod --dbpath=/dbdata --bind_ip=db --wiredTigerCacheSizeGB 2
        stop_signal: SIGINT
        working_dir: /docker-entrypoint-initdb.d
        volumes:
            - ./mongo:/docker-entrypoint-initdb.d:ro
            - ../databases/db:/dbdata:rw
    node:
        user: '1000:1000'
        container_name: node
-       image: symbolplatform/symbol-server:gcc-1.0.3.7
+       image: symbolplatform/symbol-server:gcc-1.0.3.7-arm64
        command: /bin/bash /symbol-commands/start.sh /usr/catapult ./data server broker node NORMAL true
        stop_signal: SIGINT
        working_dir: /symbol-workdir
        restart: on-failure:2
        ports:
            - '7900:7900'
        volumes:
            - ../nodes/node:/symbol-workdir:rw
            - ./server:/symbol-commands:ro
        depends_on:
            - db
            - broker
    broker:
        user: '1000:1000'
        container_name: broker
-       image: symbolplatform/symbol-server:gcc-1.0.3.7
+       image: symbolplatform/symbol-server:gcc-1.0.3.7-arm64
        working_dir: /symbol-workdir
        command: /bin/bash /symbol-commands/start.sh /usr/catapult ./data broker server broker NORMAL
        stop_signal: SIGINT
        restart: on-failure:2
        volumes:
            - ../nodes/node:/symbol-workdir:rw
            - ./server:/symbol-commands:ro
        depends_on:
            - db
    rest-gateway:
        container_name: rest-gateway
        user: '1000:1000'
        environment:
            npm_config_cache: /symbol-workdir
-       image: symbolplatform/symbol-rest:2.4.4
+       image: ishidad2/symbol-rest:2.4.3
        command: npm start --prefix /app /symbol-workdir/rest.json
        stop_signal: SIGINT
        working_dir: /symbol-workdir
        ports:
            - '3000:3000'
        restart: on-failure:2
        volumes:
            - ../gateways/rest-gateway:/symbol-workdir:rw
        depends_on:
            - db
        networks:
            default:
                ipv4_address: 172.20.0.25
networks:
    default:
        ipam:
            config:
                -
                    subnet: 172.20.0.0/24

arm64版のrestが公式になかったので、こちらでだいさんが作成されていたのを借ります。

Symbol Bootstrapの起動

$ symbol-bootstrap run

起動しました。

image.png

ヘルスチェック

$ symbol-bootstrap healthCheck

image.png

Running image using Exec: symbolplatform/symbol-server:gcc-1.0.3.7のところで、arm64版を使っていないので失敗するかなと思ったんですが、エラーが出ませんでした。

APIノードとREST Gatewayがつながらない

image.png

image.png

なぜだろう。原因は最初からわからないし調べてない。いろいろ試してみてるが解決してない。

情報の取得はできるが、トランザクションがきっと送信できない。

ちなみに

symbol-bootstrap 1.1.10ではconfigから失敗する

$ symbol-bootstrap config -p mainnet -a dual

サーバー証明書か何かを作るときにdockerを起動しているようで失敗しました。それをarm64版のイメージに変えればいいのでしょうが、ちょっと大変そうな気がします。

image.png

ストップ&スタートでdbコンテナの名前が変わった

symbol-bootstrap stopの後、symbol-bootstrap startしたら、dbコンテナの名前がdbからa2df583cc223_dbに変わりました。

image.png

なのでsymbol-bootstrap healthCheckが通らなくなりました。

image.png

理由はわかりません。

いろいろ試してたらならなくなりました。

おわりに

次回は(あれば)、ノードを動かすのに1か月いくらかかったのかを出せたらと思います。

また、OCIについて始めたばっかりなのでリソースを適当に設定しています。勉強してどんどん変えていこうと思います。

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?