前言
在这里我推荐两位大神的博客,可以参考或者直接跟着这两位大神学习,我是阅读这两位大神的博客和《深度探索区块链Hyperledger技术与应用》一书部署的
《深度探索区块链Hyperledger技术与应用》作者:张增骏、董宁、朱轩彤、陈剑雄 著。
深蓝大大:https://www.cnblogs.com/studyzy/category/1024666.html
Aberic大神:https://www.cnblogs.com/aberic/category/1148898.html
所有的peer节点都是记账节点,负责验证从排序服务节点区块里的交易,维护状态数据和账本的副本。部分节点会执行交易并对出结果进行从签名背书,充当背书节点的角色。背书节点是动态的角色,是与具体链码绑定的。每一个链码在实例化的时候都会设置背书策略,指定那些节点对交易背书后才是有效的,也只有在应用程序向它发起交易背书请求的时候才是背书节点,其他的时候就是普通的记账节点,只负责验证交易并记账。
在准备篇介绍crypto-config.yaml时说了可以部署的peer节点是PeerOrgs.Template属性设置的(生成了对应的MSP证书),在这里部署peer0节点。
在配置文件中定义了五个org,每一个org中有两个peer(peer0和peer1),我们把这五个peer0分别部署在五个不同的机器上。node1-node5
下一篇:Hyperledger Fabric 1.0 快速搭建 -------- 多机部署 Fabric CA节点服务
开始
编写peer.yaml文件
[root@node1 ~]# mkdir -p /u01/chainConfig/configfile/peer
[root@node1 ~]# vi peer.yaml
#copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
version: '2'
services:
peer:
image: hyperledger/fabric-peer:x86_64-1.0.1
extends:
file: ../hosts.yaml #host文件是上一章节提到的
service: myYwhHost
environment:
- CORE_LOGGING_LEVEL=debug
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=${PEERNAME}:5984 #连接couchdb,保存状态数据,couchdb支持原生的json和字节数组的操作。
- CORE_LEDGER_STATE_COUCHDBCONFIG_PASSWORD=test
- CORE_LEDGER_STATE_COUCHDBCONFIG_USERNAME=test
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_PEER_TLS_ENABLED=true #日志的级别
- CORE_PEER_PROFILE_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt #用到了tls证书来通信
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
- CORE_PEER_ADDRESS=${PEERNAME}:7051
- CORE_PEER_ID=${PEERNAME}
- CORE_PEER_LOCALMSPID=${MSPID}
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=${PEERNAME}:7051
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.ywhOrg1.example.com:7051 #peer节点启动时连接的peer节点,一般配置同一个组织下的peer节点,其实这里我是都写得这个,有警告但是好像没影响到什么
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: peer node start
volumes:
- /var/run/:/var/run/
- /u01/chainConfig/crypto-config/peerOrganizations/${ORGNAME}/peers/${PEERNAME}/msp:/etc/hyperledger/fabric/msp
- /u01/chainConfig/crypto-config/peerOrganizations/${ORGNAME}/peers/${PEERNAME}/tls:/etc/hyperledger/fabric/tls
- /u01/data/peer/${PEERNAME}/:/var/hyperledger/
ports:
- 7051:7051/tcp
- 7052:7052/tcp
- 7053:7053/tcp
logging:
options: #这里应该是设置了日志的大小 和日志文件数量的max 最大文件数
max-size: "1024m"
max-file: "3"
couchdb: #启动couchdb
image: hyperledger/fabric-couchdb:x86_64-1.0.1
environment:
- COUCHDB_PASSWORD=test
- COUCHDB_USER=test
ports:
- 5984:5984
peer节点的配置文件配置好以后,把这个文件发送到node1-node5机器上相同目录下,然后启动,设置的环境变量在peer.yaml文件中都用到了。
node1机器上:
[root@node1 ~]# export PEERNAME=peer0.ywhOrg1.example.com
[root@node1 ~]# export ORGNAME= ywhOrg1.example.com
[root@node1 ~]# export MSPID=Ywh1OrgMSP
[root@node1 ~]# mkdir -p /u01/data/peer/${PEERNAME}
[root@node1 ~]# docker-compose -f /u01/chainConfig/configfile/peer/peer.yaml up -d
node2机器上
[root@node1 ~]# export PEERNAME=peer0.ywhOrg2.example.com
[root@node1 ~]# export ORGNAME= ywhOrg2.example.com
[root@node1 ~]# export MSPID=Ywh2OrgMSP
[root@node1 ~]# mkdir -p /u01/data/peer/${PEERNAME}
[root@node1 ~]# docker-compose -f /u01/chainConfig/configfile/peer/peer.yaml up -d
node3-node5机器上跟上面的相同,注意修改三个环境变量就可以了,这里要修改的这些,要根据准备篇中的配置文件相对应的修改,应该不是很难就能知道修改哪些。
在启动每一个peer节点时也会相应的跟着启动一个couchDB数据库,用来存储状态数据,记录的是交易执行的结果,最新的状态代表了通道上所有键的最新值。
暂时对于couchDB理解的不好,先不写了,跟着启动没有报错即可。
把peer启动后,在node1-node5节点上应该有以下容器,Kafka,Orderer,Zookeeper,Peer,CouchDB五个容器。
[root@node1 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
721a15534ad2 hyperledger/fabric-orderer:x86_64-1.0.1 "orderer" 8 days ago Up 8 days 0.0.0.0:7050->7050/tcp order
6b393d78f9ee hyperledger/fabric-kafka:x86_64-1.0.1 "/docker-entrypoint.…" 8 days ago Up 8 days 0.0.0.0:9092->9092/tcp, 9093/tcp kafka_kafka_1
68def5411279 hyperledger/fabric-zookeeper:x86_64-1.0.1 "/docker-entrypoint.…" 8 days ago Up 8 days 2888/tcp, 0.0.0.0:2181->2181/tcp, 0.0.0.0:12888->12888/tcp, 0.0.0.0:13888->13888/tcp, 3888/tcp zookeeper_zooleeper1_1
6c32182d844d hyperledger/fabric-peer:x86_64-1.0.1 "peer node start" 12 days ago Up 12 days 0.0.0.0:7051-7053->7051-7053/tcp peer_peer_1
a3d8ce2ed722 hyperledger/fabric-couchdb:x86_64-1.0.1 "tini -- /docker-ent…" 12 days ago Up 12 days 4369/tcp, 9100/tcp, 0.0.0.0:5984->5984/tcp peer_couchdb_1
可以用docker -logs -f [peer容器的名字] 来查看一下日志的信息,看是否有报错信息,如果有报错信息,可根据相应的错误更改,第一次部署时大概率上的错误都是证书文件不对,名字写错,创始区块的生成有问题等等,可以把配置文件中的信息确认一下,路径什么的。