Saltar al contenido

Organización de la cadena de bloques en VMware vSphere: de la teoría a la práctica

Graduación de poderes en los diferentes niveles del sistema

Blockchain es una tecnología fundamentalmente nueva que ha atraído cada vez más atención últimamente. Especialistas de sectores como finanzas, economía, medicina, logística, IoT están trabajando activamente en proyectos de investigación y experimentales utilizando blockchain, ya que esta tecnología no solo está orientada a las criptomonedas.

Tenga en cuenta que Hyperledger Fabric no es una empresa, ni una criptomoneda, sino un proyecto de código abierto organizado por la comunidad de la Fundación Linux, que se creó para promover la tecnología blockchain. Es algo que parece un centro para el desarrollo abierto de blockchains industriales. Hyperledger Fabric ofrece amplias oportunidades, lo que permite a los desarrolladores centrarse en lanzar un proyecto de cadena de bloques con su propia lógica empresarial.

Vista interna

La esencia de la utilidad Blockchain en vSphere es la capacidad de implementar múltiples nodos del clúster Hyperledger Fabric, los llamados Pods, de una manera muy simple. Al mismo tiempo, se utilizan tres cuentas en el servicio Blockchain:

Cada uno de ellos tiene poderes correspondientes en diferentes niveles del sistema: Cloud Admin puede monitorear y trabajar con infraestructura basada en vSphere, Blockchain Admin – administrar la plataforma blockchain (Hyperledger Fabric) y el desarrollador Blockchain se enfoca en desarrollar aplicaciones utilizando la plataforma blockchain.

Graduación de poderes en los diferentes niveles del sistema

Hyperledger Fabric es un sistema distribuido implementado mediante contenedores. Se puede implementar en una plataforma que admita el estándar de contenedores OCI. Al mismo tiempo, el sistema Kubernetes se utiliza para administrar los contenedores de Fabric. Este ejemplo de Fabric v1.0 se basa en la siguiente arquitectura:

Arquitectura de soluciones

Arquitectura de soluciones

Instrucciones de distribución

Para implementar un proyecto de blockchain usando Hyperledger Fabric, se deben cumplir una serie de requisitos previos, que incluyen:

Una vez que haya descargado el paquete BoV, estará listo para instalar Fabric 1.0 en vSphere. Comencemos con vCenter, donde debe seguir estos pasos:

Distribución de Kubernetes

Distribuimos Kubernetes mediante el proyecto de código abierto Kubernetes Anywhere (https://github.com/kubernetes/kubernetes-anywhere). Para esto:

Modelo de VM

Modelo de VM

Implementación 1 de Kubernetes

Distribución de Kubernetes - 2

Distribución de Kubernetes - 3

Distribución de Kubernetes - 4

Distribución de Kubernetes - 5

Ahora debe esperar hasta que se cree el clúster de Kubernetes. Utilice el siguiente comando para verificar el estado:

Distribución de Kubernetes - 5

Como puede ver en la figura, los servicios se están ejecutando. Luego, copia el contenido del archivo. fase1 / vsphere /.tmp / kubeconfig.json en una máquina Linux, guardando el contenido en un directorio ~ /.kube / config… Si no hay un directorio en la máquina Linux, debe crearlo:

Distribución de Kubernetes - 6

Salga del contenedor y regrese al host de Linux ejecutando el siguiente comando en él:

Distribución de Kubernetes - 8

El comando volverá a mostrar la información del clúster. A continuación, configuramos el DNS que usa Docker en todos los nodos de trabajo de Kubernetes. Esto se debe a que Fabric crea un contenedor Docker para ejecutar una cadena de código fuera del control de Kubernetes. Por lo tanto, el demonio de Docker debe usar la información de DNS correcta en la red de Kubernetes. En este sentido, estamos realizando cambios en los nodos de Kubernetes. En nuestro ejemplo, estos son nodo1, nodo2, nodo3 y nodo4.

Lo primero editar el archivo / etc / default / docker:

Distribución de Kubernetes - 9

Tenga en cuenta que las direcciones IP utilizadas aquí se toman como ejemplos, en caso de configuración de producción, deben reemplazarse por otras válidas. Si se utiliza además un servidor proxy, la información al respecto debe incluirse en el archivo. / etc / default / docker:

Distribución de Kubernetes - 10

Reinicie el servicio Docker para que los cambios surtan efecto:

Distribución de Kubernetes - 11

El siguiente paso es implementar la plataforma blockchain (Tela)

Aquí debe configurar el servicio NFS, exportar el directorio compartido (en nuestro ejemplo, / opt / share) y verificar la configuración en el servidor NFS con la dirección IP de prueba 10.112.122.9. Para hacer esto, siga estos pasos:

Distribución de Kubernetes - 12

Distribución de Kubernetes - 13

Tenga en cuenta que el cliente NFS debe tener acceso de lectura / escritura al directorio / opt / share. Si se usa acceso anónimo, el propietario no es necesario y el elemento nogroup debe usarse en las propiedades del grupo de carpetas. De lo contrario, puede encontrar un error de autorización. Por lo tanto, vale la pena ejecutar el siguiente comando en el host NFS:

Distribución de Kubernetes - 14

A continuación, montemos el directorio en el host de Linux:

Distribución de Kubernetes - 15

Cargue el archivo del paquete BoV BaaS.tar, extraiga los archivos y cambie el directorio actual a ./baas. Luego ejecutamos el comando para cargar las herramientas requeridas por Fabric. En este caso, cryptogen y configtxgen deben guardarse en el directorio. / Bin.

Distribución de Kubernetes - 16

Luego, en el directorio setupCluster / templates /, actualizamos los dos archivos de plantilla, realizando cambios en la configuración del servidor NFS.

En particular, el archivo setupCluster / cluster-config.yaml contiene la definición de la topología del servicio blockchain que debe modificarse. A continuación se muestra una posible opción:

Archivo SetupCluster / cluster-config.yaml

Archivo SetupCluster / cluster-config.yaml

Ahora necesita cambiar el directorio a baas / setupCluster y ejecutar el script generateAll.sh para generar todos los archivos de configuración de Fabric y los archivos de definición de archivo de Kubernetes para el servicio blockchain.

Distribución de Kubernetes - 17

Cambie el directorio a baas / setupCluster / transform y ejecute el comando para implementar Fabric como un contenedor en Kubernetes:

Distribución de Kubernetes - 18

Verificación del grupo blockchain creado:

Distribución de Kubernetes - 19

Se puede realizar una verificación similar a través de la interfaz de usuario del panel de Kubernetes:

Interfaz de usuario del panel de Kubernetes

Interfaz de usuario del panel de Kubernetes

A continuación, verificamos el entorno ejecutando una cadena de código de ejemplo y cambiamos la ruta de trabajo a baas / setupCluster /:

Distribución de Kubernetes - 20

Cree mychannel usando configtxgen:

Distribución de Kubernetes - 21

Cree una transacción de configuración para actualizar peer0.org1 como canal de pares de anclaje de mychannel y haga lo mismo para peer0.org2.

Distribución de Kubernetes - 22

Copie el directorio ./channel-artifacts en / opt / share /:

Distribución de Kubernetes - 23

Descargue el código de red de muestra del proyecto Hyperledger Fabric, luego copie el directorio chaincode_example02 en / opt / share / channel-aritfacts /. Los siguientes comandos primero crean un canal, luego se conectan a peer0 Org1. A continuación, se establece y crea un código de cadena con dos pares clave / valor: a = 100 yb = 200. Después de eso, peer0 Org2 se agrega al canal y se establece un código de «cadena». Luego se crea una transacción para transferir el valor 10 de a a b. Se solicita un valor, que debe mostrarse como 90. Comando para Org1:

Distribución de Kubernetes - 24

Como se muestra en la figura, cli org1 se denominó cli-1569835662-01c5z. Ejecute el comando cli org1:

Distribución de Kubernetes - 25

Y en el cli pod creamos un canal llamado mychannel:

Distribución de Kubernetes - 26

Una vez creado el canal, el ordenante devuelve el archivo mychannel.block. Se utilizará para ingresar al canal. La siguiente figura muestra el resultado del comando para crear un canal:

Distribución de Kubernetes - 27

Ahora copie mychannel.block en el recurso compartido de NFS para que otro cli pueda usarlo:

Distribución de Kubernetes - 28

Como resultado, debería obtener lo siguiente:

Distribución de Kubernetes - 29

Actualizar peer0 Org1 como punto de anclaje de mi canal:

Distribución de Kubernetes - 30

Establezca el código de cadena mycc en peer0:

Distribución de Kubernetes - 31

El siguiente resultado indica que el código encadenado se instaló correctamente:

Distribución de Kubernetes - 32

Crear código de cadena mycc:

Distribución de Kubernetes - 33

Luego, se crea el contenedor de cadena. Sin embargo, no está gestionado por Kubenetes debido al diseño del Fabric. El comando anterior usa pee0.org1 (asignado al nodo 3) para crear una cadena. El contenedor del código concatenado se puede encontrar ejecutando «docker ps» en el nodo 3, como se muestra en la figura:

Distribución de Kubernetes - 34

Pedimos chaincode:

Distribución de Kubernetes - 35

Verificando el estado del código de cadena, donde el valor «a» debe ser 100 como instancia específica:

Distribución de Kubernetes - 36

Usamos lo mismo en Org2:

Distribución de Kubernetes - 37

Como se muestra en la figura, cli org2 se denominó cli-2586364563-vclmr. Ingrese el comando cli org2 para la línea de comando de Fabric:

Distribución de Kubernetes - 38

En cli pod org2 Peer0 org2 conecta el canal:

Distribución de Kubernetes - 39

Actualice Peer0 org2 como asociación:

Distribución de Kubernetes - 40

Instalar chaincode:

Distribución de Kubernetes - 41

Pedimos chaincode:

Distribución de Kubernetes - 42

Dado que se ha creado una instancia del código de cadena mycc, este comando devuelve un valor de 100:

Distribución de Kubernetes - 43

Llamamos al código de encadenamiento para actualizar la grabadora de canales. Esto crea una transacción para transferir el valor 10 de a a b:

Distribución de Kubernetes - 44

En este caso, el resultado de la consulta debería ser nuevamente igual a 90:

Distribución de Kubernetes - 45

Conclusión

En este artículo, le presentamos la utilidad Blockchain on vSphere que permite a los administradores implementar una plataforma blockchain basada en el hipervisor ESXi. También analizamos el proceso de implementación de Hyperledger Fabric utilizando BoV en detalle. Esté atento a los nuevos materiales del primer blog corporativo de IaaS, donde continuaremos presentándole las soluciones actuales y requeridas del mundo de las tecnologías blockchain y en la nube.

El texto original se puede encontrar en el sitio VMware