長安チェーン同期ノードの構成と起動

ノード証明書の生成

1. デフォルトのスクリプトは、同期ノード構成を生成します

使用中で

./prepare_pk.sh

チェーン構成を生成するときのデフォルト

crypto-config\wx-org1.chainmaker.org\node

2 種類のノードの証明書ファイルが生成されます。1 つはコンセンサス ノード consensus1 で、もう 1 つは同期ノード common1 です。

2. chainmaker-cryptogenまたは自己構築のCA 証明書サービスを介して同期ノード証明書を生成します。

同期ノード構成生成

起動ノード設定ファイルには、コンセンサスノードの起動設定しかありません.同期ノードを起動する必要がある場合は、新しい同期ノード設定を追加する必要があります.具体的な手順は次のとおりです.

1. 复制部署包
$ cd build/release
$ cp -rf chainmaker-v2.0.0-wx-org1.chainmaker.org chainmaker-v2.0.0-wx-org1.chainmaker.org_common1
2. 把chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/bin下所有的.sh脚本中所有wx-org1.chainmaker.org替换为wx-org1.chainmaker.org_common1
3. 重命名
$ cd build/release/chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/config
$ mv wx-org1.chainmaker.org wx-org1.chainmaker.org_common1
4. 拷贝chainmaker-cryptogen扩展生成的crypto-config/wx-org1.chainmaker.org/node/common1 到 chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/config/wx-org1.chainmaker.org_common1/certs/node下
5. 修改chainmaker.yml
   把chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/config/wx-org1.chainmaker.org_common1/chainmaker.yml中所有路径中包含的wx-org1.chainmaker.org替换为wx-org1.chainmaker.org_common1。注意这里是指所有的路径,千万别把node模块里边的org_id改了,这个org_id表示的是同步节点所属的组织。
   修改node模块,把 certs/node/consensus1/consensus1.sign.key 修改为 certs/node/common1/common1.sign.key
   修改node模块,把 certs/node/consensus1/consensus1.sign.crt 修改为 certs/node/common1/common1.sign.crt
   修改net模块,把 certs/node/consensus1/consensus1.tls.key 修改为 certs/node/common1/common1.tls.key
   修改net模块,把 certs/node/consensus1/consensus1.tls.crt 修改为 certs/node/common1/common1.tls.crt
   修改net模块,把 listen_addr: /ip4/0.0.0.0/tcp/11301 修改为 listen_addr: /ip4/0.0.0.0/tcp/11306
   修改rpc模块,把 certs/node/consensus1/consensus1.tls.crt 修改为 certs/node/common1/common1.tls.crt
   修改rpc模块,把 certs/node/consensus1/consensus1.tls.key 修改为 certs/node/common1/common1.tls.key
   修改rpc模块,把 port: 12301 修改为 port: 12306
   修改monitor模块,把 port: 14321 修改为 port: 14326
   修改pprof模块,把 port: 24321 修改为 port: 24326
6. 修改chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/config/wx-org1.chainmaker.org_common1/chainconfig/bc1.yml中的trust_roots模块。
   把所有 ../config/wx-org1.chainmaker.org 修改为 ../config/wx-org1.chainmaker.org_common1
7. 启动节点
$ cd build/release/chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/bin
$ ./start.sh
8. End

例外解決

問題 1: 同期ノードが正常に起動できない

[Blockchain]    blockchain/chainmaker_server.go:192     init blockchain[chain1] failed, fail to initialize identity management service: [setup cert member failed, organization information in certificate and in input parameter do not match [certificate: wx-org1.chainmaker.org, parameter: wx-org1.chainmaker.org_common1]]

この例外の理由は、chainmaker.yml のすべてのパスに含まれる wx-org1.chainmaker.org を wx-org1.chainmaker.org_common1 に変更するときに、node モジュールの org_id を wx-org1.chainmaker.org_common1 に置き換えるためです。 org_id は同期ノードが所属する組織を示しており、ノードの組織 ID は wx-org1.chainmaker.org であるため、common1 なしのサフィックスに戻すことができます。

質問 2: 同期ノード同期ブロック エラー

2022-06-29 16:10:37.641 [ERROR] [Storage] @chain1       [email protected]/blockstore_impl.go:525        chain[chain1] failed to write log, block[1], err:out of order
2022-06-29 16:10:37.641 [ERROR] [Core] @chain1  common/committer.go:90  out of order
2022-06-29 16:10:37.641 [ERROR] [Core] @chain1  common/block_helper.go:961      cache add block err: out of order
2022-06-29 16:10:37.641 [ERROR] [Sync] @chain1  sync/routine.go:70      process msg failed, reason: failed add block to chain
2022-06-29 16:11:12.561 [ERROR] [Storage] @chain1       blockfiledb/blockfile.go:478    out of order, b.entry.index: 2 and l.lastIndex+uint64(1): 1
2022-06-29 16:11:12.561 [ERROR] [Storage] @chain1       blockfiledb/blockfile.go:481    your block file db is damaged or not use this feature before, please check your disable_block_file_db setting in chainmaker.yml

この例外の理由は、不適切な設定が原因で、最初の起動後にいくつかのブロック データがファイルまたはデータベースに書き込まれたためです. 設定ファイルを変更して再起動した後、新しい同期ノードは他のコンセンサス ノードからブロックに同期できません.データ, このとき, 前回の誤起動で生成されたブロックデータをクリーンアップする必要があります. クリーンアップ方法は, ノード設定ファイルのデータディレクトリに移動し, 以下のフォルダを削除することです. mysql に役立つ場合, mysql とノードに関連するすべてのデータベースをクリーンアップする必要があります。それを削除し、ノードを再起動して復元します。

おすすめ

転載: blog.csdn.net/h363659487/article/details/125524966