Hyperledger fabric+kafka+docker-compose多机部署

本文档详细介绍了如何在多台主机上部署Hyperledger Fabric网络,包括使用Kafka作为排序服务,Docker Compose进行配置管理,以及链码的安装、实例化和调用过程。
摘要由CSDN通过智能技术生成
主机 A B C D
IP 139.180.137.89 139.180.209.250 139.180.137.0 198.13.46.60
角色 zookeeper0
kafka0
orderer0.trace.com
zookeeper1
kafka1
orderer1.trace.com
zookeeper2
kafka2
peer0.orgdairy.trace.com
peer1.orgdairy.trace.com
peer0.orgprocess.trace.com
peer1.orgprocess.trace.com
ca_OrgDairy
ca_OrgProcess
cli
kafka3
peer0.orgsell.trace.com
peer1.orgsell.trace.com
ca_OrgSell

 

1.准备工作

(1)从https://github.com/zmx6999/fabric_tools下载工具包fabric_tools

(2)将fabric_tools里面的init.sh拷至主机A、B、C、D 执行

./init.sh 190116

将安装docker docker-compose go 下载fabric fabric-samples fabric镜像 并创建目录/root/fabric/scripts/fabric-samples/190116/network

2.生成证书 创世区块 channel.tx 锚节点相关文件

(1)将fabric_tools里面的generate.json generate.go generate.sh拷至C主机

/root/fabric/scripts/fabric-samples/190116/network 并切换到该目录

(2)修改配置文件generate.json内容如下

{
  "domain": "trace.com",
  "orderers": [
    "orderer0",
    "orderer1"
  ],
  "kafkas": [
    "kafka0",
    "kafka1",
    "kafka2",
    "kafka3"
  ],
  "peer_orgs": [
    {
      "org_name": "OrgDairy",
      "peer_count": 2,
      "user_count": 1,
      "anchor_peers": [
        "peer0"
      ]
    },
    {
      "org_name": "OrgProcess",
      "peer_count": 2,
      "user_count": 1,
      "anchor_peers": [
        "peer0"
      ]
    },
    {
      "org_name": "OrgSell",
      "peer_count": 2,
      "user_count": 1,
      "anchor_peers": [
        "peer0"
      ]
    }
  ],
  "genesis_profile": "ThreeOrgsOrdererGenesis",
  "channel_profile": "ThreeOrgsChannel",
  "channel": "trace"
}

(3)执行

chmod +x generate.sh
./generate.sh

这样就在当前目录生成crypto-config文件夹存放证书文件 创世区块genesis.block channel.tx 锚节点文件DairyOrgMSPanchors.tx ProcessOrgMSPanchors.tx SellOrgMSPanchors.tx

3.生成docker-compose配置文件并启动zookeeper kafka orderer peer ca cli

(1)将fabric_tools里面的docker_compose_cfggen.json docker_compose_cfggen.go docker_compose_cfggen.sh分别拷至A、B、C、D主机/root/fabric/scripts/fabric-samples/190116/network 并在各主机切换到该目录

(2)A主机编辑docker_compose_cfggen.json内容如下

{
  "domain": "trace.com",
  "zookeepers": [
    {
      "host_name": "zookeeper0",
      //外部端口
      "ports": [
        "2181", //第一项对应内部端口2181
        "2888", //第二项对应内部端口2888
        "3888" //第三项对应内部端口3888
      ],
      "zoo_my_id": "1",
      "zoo_servers": "server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888"
    }
  ],
  "kafkas": [
    {
      "host_name": "kafka0",
      "broker_id": "0",
      "zookeepers": [
        "zookeeper0:2181",
        "zookeeper1:2181",
        "zookeeper2:2181"
      ]
    }
  ],
  "orderers": [
    {
      "orderer_name": "orderer0",
      "kafka_brokers": [
        "kafka0",
        "kafka1",
        "kafka2",
        "kafka3"
      ],
      //外部端口
      "ports": [
        "7050" //对应内部端口7050
      ]
    }
  ],
  "hosts": [
    "zookeeper0:139.180.137.89",
    "kafka0:139.180.137.89",
    "orderer0.trace.com:139.180.137.89",
    "zookeeper1:139.180.209.250",
    "kafka1:139.180.209.250",
    "orderer1.trace.com:139.180.209.250",
    "zookeeper2:139.180.137.0",
    "kafka2:139.180.137.0",
    "peer0.orgdairy.trace.com:139.180.137.0",
    "peer1.orgdairy.trace.com:139.180.137.0",
    "peer0.orgprocess.trace.com:139.180.137.0",
    "peer1.orgprocess.trace.com:139.180.137.0",
    "kafka3:198.13.46.60",
    "peer0.orgsell.trace.com:198.13.46.60",
    "peer1.orgsell.trace.com:198.13.46.60"
  ]
}

B主机编辑docker_compose_cfggen.json内容如下

{
  "domain": "trace.com",
  "zookeepers": [
    {
      "host_name": "zookeeper1",
      //外部端口
      "ports": [
        "2181", //第一项对应内部端口2181
        "2888", //第二项对应内部端口2888
        "3888" //第三项对应内部端口3888
      ],
      "zoo_my_id": "2",
      "zoo_servers": "server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888"
    }
  ],
  "kafkas": [
    {
      "host_name": "kafka1",
      "broker_id": "1",
      "zookeepers": [
        "zookeeper0:2181",
        "zookeeper1:2181",
        "zookeeper2:2181"
      ]
    }
  ],
  "orderers": [
    {
      "orderer_name": "orderer1",
      "kafka_brokers": [
        "kafka0",
        "kafka1",
        "kafka2",
        "kafka3"
      ],
      //外部端口
      "ports": [
        "8050" //对应内部端口7050
      ]
    }
  ],
  "hosts": [
    "zookeeper0:139.180.137.89",
    "kafka0:139.180.137.89",
    "orderer0.trace.com:139.180.137.89",
    "zookeeper1:139.180.209.250",
    "kafka1:139.180.209.250",
    "orderer1.trace.com:139.180.209.250",
    "zookeeper2:139.180.137.0",
    "kafka2:139.180.137.0",
    "peer0.orgdairy.trace.com:139.180.137.0",
    "peer1.orgdairy.trace.com:139.180.137.0",
    "peer0.orgprocess.trace.com:139.180.137.0",
    "peer1.orgprocess.trace.com:139.180.137.0",
    "kafka3:198.13.46.60",
    "peer0.orgsell.trace.com:198.13.46.60",
    "peer1.orgsell.trace.com:198.13.46.60"
  ]
}

C主机编辑docker_compose_cfggen.json内容如下

{
  "domain": "trace.com",
  "cas": [
    {
      "peer_org_name": "OrgDairy",
      //外部端口
      "ports": [
        "7054" //对应内部端口7054
      ],
      "admin_name": "admin",
      "admin_password": "adminpw"
    },
    {
      "peer_org_name": "OrgProcess",
      //外部端口
      "ports": [
        "8054" //对应内部端口7054
      ],
      "admin_name": "admin",
      "admin_password": "adminpw"
    }
  ],
  "zookeepers": [
    {
      "host_name": "zookeeper2",
      //外部端口
      "ports": [
        "2181", //第一项对应内部端口2181
        "2888", //第二项对应内部端口2888
        "3888" //第三项对应内部端口3888
      ],
      "zoo_my_id": "3",
      "zoo_servers": "server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888"
    }
  ],
  "kafkas": [
    {
      "host_name": "kafka2",
      "broker_id": "2",
      "zookeepers": [
        "zookeeper0:2181",
        "zookeeper1:2181",
        "zookeeper2:2181"
      ]
    }
  ],
  "peers": [
    {
      "peer_name": "peer0",
      "org_name": "OrgDairy",
      //外部端口
      "ports"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值