En este post se explicará como se implementó y desplegó una red blockchain con Hyperledger fabric usando el servicio de ordenamiento RAFT, usado desde la versión 1.4.x
En Hyperledger Fabric, el algoritmo de consenso Raft sigue un modelo de tipo líder y seguidor. En realidad, todos los líderes se seleccionan dinámicamente de un lote de nodos de pedido dentro de la red. Más aún, el líder replica principalmente cualquier mensaje a todos los nodos siguientes.
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 raft tener las siguientes consideraciones
Orderer: &OrdererDefaults
OrdererType: etcdraft
EtcdRaft:
Consenters:
- Host: orderer.midominio.com
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer.midominio.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer.midominio.com/tls/server.crt
- Host: orderer2.midominio.com
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer2.midominio.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer2.midominio.com/tls/server.crt
- Host: orderer3.midominio.com
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer3.midominio.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer3.midominio.com/tls/server.crt
- Host: orderer4.midominio.com
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer4.midominio.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer4.midominio.com/tls/server.crt
- Host: orderer5.midominio.com
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer5.midominio.com/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/midominio.com/orderers/orderer5.midominio.com/tls/server.crt
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: 99 MB
PreferredMaxBytes: 512 KB
Al momento de generar el material criptografico, la carpeta crypto-config mostrara una estructura similar a la siguiente:
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 etcdraft
./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
Fuente: https://github.com/hyperledger/fabric
Referencia: http://thesecretlivesofdata.com/raft/