En este post se explicará como se implementó y desplegó una red blockchain con Hyperledger fabric en multiples hosts usando docker swarm, sobre una arquitectura básica, donde se usaron 4 maquinas con los siguientes recursos:
Host 0 | 2GB 1vCPU | orderer |
Host 1 | 2GB 1vCPU | ca1, cli, peer0, couchdb0, peer1, couchdb1 |
Host 2 | 2GB 1vCPU | ca2, peer0, couchdb0, peer1, couchdb1 |
Host 3 | 2GB 1vCPU | ca3, peer0, couchdb0, peer1, couchdb1 |
git clone https://github.com/jorgedison/Prueba-Hyperledger-Fabric/
cd multiorganization-network
Para generar las llaves criptográficas, se deberá usar los comando cryptogen y configtxgen, se puede revisar el siguiente post, donde se explica como hacerlo en una red donde se hace la implementación en un solo host https://usuarioperu.com/2019/10/28/implementacion-de-red-blockchain-con-hyperledger-fabric/
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 solo
./deploy.sh
Se puede utilizar los servicios de ordenamiento: Solo, Kafka, Raft, para las pruebas se usó el servicio de ordenamiento solo.
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
Cada host podría pertenecer a una organización en particular, esto dependerá en base a la definición de reglas de negocio y políticas establecidas para su uso, en función a esto se podrá establecer la arquitectura, organización y distribución de componentes y servicios que utilizará de la red blockchain.