Implementación de múltiples máquinas Hyperledger Fabric 1.0

Implementación de múltiples máquinas Hyperledger Fabric 1.0

Configuración del entorno

Antes de realizar la implementación de varias máquinas, debe asegurarse de que cada servidor se implemente correctamente en una sola máquina, y puede ejecutar el ejemplo oficial fabric/examples/e2e_cli.
Para conocer el proceso de construcción específico, consulte [https://blog.csdn.net/mellymengyan/article/details/77529390]

Selección de nodo

El autor usa 3 servidores para construir 5 nodos, incluido 1 nodo de pedido y 4 nodos de pares.

servidor nodo
192.168.2.2 peer0.org1.example.com
peer1.org1.example.com
cliente
192.168.2.3 peer0.org2.example.com
peer1.org2.example.com
192.168.2.4 orderer.example.com

Los lectores pueden asignar nodos según la cantidad de servidores.

Generar claves públicas y privadas, certificados, etc.

1. Seleccione cualquier servidor y fabric/examples/e2e_cliejecútelo
bash generateArtifacts.sh mychannel
en el directorio, en este momento se generan dos archivos channel-artifactsy en este directorio crypto-config.
channel-artifactsSe utiliza para que el ordenante cree un canal.
crypto-configSe utiliza para garantizar una comunicación segura entre los nodos.

2. Copie estos dos archivos en el mismo directorio en otros servidores. Si ya existen antes, deben eliminarse y reemplazarse.

Establezca los archivos de configuración de peer0.org1 y peer1.org1

192.168.2.2

Consulte el docker-compose-cli.yamlarchivo de configuración de compilación en el directorio e2e_cli , puede hacer una copia de este archivo y modificarlo sobre la base original.

1. Ejecute en el directorio e2e_cli
cp docker-compopose-cli.yaml docker-compose-peer.yaml
y abra el docker-compose-peer.yamlarchivo para editarlo.
El autor ha asignado dos nodos de pares de org1 y cli en este servidor, por lo que solo se conserva la información de configuración de los dos pares y cli en el archivo, y el resto se puede eliminar.

2. Cada nodo del mismo nivel también debe configurar la asignación de nombre de dominio-IP del nodo ordenante y agregar:

extra_hosts:
  - "orderer.example.com:192.168.2.4"

3. Para la información de configuración de cli, elimine el depend no válido, solo conserve los dos pares de org1 y debe agregar la asignación de nombre de dominio-IP de cada nodo:

extra_hosts:
  - "peer0.org1.example.com:192.168.2.2"
  - "peer1.org1.example.com:192.168.2.2"
  - "peer0.org2.example.com:192.168.2.3"
  - "peer1.org2.example.com:192.168.2.3"
  - "orderer.example.com:192.168.2.4"

4. La información de configuración final es la siguiente:


services:

  peer0.org1.example.com:
    container_name: peer0.org1.example.com
    extends:
      file:  base/docker-compose-base.yaml
      service: peer0.org1.example.com
    extra_hosts:
      - "orderer.example.com:192.168.2.4"

  peer1.org1.example.com:
    container_name: peer1.org1.example.com
    extends:
      file:  base/docker-compose-base.yaml
      service: peer1.org1.example.com
    extra_hosts:
      - "orderer.example.com:192.168.2.4"

  cli:
    container_name: cli
    image: hyperledger/fabric-tools
    tty: true
    environment:
      - GOPATH=/opt/gopath
      - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
      - CORE_LOGGING_LEVEL=DEBUG
      - CORE_PEER_ID=cli
      - CORE_PEER_ADDRESS=peer0.org1.example.com:7051
      - CORE_PEER_LOCALMSPID=Org1MSP
      - CORE_PEER_TLS_ENABLED=true
      - CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
      - CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
      - CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
      - CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
    working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
    command: /bin/bash -c './scripts/script.sh ${
    
    CHANNEL_NAME}; sleep $TIMEOUT'
    volumes:
        - /var/run/:/host/var/run/
        - ../chaincode/go/:/opt/gopath/src/github.com/hyperledger/fabric/examples/chaincode/go
        - ./crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
        - ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
        - ./channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
    depends_on:
      - peer0.org1.example.com
      - peer1.org1.example.com
    extra_hosts:
      - "peer0.org1.example.com:192.168.2.2"
      - "peer1.org1.example.com:192.168.2.2"
      - "peer0.org2.example.com:192.168.2.3"
      - "peer1.org2.example.com:192.168.2.3"
      - "orderer.example.com:192.168.2.4"

Establezca los archivos de configuración de peer0.org2 y peer1.org2

192.168.2.3

Los pasos son básicamente similares a los anteriores, excepto que el autor no eligió este servidor como un nodo cli, por lo que no es necesario configurar la parte cli, solo preste atención a los dos pares de org2.

Establecer archivo de configuración de pedido

192.168.2.4

El mismo procedimiento es similar. Copie el archivo docker-compose-cli.yaml en el directorio e2e_cli y ejecute:
cp docker-compose-cli.yaml docker-compose-orderer.yaml
solo mantenga la parte ordenadora, sin agregar
información de configuración extra_hosts :

services:

  orderer.example.com:
    extends:
      file:   base/docker-compose-base.yaml
      service: orderer.example.com
    container_name: orderer.example.com

Establecer el archivo de configuración del directorio base

La información de configuración anterior se encuentra en el fabric/examples/e2e_cli/basedirectorio de extensión y docker-compose-base.yamlel número de puerto de cada nodo se configura en este archivo.

Dado que el ejemplo se ejecuta en una máquina independiente, los puertos se asignan en este archivo. Según la asignación de nodos del autor, peer0.org1 y peer0.org2 están en el mismo servidor, por lo que no es necesario modificar la asignación de puertos. peer0.org2 y peer1.org2 están en otro servidor, por lo que debe modificar la asignación de puertos:
cambie el original

    ports:
      - 9051:7051
      - 9052:7052
      - 9053:7053

A

    ports:
      - 7051:7051
      - 7052:7052
      - 7053:7053

El original

    ports:
      - 10051:7051
      - 10052:7052
      - 10053:7053

A

    ports:
      - 8051:7051
      - 8052:7052
      - 8053:7053

¡Recuerde que todos los servidores deben ser modificados!

Iniciar cada nodo

1. Inicie peer0.org1, peer1.org1 y cli

192.168.2.2

Ejecutar en el directorio e2e_cli:
docker-compose -f docker-compose-peer.yaml up -d
use el docker pscomando para ver en este momento , si el cli y dos contenedores de pares se generan y ejecutan, significa que el nodo se ha iniciado correctamente.

2. Inicie peer0.org2, peer1.org2

192.168.2.3

Ejecutar en el directorio e2e_cli:
docker-compose -f docker-compose-peer.yaml up -d
en este momento, use el docker pscomando para ver. Si se generan y ejecutan dos contenedores de pares, significa que el nodo se ha iniciado correctamente.

3. Inicie el pedido

192.168.2.4

Ejecutar en el directorio e2e_cli:
docker-compose -f docker-compose-peer.yaml up -d
use el docker pscomando para ver en este momento , si el contenedor de pedido se genera y se ejecuta, significa que el nodo se ha iniciado correctamente.

Modificar scripts / script.sh

(Escrito en el frente: el autor no vio este paso al referirse a otros materiales de implementación de múltiples máquinas, así que encontré el problema de que peer1.org1 no podía unirse al canal. Después de analizar y modificar script.sh, se puede ejecutar. En cuanto a por qué pueden funcionar sin modificaciones, todavía no lo entiendo. Espero que alguien pueda dar algunos consejos si lo saben, ¡gracias!)

Regrese al servidor
192.168.2.2 donde se encuentra la cli.
Antes de ejecutar la red, debe modificar el directorio e2e_cli scripts/script.sh.

En el método setGlobals (), la variable de entorno CORE_PEER_ADDRESS necesita especificar el número de puerto del nodo. Estábamos base/docker-compose-base.yamlen el mapeo de puertos, por lo que necesita modificar el número de puerto en estas variables de entorno:
el

peer1.org1.example.com:7051

cambie a

peer1.org1.example.com:8051

Poner

peer1.org2.example.com:7051

cambie a

peer1.org2.example.com:8051

(Por supuesto, los lectores también pueden probar una serie de operaciones como crear canales manualmente, seleccionar nodos de anclaje, agregar pares a los canales, instalar códigos de cadena, instanciar códigos de cadena, etc., sin usar scripts, pero son más problemáticos).

Iniciar la red

192.168.2.2

1. Ejecute en el directorio e2e_cli:
docker exec -it cli bashingrese el contenedor cli

2. Ejecute el script en el contenedor cli:
./scripts/script.sh mychannel

Finalmente, aparece Todo BUENO, Ejecución final-2-final completada, lo que indica que la red se está ejecutando correctamente.

Supongo que te gusta

Origin blog.csdn.net/weixin_42332067/article/details/115006099
Recomendado
Clasificación