Hyperledger Fabric V2.5 生产环境部署文档
1.部署区块链网络
1. 安装基础依赖(分别执行)
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y git curl wget jq unzip build-essential libtool autoconf pkg-config
2.安装Docker(分别执行)
curl -fsSL https://get.docker.com -o get-docker.sh
chmod +x get-docker.sh
sh get-docker.sh --mirror Aliyun
sudo usermod -aG docker $USER
sudo systemctl start docker && sudo systemctl enable docker
sudo vi /etc/docker/daemon.json
{
"registry-mirrors" : [
"https://docker.1ms.run" ,
"https://docker.xuanyuan.me"
]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo curl -L "https://github.com/docker/compose/releases/download/v2.37.1/docker-compose-$( uname -s) -$( uname -m) " -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
3. 网络组件规划
IP
节点
端口
容器
10.6.0.13
peer0.org1.example.com
7051,7052,7053
peer0.org1.example.com
10.6.0.13
ca_org1
7054
ca.org1.example.com
10.6.0.13
cli
-
-
10.6.0.3
peer0.org2.example.com
7051,7052,7053
peer0.org2.example.com
10.6.0.3
ca_org2
7054
ca.org2.example.com
10.6.0.3
cli
-
-
10.6.0.7
orderer.example.com
7050
orderer.example.com
10.6.0.7
ca_orderer
7054
ca.orderer.example.com
4.主机互通(分别执行)
echo "10.6.0.13 ca.org1.example.com peer0.org1.example.com" | sudo tee -a /etc/hosts
echo "10.6.0.3 ca.org2.example.com peer0.org2.example.com" | sudo tee -a /etc/hosts
echo "10.6.0.7 orderer.example.com ca.orderer.example.com" | sudo tee -a /etc/hosts
5.创建目录(分别执行)
sudo mkdir -r /home/ubuntu/hyperledger/multinodes
sudo chown -R ubuntu:ubuntu /home/ubuntu/hyperledger/multinodes
6.下载二进制文件(orderer节点)
hyperledger-fabric-linux-amd64-2.5.5.tar.gz
hyperledger-fabric-ca-linux-amd64-1.5.15.tar.gz
7.编写CA 配置文件
orderer ca
cd /home/ubuntu/hyperledger/multinodes
cat > compose-ca.yaml << 'EOF'
services:
ca_orderer:
image: hyperledger/fabric-ca:1.5.7
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_CA_NAME=ca-orderer
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_PORT=7054
- FABRIC_CA_SERVER_CSR_CN=ca-orderer
- FABRIC_CA_SERVER_CSR_HOSTS=ca.orderer.example.com
ports:
- "7054:7054"
command: sh -c 'fabric-ca-server start -b admin:adminpw -d'
volumes:
- ./fabric-ca/ordererOrg:/etc/hyperledger/fabric-ca-server
container_name: ca_orderer
extra_hosts:
- "ca.orderer.example.com:10.6.0.7"
- "ca.org1.example.com:10.6.0.13"
- "ca.org2.example.com:10.6.0.3"
EOF
docker-compose -f docker-ca.yaml up -d
org1 ca
cd /home/ubuntu/hyperledger/multinodes
cat > compose-ca.yaml << 'EOF'
services:
ca_org1:
image: hyperledger/fabric-ca:1.5.7
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_CA_NAME=ca-org1
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_PORT=7054
- FABRIC_CA_SERVER_CSR_CN=ca-org1
- FABRIC_CA_SERVER_CSR_HOSTS=ca.org1.example.com
ports:
- "7054:7054"
command: sh -c 'fabric-ca-server start -b admin:adminpw -d'
volumes:
- ./fabric-ca/org1:/etc/hyperledger/fabric-ca-server
container_name: ca_org1
extra_hosts:
- "ca.orderer.example.com:10.6.0.7"
- "ca.org1.example.com:10.6.0.13"
- "ca.org2.example.com:10.6.0.3"
EOF
docker-compose -f docker-ca.yaml up -d
org2 ca
cd /home/ubuntu/hyperledger/multinodes
cat > compose-ca.yaml << 'EOF'
services:
ca_org2:
image: hyperledger/fabric-ca:1.5.7
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_CA_NAME=ca-org2
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_PORT=7054
- FABRIC_CA_SERVER_CSR_CN=ca-org2
- FABRIC_CA_SERVER_CSR_HOSTS=ca.org2.example.com
ports:
- "7054:7054"
command: sh -c 'fabric-ca-server start -b admin:adminpw -d'
volumes:
- ./fabric-ca/org2:/etc/hyperledger/fabric-ca-server
container_name: ca_org2
extra_hosts:
- "ca.orderer.example.com:10.6.0.7"
- "ca.org1.example.com:10.6.0.13"
- "ca.org2.example.com:10.6.0.3"
EOF
docker-compose -f docker-ca.yaml up -d
将各节点ca证书拷贝到其它节点 ,最终如下:
8.编写生成组织证书脚本
cd fabric-ca/
cat > registerEnroll.sh << 'EOF'
#!/bin/bash
function createOrg1 {
echo
echo "Enroll the CA admin"
echo
mkdir -p organizations/peerOrganizations/org1.example.com/
export FABRIC_CA_CLIENT_HOME=${PWD}/organizations/peerOrganizations