Implementación de Kafka de múltiples máquinas de fabric (modo acoplable)

Fabric se basa en el método de la ventana acoplable y en el proceso detallado de configuración e implementación de kafka en varias máquinas.

Más tecnología blockchain y clasificación de aplicaciones:

Blockchain applicationBlockchain     desarrollo

Ethernet Square | Fabric | BCOS | criptografía | algoritmo de consenso | bitcoinOtra cadena

Economía de FichasEscenarios Financieros tradicional | descentralizada Finanzas | Anti-falsificación de trazabilidad | Intercambio de Datos | Trusted fuerte

 

Los pasos para construir una red Fabric de kafka multimáquina basada en el modo docker son los siguientes.

Planificación de nodos distribuidos:

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

Configuración de IP de red de cada nodo (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

Requisitos medioambientales

tela v1.1

Docker (17.06.2-ce o superior)

docker-compose (1.14.0 o superior)

go (1.9.xo superior)

instalación de Docker

Eliminar el instalado previamente

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

Instalar algunas dependencias

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

Descargue e instale el paquete 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

ir a actualizar:

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

Descarga de imágenes de 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

Cambiar etiqueta:

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

Eliminar lo mismo:

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

Guarde la imagen y envíela a otros nodos:

=> nodo1:

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/

En nodo2, nodo3, nodo4:

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

nodo1:

La operación está bajo / trazabilidad Proyecto

Descargue el archivo binario (versión v1.1):

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

1. Configuración del archivo de configuración:


Genere los archivos de configuración necesarios para el nodo:
./bin/cryptogen generate --config=./crypto-config_kafka.yaml

2. Genere el bloque fundador:

Cambiar parte (dirección del clúster):

 

Implementación de Kafka de múltiples máquinas de fabric (modo acoplable)

 

Coloque el archivo en / traceabilityProject y luego ejecútelo en este directorio:

(Debe cambiarse el nombre a archivo configtx.yaml)

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

Tres. Genere el archivo de configuración del canal:

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

4. Entorno de inicio y configuración de archivos

Nota : Dado que la red y los datos desaparecen cada vez que se destruye el contenedor, esto es inaceptable para el entorno de producción, así que considere la persistencia de datos.

Componentes que necesitan conservar los datos: Orderer, Peer, Kafka, zookeeper

Agregue en el archivo de inicio:

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

La configuración detallada se muestra en el siguiente documento yaml

nodo1:

Luego cree tres carpetas kafka, orderer y zookeeper para almacenar datos de forma persistente

 

Implementación de Kafka de múltiples máquinas de fabric (modo acoplable)

 

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

Para detener el recipiente, use:

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

Nota:

Copie los archivos de configuración correspondientes generados en el directorio de volumen en el archivo de configuración (¡estos directorios no pueden estar vacíos!)

(

El directorio de bloques de genesis necesita montar archivos en lugar de carpetas, pero docker-compose genera carpetas cada vez, cámbielo manualmente al archivo de bloques de genesis:

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

)

Copie el directorio de trabajo / traceabilityProject a otros nodos:

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

nodo2:

Cree cuatro carpetas kafka, orderer, zookeeper, peer para almacenar datos de forma persistente

 

Implementación de Kafka de múltiples máquinas de fabric (modo acoplable)

 

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

nodo3:

Cree tres carpetas kafka, orderer y peer para almacenar datos de forma persistente

 

Implementación de Kafka de múltiples máquinas de fabric (modo acoplable)

 

nodo4:

Cree dos carpetas, kafka y peer, para almacenar datos de forma persistente

 

Implementación de Kafka de múltiples máquinas de fabric (modo acoplable)

Nota:

Solo después de que se inicien todos los cuidadores del zoológico y kafka (se inician cuatro archivos al mismo tiempo, habrá un tiempo de espera de retraso), el nodo de pedido no se desactivará.

(De lo contrario, un error:

No se puede publicar el mensaje CONNECT = el disyuntor está abierto)

Operación de nodo cinco.Peer (transacción, canal, código de cadena)

peer1 (nodo2) :

(1) Entrar en el contenedor

docker exec -it cli bash

Compruebe si hay archivos en el directorio de trabajo del contenedor, si no, cópielos manualmente desde el host al contenedor de la ventana acoplable:

 

Implementación de Kafka de múltiples máquinas de fabric (modo acoplable)

 

(2) Crea un canal

En el contenedor

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

(3) Envíe tracechannel.block a otros nodos:

Dado que / traceabilityProject / peer / channel-artifacts es el directorio de montaje del contenedor, el archivo ya existe en la máquina física.

Copiar en dos nodos de pares:

Salga del contenedor e ingrese al directorio de 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 es el punto de montaje de los volúmenes en el contenedor cli, en el contenedor.

(4) Únase al canal

Ingrese el directorio del contenedor / traceabilityProject / peer / channel-artifacts nuevamente:

peer channel join -b tracechannel.block

(

Instrucción de reinicio completa:

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

)

(Incluso si el nodo de anclaje no está configurado, toda la red Fabric aún puede funcionar normalmente)

(5) Instale el código de la cadena

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

(6) Inicialización

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 (nodo3):

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 (nodo4):

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 reinicia el contenedor, debe realizar el proceso nuevamente, agregar canal, instalar e instalar tres códigos de cadena en el minorista, pero solo inicializar cc_retailer)

Instrucción de reinicio completa:

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

Y borra datos persistentes

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

Al cerrar el contenedor antes de apagarlo:

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

Enlace original: Implementación de Kafka de múltiples máquinas de Fabric (modo acoplable) 

Supongo que te gusta

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