You can scale your current VMware Blockchain deployed nodes. The scale-up operation requires additional storage space.

For example, you can scale a configuration to add two Client nodes.

Prerequisites

  • Determine whether you need to scale up your node configuration. See VMware Blockchain Node Scaling Operations on vSphere.

  • Verify that you have at least four nodes deployed. See Deploy VMware Blockchain Nodes Using VMware Blockchain Orchestrator on vSphere.

  • Identify the following details from the VMware Blockchain Orchestrator output directory, /home/blockchain/output.

    blockchain ID , consortium ID, and Blockchain type

    Replica node zone name, Replica node IP address, and Replica node ID

    Client node zone name, Client node IP address, Client node ID, Client node Daml database password, and Client node group name and group ID name

  • Verify that all the deployed nodes are functioning properly. Failed nodes cannot be scaled up.

Procedure

  1. SSH into the VMware Blockchain Orchestrator appliance.
  2. Enter the login credentials for the blockchain user account.
  3. Navigate to the /home/blockchain directory.
  4. Create a scaleup infrastructure descriptor JSON file and set the parameter values in the descriptor directory.

    Sample scaleup_infrastructure_descriptor.json file to deploy new nodes.

    {
      "organization": {
        "sddcUrl": "https://cloud.vmware.com/",
        "damlSdk": "2.2.1",
        "dockerImage": "1.7.0.0.55",
        "cpuCount": 4,
        "memoryGb": 8,
        "enableBftClient": true,
       "generateDamlDbPassword": true
       "advancedFeatures" : {
            "ENABLE_CRE": true
        }
      },
      "zones": [
        {
          "name": "my-zone",
          "vCenter": {
            "url": "https://somewhere.vmwarevmc.com/",
            "userName": "cloudadmin@vmc.local",
            "password": "<password>",
            "resourcePool": "Compute-ResourcePool",
            "storage": "WorkloadDatastore",
            "folder": "my-folder"
          },
          "network": {
            "name": "sddc6-vmware-vpn-onprem-5-for-example",
            "gateway": "10.77.255.1",
            "subnet": 24,
            "nameServers": [
              "10.78.1.122",
              "10.78.1.133"
            ]
          },
          "containerRegistry": {
            "url": "https://blockchain-docker-internal.artifactory.eng.vmware.com",
            "userName": "blockchain-artifactory-deployer",
            "password": "<password>"
          },
          "wavefront": {
            "url": "https://vmware.wavefront.com",
            "token": "e41276dd-3a61-4edd-82ea-91db2c6e3bbf"
          },
          "logManagement": [
            {
              "type": "LOG_INSIGHT",
              "address": "10.202.69.231",
              "port": "9543",
              "userName": "admin",
              "password": "<password>",
              "logInsightAgentId": "0"
            }
          ]
        }
      ]
    }
  5. Create a scale up deployment descriptor JSON file and set the parameter values in the descriptor directory.

    The scale up descriptor file contains the Replica and Client node details to add to the original deployment.

    Sample scaleup_deployment_descriptor.json file to deploy three Replica nodes and one Client node.

    {
        "replicas": [
            {
                "zoneName": "SDDC8",
            },
            {
                "zoneName": "SDDC8",
            },
            {
                "zoneName": "SDDC8",
            }
          ],
        "replicaNodeSpec": {
            "cpuCount": 8,
            "memoryGb": 16,
            "diskSizeGb": 64
        },
        "clients": [
          {
              "zoneName": "mine-gg",
              "groupName": "Group1",
              "damlDbPassword": "mypass"
          },
       ],
       "clientNodeSpec": {
           "cpuCount": 4,
           "memoryGb": 32,
           "diskSizeGb": 100
       },
       "operatorSpecifications": {
         "operatorPublicKey": "-----BEGIN PUBLIC KEY-----
            \nMFkwEwYHKoZ\n
           -----END PUBLIC KEY-----\n"
       },
       "blockchain": {
            "consortiumName": "scale-up",
            "blockchainType": "Daml",
            "blockchainId": "72a0f104-6845-46df-98d4-5ab0bf5623b"
       }
    }
    Note:

    The blockchain ID refers to the initial deployment blockchain ID. The blockchainId value must match the blockchain ID to which you want to add the nodes.

  6. If reconfiguring from an existing non-TLS blockchain to a TLS-enabled blockchain, remove certain components to avoid uneven distribution of keys.
    sudo rm -rf /config/concord
  7. Validate your deployment descriptor file semantics against the deployment-descriptor-v1.schema.
  8. Validate that the credentials, network name, and folder name are correctly populated to avoid errors.
    ORCHESTRATOR_DESCRIPTORS_DIR=/home/blockchain/descriptors  
    INFRA_DESC_FILENAME=infrastructure_descriptor.json 
    DEPLOY_DESC_FILENAME=scaleup_deployment_descriptor.json 
    ORCHESTRATOR_OUTPUT_DIR=/home/blockchain/output 
    ORCHESTRATOR_DEPLOYMENT_TYPE=VALIDATE 
    docker-compose -f docker-compose-orchestrator.yml up
  9. Run the VMware Blockchain Orchestrator scaling script.
    ORCHESTRATOR_DESCRIPTORS_DIR=/home/blockchain/descriptors 
    ORCHESTRATOR_OUTPUT_DIR=/home/blockchain/output 
    INFRA_DESC_FILENAME=infrastructure_descriptor.json
    DEPLOY_DESC_FILENAME=scaleup_deployment_descriptor.json  
    ORCHESTRATOR_DEPLOYMENT_TYPE=SCALE 
    CONFIG_SERVICE_IP=10.08.112.128 
    docker-compose -f docker-compose-orchestrator.yml up

Results

The new VMware Blockchain nodes are deployed.

What to do next

Bind the newly deployed VMware Blockchain nodes. See Bind the Newly Deployed VMware Blockchain Nodes on vSphere.