主机 | 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"