一、环境搭建
各个主机的配置情况:
10.10.44.120
orderer0.example.com ca0.org1.example.com
10.10.44.122
orderer1.example.com peer0.org1.example.com
zookeeper0.example.com kafka0.example.com
couchdb0.org1.example.com
10.10.44.123
orderer2.example.com peer1.org1.example.com
zookeeper1.example.com kafka1.example.com
couchdb1.org1.example.com
10.10.44.124
peer0.org2.example.com zookeeper2.example.com
kafka2.example.com couchdb0.org2.example.com
10.10.44.129
peer1.org2.example.com kafka3.example.com
couchdb1.org2.example.com ca0.org2.example.com
每台主机都需要先进行单机的区块链部署,所以以下步骤适用于所有主机。
1、Docker-CE 安装
1)安装docker-ce
step 1: 安装必要的一些系统工具
#sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Step 2: 添加软件源信息
#sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Step 3: 更新并安装 Docker-CE
#sudo yum makecache fast
#sudo yum -y install docker-ce
#docker --version
3)docker 启动
#service docker start
4)docker 开机自启动
#chkconfig docker on
2、Docker-compose 安装
1)Compose 安装
#curl https://get.daocloud.io/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
#chmod +x /usr/local/bin/docker-compose
2)是否安装成功
#docker-compose --version
3、Go语言安装
1)下载解压
#cd /opt
#mkdir golang
#cd golang
#curl -O https://www.golangtc.com/static/go/1.9.2/go1.9.2.linux-amd64.tar.gz
#tar -zxvf go1.9.2.linux-amd64.tar.gz
#vi /etc/profile
export GOROOT=/opt/golang/go
export PATH=$GOROOT/bin:$PATH
export GOPATH=/opt/gopath
以上内容添加到/etc/profile后面
#source /etc/profile
3) 查看版本
#go version
4)查看环境变量
#go env
4、git 安装
5、Fabric的安装
1)Fabric的下载
#mkdir -p $GOPATH/src/github.com/hyperledger/
#cd $GOPATH/src/github.com/hyperledger/
#git clone https://github.com/hyperledger/fabric.git
#cd fabric
#git checkout v1.1.0
6、加速镜像
#sudo mkdir -p /etc/docker
#sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://8w1wqmsz.mirror.aliyuncs.com"]
}
EOF
#sudo systemctl daemon-reload
#sudo systemctl restart docker
7、下载镜像
#cd /opt/gopath/src/github.com/hyperledger/fabric/scripts
#vim bootstrap.sh
#./bootstrap.sh
#docker images
部镜像截图如下:
8、安装gcc
#yum install gcc
9、运行e2e_cli
#cd /opt/gopath/src/github.com/hyperledger/fabric
#make release
#cd /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli
#vim base/peer-base.yaml
(将圈住的部分改为图中所显示的名称)
# bash generateArtifacts.sh
#./network_setup.sh up
(出现ALL GOOD 即单机部署成功)
关闭网络
#./network_setup.sh down
二、多机部署
10.10.44.120
orderer0.example.com
ca0.org1.example.com
10.10.44.122
orderer1.example.com
peer0.org1.example.com
zookeeper0.example.com
kafka0.example.com
couchdb0.org1.example.com
10.10.44.123
orderer2.example.com
peer1.org1.example.com
zookeeper1.example.com
kafka1.example.com
couchdb1.org1.example.com
10.10.44.124
peer0.org2.example.com
zookeeper2.example.com
kafka2.example.com
couchdb0.org2.example.com
10.10.44.129
peer1.org2.example.com
kafka3.example.com
couchdb1.org2.example.com
ca0.org2.example.com
一、生成公私钥、证书、创世区块。
1) 切换到orderer.example.com这台服务器上
#cd /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli
# ./generateArtifacts.sh mychannel
2)生成的crypto-config和channel-artifacts使用scp命令拷贝到其它四台电脑上的e2e_cli的目录中,如:
#scp -r crypto-config [email protected] /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli
#scp -r channel-artifacts [email protected] /opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli
二、编写对应的配置文件
配置文件已经打包在该目录下。
三、将对应的配置文件发送到对应的主机上
四、配置hosts文件,将相应的域名加入到/etc/hosts 文件内。
多点集群的启动
1)zookeeper是一个集群插件,所以了一单独先启动
#docker-compose -f docker-zk.yaml up -d
其中-d 代表的是后台运行的意思,如果要看日志可以加 –-verbose 参数
上述命令在每一个含有zookeeper的主机进行。
2)kafka 启动依赖于zk集群,所以接下来进行kafka集群的启动。
#docker-compose -f docker-kafka.yaml up -d
同样在每台机器上启动
3)orderer 排序服务启动
#docker-compose -f docker-orderer.yaml up -d
分别在每台机器上启动
4)peer 组织节点的启动
#docker-compose -f docker-peer.yaml up -d
分别在每个节点上启动
五、运行脚本
启动脚本已在文档中备份
进入examplecli客户端容器
#docker exec -it examplecli bash
#./script001.sh
升级链码:
首先在cli 下把需要升级的链码进行安装,安装需要注意链码的路径,和版本号的变化,具体命令在多机启动脚本里详见。然后是升级命令。
#ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
#CORE_PEER_TLS_ENABLED=true
#peer chaincode upgrade -o orderer0.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -v 2.0 -c '{"Args":["init"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
验证:
#peer chaincode invoke -o orderer0.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n mycc -v 2.0 -c'{"Args":["setdigital","digital0","keyvalue","enya"]}'
如图所示:
**