sudo iptables -L INPUT -n -v | grep :7050
最后查出来原因在于我的-o写的有问题,端口要和orderer节点所监听的端口对应,也不能忘了写端口。-o这一部分出错,就会对网络配置产生影响,在控制台就会出现tls握手出错的问题。
4.2 加入普通节点
首先要进入容器内部来创建通道
docker exec -it cli1 bash
peer channel join -b ./channel-artifacts/genesis_block.pb
我这里是把节点放在两个cli容器的
4.3 为通道设置锚节点
锚节点的作用就是让不同组织底下的节点互相能够进行通讯,发现对方的节点。
进入cli1容器中,获取配置文件并输入到指定文件
peer channel fetch config channel-artifacts/config_block.pb -o orderer.example.com:7050 --ordererTLSHostnameOverride orderer.example.com -c hellofabric-channel --tls --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
进入channel-artifacts文件夹下,使用 configtxlator 工具来进行通道配置任务(该工具主要由两个功能,一个是执行 protobuf 和 json 两种数据结构的转换,另一个是执行配置更新)。
首先,将配置块信息从 protobuf 类型转换为可读的 json 类型
configtxlator proto_decode --input config_block.pb --type common.Block --output config_block.json
jq '.data.data[0].payload.data.config' config_block.json > config.json
这样我们才可以让我们读懂配置文件并进行一些修改。
拷贝一个 config.json 的副本作为备份
cp config.json config_copy.json
使用 jq 修改配置文件,将 Org1
中的普通节点(peer0.org1.example.com:7051
)加入到配置文件中,这样我们就有了更新版本的配置文件了
jq '.channel_group.groups.Application.groups.Org1MSP.values += {"AnchorPeers":{"mod_policy": "Admins","value":{"anchor_peers": [{"host": "peer0.org1.example.com","port": 7051}]},"version": "0"}}' config_copy.json > modified_config.json