• 长安链同步节点配置与启动


    节点证书生成

    1、默认脚本生成同步节点配置

    在使用

    ./prepare_pk.sh

    生成链配置的时候,默认

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

    里边生成了两类节点的证书文件,一个是共识节点consensus1,一个是同步节点common1。

    2、通过 chainmaker-cryptogen 或者自建的 CA证书服务 生成同步节点证书

    同步节点配置生成

    在启动节点配置文件中,只有共识节点的启动配置,如果需要启动同步节点,则需要自己新增一份同步节点配置,具体步骤如下:

    1. 1. 复制部署包
    2. $ cd build/release
    3. $ cp -rf chainmaker-v2.0.0-wx-org1.chainmaker.org chainmaker-v2.0.0-wx-org1.chainmaker.org_common1
    4. 2. 把chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/bin下所有的.sh脚本中所有wx-org1.chainmaker.org替换为wx-org1.chainmaker.org_common1
    5. 3. 重命名
    6. $ cd build/release/chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/config
    7. $ mv wx-org1.chainmaker.org wx-org1.chainmaker.org_common1
    8. 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下
    9. 5. 修改chainmaker.yml
    10. 把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表示的是同步节点所属的组织。
    11. 修改node模块,把 certs/node/consensus1/consensus1.sign.key 修改为 certs/node/common1/common1.sign.key
    12. 修改node模块,把 certs/node/consensus1/consensus1.sign.crt 修改为 certs/node/common1/common1.sign.crt
    13. 修改net模块,把 certs/node/consensus1/consensus1.tls.key 修改为 certs/node/common1/common1.tls.key
    14. 修改net模块,把 certs/node/consensus1/consensus1.tls.crt 修改为 certs/node/common1/common1.tls.crt
    15. 修改net模块,把 listen_addr: /ip4/0.0.0.0/tcp/11301 修改为 listen_addr: /ip4/0.0.0.0/tcp/11306
    16. 修改rpc模块,把 certs/node/consensus1/consensus1.tls.crt 修改为 certs/node/common1/common1.tls.crt
    17. 修改rpc模块,把 certs/node/consensus1/consensus1.tls.key 修改为 certs/node/common1/common1.tls.key
    18. 修改rpc模块,把 port: 12301 修改为 port: 12306
    19. 修改monitor模块,把 port: 14321 修改为 port: 14326
    20. 修改pprof模块,把 port: 24321 修改为 port: 24326
    21. 6. 修改chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/config/wx-org1.chainmaker.org_common1/chainconfig/bc1.yml中的trust_roots模块。
    22. 把所有 ../config/wx-org1.chainmaker.org 修改为 ../config/wx-org1.chainmaker.org_common1
    23. 7. 启动节点
    24. $ cd build/release/chainmaker-v2.0.0-wx-org1.chainmaker.org_common1/bin
    25. $ ./start.sh
    26. 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:同步节点同步区块报错

    1. 2022-06-29 16:10:37.641 [ERROR] [Storage] @chain1 v2@v2.2.1/blockstore_impl.go:525 chain[chain1] failed to write log, block[1], err:out of order
    2. 2022-06-29 16:10:37.641 [ERROR] [Core] @chain1 common/committer.go:90 out of order
    3. 2022-06-29 16:10:37.641 [ERROR] [Core] @chain1 common/block_helper.go:961 cache add block err: out of order
    4. 2022-06-29 16:10:37.641 [ERROR] [Sync] @chain1 sync/routine.go:70 process msg failed, reason: failed add block to chain
    5. 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
    6. 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

    此异常的原因为第一次因错误配置导致启动后有部分区块数据已经写到文件或者db中了,后边修改配置文件重新启动后,会导致新同步节点无法从其他共识节点同步到区块数据,此时需要把前边不正确启动所产生的区块数据清理,清理方式为到节点配置文件的data目录,删掉下边的文件夹,如果有用到mysql的需要把mysql与节点相关的数据库全部删掉,重启节点即可恢复。

  • 相关阅读:
    小视频APP源码选择指南:挑选最适合你的开发框架
    Android开发基础——Activity和Intent
    深度学习论文阅读目标检测篇(七)中英对照版:YOLOv4《Optimal Speed and Accuracy of Object Detection》
    天软特色因子看板 (2023.10 第05期)
    【架构师视角系列】QConfig配置中心系列之Server端(三)
    自动化测试框架(二)读取配置文件中内容
    力扣练习——9 从链表中删去总和值为零的连续节点
    MySQL学习笔记3:排序规则和排序规则的影响
    react实现一个搜索部门(input + tree)
    数据结构和算法学习之动态规划解决背包问题
  • 原文地址:https://blog.csdn.net/h363659487/article/details/125524966