Fabric 多机环境搭建(ubuntu)
1、基本环境搭建
(1)配置GO、JAVA环境
下载最新golang 当时为1.14.6
golang官网:https://golang.org/dl/
wget https://studygolang.com/dl/golang/go1.15.linux-amd64.tar.gz
解压
tar -zxvf go1.15.linux-amd64.tar.gz -C /usr/local/
tips:如果要更新go的版本需要先删除之前/usr/local/go文件夹
安装jdk
https://www.oracle.com/java/technologies/javase-jdk14-downloads.html
解压
mkdir /opt/jdk -p
tar -zxvf jdk-12.0.1_linux-x64_bin.tar.gz -C /opt/jdk
配置环境变量
vim /etc/profile
将以下内容添加至/etc/profile文件末尾
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go #GO工作目录
export PATH=$PATH:/root/go/bin
export JAVA_HOME=/opt/jdk/jdk-14
export CLASSPATH=.:{JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
重新载入profile文件
source /etc/profile
(2)安装docker
https://docs.docker.com/engine/install/ubuntu/
安装校验
docker version
(3)安装gcc
查看是否安装有gcc
gcc --version
若没有则进行安装:
centos7执行以下指令安装:
yum -y install gcc gcc-c++ autoconf make
ubuntu执行以下指令安装:
apt-get build-dep gcc
2、开始部署fabric2.0
(1)安装docker-compose
Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
(2)Fabric源码下载
go get github.com/hyperledger/fabric
这个可能等的时间比较久,等完成后,我们可以在~/go/src/github.com/hyperledger/fabric中找到所有的最新的源代码。
设置版本
cd ~/go/src/github.com/hyperledger/fabric
git checkout release-2.1
编译
make all
3、多机环境部署
服务器分配
服务器ip | 10.190.80.10 | 10.190.80.25 | 10.190.80.41 |
---|---|---|---|
Order | Order1:7050 | Order2:7050 | Order3:7050 |
Peer | Peer0.org1:7051 -> couchdb1:5984 | Peer1.org1:7051 -> couchdb1:5984 Peer1.org2:8051 -> couchdb2:6984 | Peer0.org2:7051 -> couchdb1:5984 |
CLI | CLI | CLI | CLI |
配置域名解析
10的/etc/hosts文件如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 orderer1.example.com peer0.org1.example.com
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.190.80.25 orderer2.example.com peer1.org1.example.com peer1.org2.example.com
10.190.80.41 orderer3.example.com peer0.org2.example.com
25的/etc/hosts文件如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 orderer2.example.com peer1.org1.example.com peer1.org2.example.com
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.190.80.10 orderer1.example.com peer0.org1.example.com
10.190.80.41 orderer3.example.com peer0.org2.example.com
41的/etc/hosts文件如下:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 orderer3.example.com peer0.org2.example.com
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.190.80.10 orderer1.example.com peer0.org1.example.com
10.190.80.25 orderer2.example.com peer1.org1.example.com peer1.org2.example.com
证书配置
只需要在一台服务器通过crypto-config.yaml配置生成证书,并复制到其他服务器的证书目录中。
在10服务器生成证书:
./cryptogen generate --config=./crypto-config.yaml
复制到另外两台服务器:
scp -r ./crypto-config/* root@10.190.80.25:/home/ubuntu/test/multi_node/crypto-config/
scp -r ./crypto-config/* root@10.190.80.41:/home/ubuntu/test/multi_node/crypto-config/
通道配置
只需要在一台服务器通过configtx.yaml配置生成创世块、通道信息,并复制到其他服务器中。
生成创世区块
./configtxgen -profile SampleMultiNodeEtcdRaft -channelID sys-channel -outputBlock ./channel-artifacts/genesis.block
生成通道配置区块
./configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/mychannel.tx -channelID mychannel
生成锚节点信息
./configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
./configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./channel-artifacts/Org2MSPanchors.tx -channelID mychannel -asOrg Org2MSP
附录
停止并删除所有容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker volume prune -f
docker network prune -f