Implantação do Fabric multi-machine kafka (modo docker)

O Fabric é baseado no método docker e no processo detalhado de configuração e implantação kafka de várias máquinas.

Mais tecnologia de blockchain e classificação de aplicativos:

Blockchain applicationBlockchain     development

Ethernet Square | Tecido | BCOS | criptografia | algoritmo de consenso | bitcoinOutra cadeia

Economia de tokenCenários financeiros tradicionais | Finanças descentralizadas | Rastreabilidade antifalsificação | Compartilhamento de dados | Depósito confiável

 

As etapas para construir uma rede de malha de kafka de várias máquinas com base no modo docker são as seguintes.

Planejamento de nó distribuído:

node1: kafka1 zookeeper1 orderer1
 
node2: kafka2 zookeeper2 orderer2 peer1
 
node3: kafka3 zookeeper3 orderer3 peer2
 
node4: kafka4 peer3

Configuração de rede IP de cada nó (vim / etc / hosts)

172.27.34.201 orderer1.trace.com zookeeper1 kafka1
 
172.27.34.202 orderer2.trace.com zookeeper2 kafka2 peer0.org1.trace.com org1.trace.com
 
172.27.34.203 orderer3.trace.com zookeeper3 kafka3 peer1.org2.trace.com org2.trace.com
 
172.27.34.204 kafka4 peer2.org3.trace.com org3.trace.com

Requerimentos ambientais

tecido v1.1

docker (17.06.2-ce ou superior)

docker-compose (1.14.0 ou superior)

go (1.9.x ou superior)

instalação docker

Remova o instalado anteriormente

sudo yum remove docker docker-common docker-selinux docker-engine

Instale algumas dependências

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

Baixe e instale o pacote rpm

sudo yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.06.2.ce-1.el7.centos.x86_64.rpm

vá atualizar:

rm -rf /usr/local/go/
 
wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz

Download da imagem do Docker

docker pull registry.docker-cn.com/hyperledger/fabric-peer:x86_64-1.1.0
 
docker pull registry.docker-cn.com/hyperledger/fabric-orderer:x86_64-1.1.0
 
docker pull registry.docker-cn.com/hyperledger/fabric-tools:x86_64-1.1.0
 
docker pull hyperledger/fabric-couchdb
 
docker pull hyperledger/fabric-ca
 
docker pull hyperledger/fabric-ccenv
 
docker pull hyperledger/fabric-baseos
 
docker pull hyperledger/fabric-kafka
 
docker pull hyperledger/fabric-zookeeper

Alterar rótulo:

docker tag b7bfddf508bc hyperledger/fabric-tools:latest
 
docker tag ce0c810df36a hyperledger/fabric-orderer:latest
 
docker tag b023f9be0771 hyperledger/fabric-peer:latest

Exclua o mesmo:

docker rmi registry.docker-cn.com/hyperledger/fabric-tools:x86_64-1.1.0
 
docker rmi registry.docker-cn.com/hyperledger/fabric-orderer:x86_64-1.1.0
 
docker rmi registry.docker-cn.com/hyperledger/fabric-peer:x86_64-1.1.0

Salve a imagem e envie para outros nós:

=> node1:

mkdir -p /data/fabric-images-1.1.0-release
 
docker save 5b31d55f5f3a > /data/fabric-images-1.1.0-release/fabric-ccenv.tar
 
docker save 1a804ab74f58 > /data/fabric-images-1.1.0-release/fabric-ca.tar
 
docker save d36da0db87a4 > /data/fabric-images-1.1.0-release/fabric-zookeeper.tar
 
docker save a3b095201c66 > /data/fabric-images-1.1.0-release/fabric-kafka.tar
 
docker save f14f97292b4c > /data/fabric-images-1.1.0-release/fabric-couchdb.tar
 
docker save 75f5fb1a0e0c > /data/fabric-images-1.1.0-release/fabric-baseos.tar
 
docker save b7bfddf508bc > /data/fabric-images-1.1.0-release/fabric-tools.tar
 
docker save ce0c810df36a > /data/fabric-images-1.1.0-release/fabric-orderer.tar
 
docker save b023f9be0771 > /data/fabric-images-1.1.0-release/fabric-peer.tar
 
docker save b023f9be0771 > /data/fabric-images-1.1.0-release/fabric-peer.tar
 
docker save b023f9be0771 > /data/fabric-images-1.1.0-release/fabric-peer.tar
 
cd /data/fabric-images-1.1.0-release
 
scp -r ./* [email protected]:/tmp/docker/fabric-images/

Em node2, node3, node4:

docker load < fabric-baseos.tar
 
docker tag 75f5fb1a0e0c hyperledger/fabric-baseos:latest
 
docker load < fabric-ca.tar
 
docker tag 1a804ab74f58 hyperledger/fabric-ca:latest
 
docker load < fabric-ccenv.tar

node1 :

A operação está sob / rastreabilidade do Projeto

Baixe o arquivo binário (versão v1.1):

https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/linux-amd64-1.1.0/

1. Definições do arquivo de configuração:


Gere os arquivos de configuração necessários para o nó:
./bin/cryptogen generate --config=./crypto-config_kafka.yaml

2. Gere o bloco de fundação:

Parte da mudança (endereço do cluster):

 

Implantação do Fabric multi-machine kafka (modo docker)

 

Coloque o arquivo em / traceabilityProject e execute-o neste diretório:

(Deve ser renomeado para arquivo configtx.yaml)

export FABRIC_CFG_PATH=$PWD
 
mkdir ./channel-artifacts
 
./bin/configtxgen -profile TestOrgsOrdererGenesis -outputBlock ./channel-artifacts/orderer.genesis.block

Três. Gere o arquivo de configuração do canal:

./bin/configtxgen -profile TestOrgsChannel -outputCreateChannelTx ./channel-artifacts/tracechannel.tx -channelID tracechannel

4. Ambiente de inicialização e configuração de arquivo

Observação : como a rede e os dados desaparecem sempre que o contêiner é destruído, isso é inaceitável para o ambiente de produção, portanto, considere a persistência dos dados.

Componentes que precisam persistir dados: Orderer, Peer, Kafka, zookeeper

Adicione no arquivo de inicialização:

Orderer:
 
environment: - ORDERER_FILELEDGER_LOCATION=/traceabilityProject/orderer/fileLedger volumes: - /traceabilityProject/orderer/fileLedger:/traceabilityProject/orderer/fileLedger
 
Peer:
 
environment: - CORE_PEER_FILESYSTEMPATH=/traceabilityProject/peer/production volumes: - /traceabilityProject/peer/production:/traceabilityProject/peer/production
 
Kafka:
 
environment: #Kafka数据也要持久化 - KAFKA_LOG.DIRS=/traceabilityProject/kafka/kafka-logs #数据挂载路径 volumes: - /traceabilityProject/kafka/kafka-logs:/traceabilityProject/kafka/kafka-logs
 
zookeeper:
 
volumes: #因为zookeeper默认数据存储路径为/data及/datalog - /traceabilityProject/zookeeper1/data:/data - /traceabilityProject/zookeeper1/datalog:/datalog

A configuração detalhada é mostrada no seguinte documento yaml

node1:

Em seguida, crie três pastas kafka, orderer e zookeeper para armazenar dados de forma persistente

 

Implantação do Fabric multi-machine kafka (modo docker)

 

docker-compose -f ./node1-docker-compose-up.yaml up -d

Para parar o recipiente, use:

docker-compose -f ./node1-docker-compose-up.yaml down

Nota:

Copie os arquivos de configuração correspondentes gerados no diretório de volume no arquivo de configuração (esses diretórios não podem estar vazios!)

(

O diretório do bloco genesis deve montar arquivos em vez de pastas, mas docker-compose gera pastas todas as vezes, altere-o manualmente para o arquivo de bloco genesis:

- ../channel-artifacts/orderer.genesis.block:/traceabilityProject/orderer.genesis.block

)

Copie o diretório de trabalho / traceabilityProject para outros nós:

scp -r /traceabilityProject/ [email protected]:/
 
scp -r /traceabilityProject/ [email protected]:/
 
scp -r /traceabilityProject/ [email protected]:/

node2 :

Crie quatro pastas kafka, ordenador, zookeeper e par para armazenar dados de forma persistente

 

Implantação do Fabric multi-machine kafka (modo docker)

 

docker-compose -f ./node2-docker-compose-up.yaml up -d
 
docker-compose -f ./node2-docker-compose-up.yaml down --remove-orphans
 
node2-docker-compose-up.yaml

node3 :

Crie três pastas kafka, orderer e peer para armazenar dados de forma persistente

 

Implantação do Fabric multi-machine kafka (modo docker)

 

node4 :

Crie duas pastas, kafka e peer, para armazenar dados de forma persistente

 

Implantação do Fabric multi-machine kafka (modo docker)

Nota:

Somente depois que todos os zookeeper e kafka forem iniciados (quatro arquivos são iniciados ao mesmo tempo, haverá algum atraso e tempo de espera), o nó do ordenador não será desativado.

(Caso contrário, um erro:

Não é possível postar mensagem CONNECT = disjuntor está aberto)

Five.Peer node operation (transação, canal, código de cadeia)

peer1 (node2) :

(1) Entre no container

docker exec -it cli bash

Verifique se há arquivos no diretório de trabalho do contêiner, caso contrário, copie-os manualmente do host para o contêiner do docker:

 

Implantação do Fabric multi-machine kafka (modo docker)

 

(2) Criar um canal

No container

cd /traceabilityProject/peer/channel-artifacts
peer channel create -o orderer1.trace.com:7050 -c tracechannel -t 50 -f ./tracechannel.tx

(3) Envie tracechannel.block para outros nós:

Como / traceabilityProject / peer / channel-artifacts é o diretório de montagem do contêiner, o arquivo já existe na máquina física.

Copie para dois nós de mesmo nível:

Saia do contêiner e entre no diretório do host: / traceabilityProject / channel-artifacts

scp -r tracechannel.block [email protected]:/traceabilityProject/channel-artifacts
scp -r tracechannel.block [email protected]:/traceabilityProject/channel-artifacts

Porque / traceabilityProject / channel-artifacts é o ponto de montagem de volumes no contêiner cli, no contêiner.

(4) Junte-se ao canal

Insira o diretório do contêiner / traceabilityProject / peer / channel-artifacts novamente:

peer channel join -b tracechannel.block

(

Instruções de reinicialização completas:

docker-compose -f node1-docker-compose-up.yaml down --volumes --remove-orphans docker volume prune

)

(Mesmo se o nó âncora não estiver definido, toda a rede Fabric ainda pode operar normalmente)

(5) Instale o código de corrente

peer chaincode install -n cc_producer -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/tireTraceability-Demo/main/

(6) Inicialização

peer chaincode instantiate -o orderer1.trace.com:7050 -C tracechannel -n cc_producer -v 1.0 -c '{"Args":["init"]}' -P "OR ('Org1MSP.member','Org2MSP.member','Org3MSP.member')"

pee2 (nó3):

docker exec -it cli bash
 
cd channel-artifacts/
 
peer channel join -b tracechannel.block
 
peer chaincode install -n cc_agency -v 1.0 -p github.com/hyperledger/fabric/chaincode/go/traceability/src/origin_agency/main/
 
peer chaincode instantiate -o orderer1.trace.com:7050 -C tracechannel -n cc_agency -v 1.0 -c '{"Args":["init"]}' -P "OR ('Org1MSP.member','Org2MSP.member','Org3MSP.member')"

peer3 (node4):

docker exec -it cli bash
 
cd channel-artifacts/
 
peer channel join -b tracechannel.block
 
peer chaincode install -n cc_producer -v 1.0 -p github.com/hyperledger/fabric/chaincode/go/traceability/src/origin_producer/main/
 
peer chaincode install -n cc_agency -v 1.0 -p github.com/hyperledger/fabric/chaincode/go/traceability/src/origin_agency/main/
 
peer chaincode install -n cc_retailer -v 1.0 -p github.com/hyperledger/fabric/chaincode/go/traceability/src/origin_retailer/main/
 
peer chaincode instantiate -o orderer1.trace.com:7050 -C tracechannel -n cc_retailer -v 1.0 -c '{"Args":["init","A","B","C"]}' -P "OR ('Org1MSP.member','Org2MSP.member','Org3MSP.member')"

(Cada vez que você reiniciar o contêiner, você precisa passar pelo processo novamente, adicionar canal, instalar e instalar três códigos de cadeia no varejista, mas inicializar apenas cc_retailer)

Instruções de reinicialização completas:

docker-compose -f node1-docker-compose-up.yaml down --volumes --remove-orphans
 
docker-compose -f node2-docker-compose-up.yaml down --volumes --remove-orphans
 
docker-compose -f node3-docker-compose-up.yaml down --volumes --remove-orphans
 
docker-compose -f node4-docker-compose-up.yaml down --volumes --remove-orphans docker volume prune

E exclua os dados persistentes

rm -rf kafka/* orderer/* zookeeper1/*
 
rm -rf kafka/* orderer/* peer/* zookeeper2/*
 
rm -rf kafka/* orderer/* peer/* zookeeper3/*
 
rm -rf kafka/* peer/*

Ao fechar o contêiner antes de encerrar:

docker-compose -f /traceabilityProject/startup/node1-docker-compose-up.yaml down
 
docker-compose -f /traceabilityProject/startup/node2-docker-compose-up.yaml down
 
docker-compose -f /traceabilityProject/startup/node3-docker-compose-up.yaml down
 
docker-compose -f /traceabilityProject/startup/node4-docker-compose-up.yaml down

Link original: implantação do Fabric multi-machine kafka (modo docker) 

Acho que você gosta

Origin blog.csdn.net/JonasErosonAtsea/article/details/109236329
Recomendado
Clasificación