LoginSignup
6
4

More than 5 years have passed since last update.

catapult-service-bootstrapにpeer-nodeを追加する その1 サービス追加

Last updated at Posted at 2018-08-31

概要

catapultを簡単に動かせるcatapult-service-bootstrapというものがあります。

これは、docker-composeで動かすことができます。

そして、docker-compose.ymlに書いてある一つ一つのコンテナをサービスと呼びます。

catapult-service-bootstrapを動かすと、このようなコンテナが立ち上がります。

$ docker-compose ps
                          Name                                        Command               State            Ports         
---------------------------------------------------------------------------------------------------------------------------
catapult-service-bootstrap_api-node-0-nemgen_1        bash -c /bin-mount/wait /s ...   Exit 0                         
catapult-service-bootstrap_api-node-0_1               bash -c /bin-mount/wait /s ...   Up                             
catapult-service-bootstrap_db_1                       docker-entrypoint.sh bash  ...   Up       27017/tcp             
catapult-service-bootstrap_generate-configs_1         ash -c /bin-mount/wait /ad ...   Exit 0                         
catapult-service-bootstrap_generate-raw-addresses_1   bash -c /bin-mount/generat ...   Exit 0                         
catapult-service-bootstrap_init-db_1                  docker-entrypoint.sh bash  ...   Exit 1                         
catapult-service-bootstrap_peer-node-0-nemgen_1       bash -c /bin-mount/wait /s ...   Exit 0                         
catapult-service-bootstrap_peer-node-0_1              bash -c /bin-mount/wait /s ...   Up                             
catapult-service-bootstrap_peer-node-1-nemgen_1       bash -c /bin-mount/wait /s ...   Exit 0                         
catapult-service-bootstrap_peer-node-1_1              bash -c /bin-mount/wait /s ...   Up                             
catapult-service-bootstrap_rest-gateway_1             ash -c /bin-mount/wait /st ...   Up       0.0.0.0:3000->3000/tcp
catapult-service-bootstrap_store-addresses_1          ash -c /bin-mount/wait /ad ...   Exit 0                   

今回は、これに、新しいサービスとして、ピアノードを追加して行きたいと思います。名前は、peer-node-2にしましょう。

別サーバーでやる場合はこちら⇒catapult-service-bootstrapにpeer-nodeを追加する その2 サーバー編

作業

ファイル編集

cd build/catapult-config
cp -r peer-node-0 peer-node-2
cd peer-node-2/userconfig/resources

config-harvesting.properties

build/generated-addresses/addresses.yamlを開き、nemesis_addresses_harvesting以下にあるアカウントの2番目の秘密鍵を設定します。(1番目はpeer-node-0が使用しています。)

config-harvesting.properties
harvestKey = <nemesis_addresses_harvesting private key>

config-node.properties

[localnode]の箇所を変更します。

config-node.properties
[localnode]

host = peer-node-2
friendlyName = peer-node-2
version = 0
roles = Peer

config-user.properties

build/generated-addresses/addresses.yamlを開き、peer_nodes以下にあるアカウントの3番目の秘密鍵を設定します。(1番目はpeer-node-0が、2番目はpeer-node-1が使用しています。)

config-user.properties
[account]

bootKey = <peer_nodes private key>

peers-p2p.json

以下をpeer-node-1の下に挿入します。カンマを忘れないで。

公開鍵は、build/generated-addresses/addresses.yamlを開き、peer_nodes以下にあるアカウントの3番目のやつ。

peers-p2p.json
    {
      "publicKey": "<peer_nodes public key>",
      "endpoint": {
        "host": "peer-node-2",
        "port": 7900
      },
      "metadata": {
        "name": "peer-node-2",
        "roles": "Peer"
      }
    }

docker-compose.yml

docker-compose.ymlに以下を追記します。

docker-compose.yml

  peer-node-2-nemgen:
    build: dockerfiles/nemgen
    command: bash -c "/bin-mount/wait /state/configs-generated && /bin/bash /userconfig/nemgen.sh && touch /state/peer-node-2-nemgen"
    stop_signal: SIGINT
    volumes:
    - ./build/nemesis/:/nemesis
    - ./data/peer-node-2:/data:rw
    - ./bin/bash:/bin-mount
    - ./build/state:/state:rw
    depends_on:
    - generate-configs

  peer-node-2:
    build: dockerfiles/catapult
    command: bash -c "/bin-mount/wait /state/peer-node-2-nemgen && /bin/bash /userconfig/startServer.sh"
    stop_signal: SIGINT
    volumes:
    - ./build/catapult-config/peer-node-2/userconfig/resources/:/userconfig/resources/
    - ./data/peer-node-2:/data:rw
    - ./bin/bash:/bin-mount
    - ./build/state:/state
    depends_on:
    - generate-configs
    - peer-node-2-nemgen

起動

$ docker-compose up -d peer-node-2
Starting catapult-service-bootstrap_generate-configs_1 ... done
Creating catapult-service-bootstrap_peer-node-2-nemgen_1 ... done
Creating catapult-service-bootstrap_peer-node-2_1        ... done

ログを確認。

ブロック同期に時間がかかります。

$ docker-compose logs -f --tail=100 peer-node-2
<debug> (chain::CompareChains.cpp@95) comparing chain scores: 78219980565058755 (local) vs 2339774398129255418 (remote) 
<debug> (chain::ChainSynchronizer.cpp@290) pulling blocks from remote with common height 7561 (fork depth = 0) 
<info> (chain::ChainSynchronizer.cpp@203) peer returned 360 blocks (heights 7562 - 7921) 
<debug> (disruptor::Disruptor.cpp@42) disruptor queuing element 22 (360 blocks (heights 7562 - 7921) [1A000000] from Remote_Pull) 
<info> (chain::RemoteApiForwarder.h@65) completed 'synchronizer task' (peer-node-0 @ peer-node-0) with result Success 
<debug> (utils::StackLogger.h@37) pushing scope 'PosImportanceCalculator::recalculate' 
<debug> (observers::PosImportanceCalculator.cpp@65) recalculated importances (22 / 25 eligible) 
<debug> (utils::StackLogger.h@47) popping scope 'PosImportanceCalculator::recalculate' (0ms) 
<info> (disruptor::ConsumerDispatcher.cpp@44) completing processing of element 22 (360 blocks (heights 7562 - 7921) [A2A9E8D6] from Remote_Pull), last consumer is 0 elements behind 

ブロック高と速度を計算して、必要なら寝ましょう。

わたしの環境では、およそ3秒で360ブロックでした。

確認

ブロックエクスプローラーを見てみます。

作業前は、このように、一人のHarvesterしかいませんでした。

image.png

ハーベストするピアノードを追加したことにより、Harvesterが二人になりました。

image.png

所感

catapult-service-bootstrapに、ピアノードを追加することができました。

追加するためには、いくつかのファイル編集を行う必要があります。

peers-p2p.jsonについて、今回はpeer-node-2のものだけ編集しました。しかし、ネットワークをより強固にするために、peer-node-0peer-node-1api-node-0に対して、同じようにしておくのが良いと思います。

理想的には、docker-compose up -d --scale peer-node=10 api-node=3みたいにできるようにすることです。しかし、それは大工事になりそうです。

別サーバーでやってみました⇒catapult-service-bootstrapにpeer-nodeを追加する その2 サーバー編

関連記事

catapult-service-bootstrapにpeer-nodeを追加する その1 サービス追加
https://qiita.com/planethouki/items/b80fe29157d80a63122c

catapult-service-bootstrapにpeer-nodeを追加する その2 サーバー編
https://qiita.com/planethouki/items/4c73a6b924b92529bd32

catapult-service-bootstrap その3 ホスト名とポート変更
https://qiita.com/planethouki/items/d365f2344c0f7a6c3523

catapult-service-bootstrap その4 チェーンの手動削除
https://qiita.com/planethouki/items/7ec5404701adeb96bb8e

catapult-service-bootstrap その5 catapult.tools.health/network
https://qiita.com/planethouki/items/5ed19ae8ceb67ad6fee0

6
4
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
4