• Hyperledger fabric在已有组织中增加节点


    fabric网络在创建时就已经确定了初始的节点数量,而在实际应用场景中可能会需要在某个组织中动态增加节点。这里以balance-transfer v1.0为例(2 Org,4 Peer),介绍如何在org1中加入第3个peer节点。

    一、追加新节点的身份信息

    首先需要在组织org1的MSP目录中追加新节点的证书和私钥信息,主要是用到cryptogen工具(v1.1.0以上版本)

    1.修改cryptogen.yaml文件(或者直接新建一个文件)中Template字段里的count参数,设置为需要该组织中存在的节点总数,可一次增加多个节点。

    这里只在org1加入一个节点,所以cryptogen.yaml文件修改部分如下:

    PeerOrgs:
      - Name: Org1
        Domain: org1.example.com
        CA:
           Hostname: ca 
        Template:
          Count: 3
          SANS:
            - "localhost"
        Users:
          Count: 1
    

    2.执行extend命令完成追加操作
    在artifacts/channel目录下执行:

    ./cryptogen extend --config=./cryptogen.yaml
    

    注:--config参数应以实际情况下配置文件的名称及路径为准

    二、编写新节点的docker配置文件

    接下来需要编写docker配置文件用于启动新节点,内容较为简单,只需要在已有节点的配置上稍作修改即可,注意避免容器端口的冲突。

    这里我将新节点的配置文件命名为new-peer.yaml,放置于artifacts目录下,以下是文件内容:

    version: '2'
    
    services:
    
      peer2.org1.example.com:
        container_name: peer2.org1.example.com
        extends:
          file:   base.yaml
          service: peer-base
        environment:
          - CORE_PEER_ID=peer2.org1.example.com
          - CORE_PEER_LOCALMSPID=Org1MSP
          - CORE_PEER_ADDRESS=peer2.org1.example.com:7051
        ports:
          - 7151:7051
          - 7153:7053
        volumes:
            - ./channel/crypto-config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/:/etc/hyperledger/crypto/peer
    

    启动新节点容器,在配置文件所在目录下执行:

    docker-compose -f new-peer.yaml up -d
    

    三、修改网络配置文件

    网络配置文件network-config.json用于帮助应用程序获取网络节点的地址等信息,是app与节点通信的关键,所以需要在该配置文件中增加新节点的信息。
    注:balance-transfer 1.1版本后已改为network-config.js文件。

    在json文件的org1部分的peers字段后添加"peer3"的信息,注意ip和端口等信息需要与上述docker配置文件中保持一致,内容如下:

    "peer3": {
        "requests": "grpcs://localhost:7151",
        "events": "grpcs://localhost:7153",
        "server-hostname": "peer2.org1.example.com",
        "tls_cacerts": "../artifacts/channel/crypto-config/peerOrganizations/org1.example.com/peers/peer2.org1.example.com/tls/ca.crt"
    }
    

    四、将新节点加入通道

    此时新增节点已经加入了区块链网络,但并没有加入某一个channel,所以是没有账本数据的。需要发送请求将其加入channel:

    curl -s -X POST 
        http://localhost:4000/channels/mychannel/peers 
        -H "authorization: Bearer $ORG1_TOKEN" 
        -H "content-type: application/json" 
        -d '{
        "peers": ["peer3"]
      }'
    

    请求中,$ORG1_TOKEN是通过注册获取的org1的token值,"peer3"是在网络配置文件中设置的新节点的别名。

    加入通道成功后,查看节点日志可以发现新节点开始从其他节点同步区块:

    docker logs peer2.org1.example.com
    

    五、安装链码

    加入channel后,peer3已经可以参与记账,但是不能指定该节点进行查询或交易,这时候需要发起请求安装chaincode:

    curl -s -X POST 
        http://localhost:$PORT/chaincodes 
        -H "authorization: Bearer $ORG1_TOKEN" 
        -H "content-type: application/json" 
        -d '{
        "peers": ["peer3"],
        "chaincodeName":"mycc",
        "chaincodePath":"github.com/example_cc",
        "chaincodeVersion":"v0"
      }'
    

    安装成功后指定新节点进行查询或交易操作,会自动生成该节点的chaincode镜像,并启动容器运行chaincode。在已有组织中新加节点的操作到这里就全部完成了!

    原文链接:https://zhayujie.com/add-peer.html

  • 相关阅读:
    CSS 浮动
    函数defined
    SVN提交冲突
    抽象方法和抽象类
    Teco测试总结
    面向对象三大特性(封装,继承,多态)之多态
    PHP工厂模式的简单实现
    DOM 访问节点
    c程序的执行过程
    PHP实现菱形与杨辉三角形【php趣味案例】
  • 原文地址:https://www.cnblogs.com/zhayujie/p/12941676.html
Copyright © 2020-2023  润新知