En este post se explicará como se implementó y desplegó una red blockchain con Hyperledger fabric usando el servicio de ordenamiento Kafka.
En posts anteriores se utilizó el servicio de ordenamiento solo, el cual es usado para entornos de desarrollo, sin embargo para entornos productivos se recomienda usar Kafka o Raft.
git clone https://github.com/jorgedison/Prueba-Hyperledger-Fabric/
cd multiorganization-network
La creación del material criptográfico se detalla en la siguiente entrada https://usuarioperu.com/2019/10/28/implementacion-de-red-blockchain-con-hyperledger-fabric/ se tomó como referencia la siguiente configuración en el archivo configtx.yaml para el servicio de ordenamiento kafka.
Orderer: &OrdererDefaults
OrdererType: kafka
Addresses:
- orderer.midominio.com:7050
- orderer2.midominio.com:7050
- orderer3.midominio.com:7050
- orderer4.midominio.com:7050
- orderer5.midominio.com:7050
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 98 MB
PreferredMaxBytes: 512 KB
Kafka:
Brokers:
- kafka.example.com:9092
- kafka2.example.com:9092
- kafka3.example.com:9092
- kafka4.example.com:9092
Organizations:
Host 0
Se ejecuta el script para crear y configurar la red swarm.
./creaswarm.sh
Se ejecuta el script para crear la red para comunicación de contenedores/servicios de docker
./creanetwork.sh
Host 1, 2, 3
docker swarm join - token SWMTKN-1–3anjn4oxwcn278hie3413zaakr4higjdqr2x89r5605p1dosui-a4u407pt6c5ta2ont7pqdnm hostname0:2377
Se deberá reemplazar, el token, con el token generado y el hostname en el host 0, una vez realizados, verificar la lista de nodos.
./listanodos.sh
Host 0
Iniciaremos el servicio de ordenamiento.
cd kafka
./deploy.sh
Host 1
cd org1
./deploy.sh
El script inicia el servicio de autorización para este host, un cliente “cli”, 2 nodos, cada uno con su respectiva base de datos couchdb para el host 1.
Host 2
cd org2
./deploy.sh
Se crearan los servicios en el host 2.
Host 3
cd org3
./deploy.sh
Se crearan los servicios en el host 3.
Para validar los contenedores y servicios iniciados, se puede ejecutar el siguiente comando:
docker service ls