Depending on your needs, you can have different configurations of your VMware Cloud Director appliance based server group and different sizes of the VMware Cloud Director virtual appliance instances.

Overview

To ensure that the cluster can support an automated failover if a primary cell failure occurs, the minimal VMware Cloud Director deployment must consist of one primary and two standby cells. The environment remains available under any failure scenario where one of the cells goes offline for any reason. If a standby failure occurs, until you redeploy the failed cell, the cluster operates in a fully functional state with some performance degradation. See Appliance Deployments and Database High Availability Configuration.

The VMware Cloud Director appliance has four sizes that you can select during the deployment: Small, Medium, Large, and Extra Large (VVD). The Small appliance size is suitable for lab evaluation and this document does not provide guidance on the Small appliance configuration. The sizing options table provides the specifications for the remaining options and the most suitable use cases for a production environment. The Extra Large configuration matches the VMware Validated Designs (VVD) for Cloud Providers scale profile.

To create larger custom sizes, system administrators can adjust the size of the deployed cells.

The smallest recommended configuration for production deployments is a three-node deployment of Medium size virtual appliances.

Note: You can deploy a VMware Cloud Director cluster with one primary cell and no standby cells or application cells. VMware does not provide support for single-cell deployments in a production environment because they are a single source of failure from a database perspective. Single-cell deployments do not receive support for performance or stability related issues.

VMware Cloud Director Appliance Sizing Options

You can use the following decision guide to estimate the appliance size for your environment.

Medium Large Extra Large (VVD)
Recommended use cases Lab or small production environments Production environment Production with API integrations and monitoring
vRealize Operations Management Pack deployment in the VMware Cloud Director environment No No Yes
Cassandra VM metrics enablement in VMware Cloud Director No No Yes
Approximate number of concurrent users or clients accessing the API over a peak 30 minute period. < 50 < 100 < 100
Managed VMs 5000 5000 15000

Configuration Definitions

Note: VMware Cloud Director 9.7 and later primary-large and standby-large appliances, by default, do not have the 16 vCPUs required for a Large HA cluster configuration. If you want to have a Large VMware Cloud Director appliance configuration, after deployment, you must manually change the primary and standby cell vCPUs to 16.
Medium Large Extra Large (VVD)
HA cluster configuration 1 primary + 2 standby cells 1 primary + 2 standby + 1 application cells 1 primary + 2 standby + 2 application cells
vCPUs primary or standby cell 8 16 24
vCPUs application cell N/A 8 8
RAM primary or standby cell 16 GB 24 GB 32 GB
RAM application cell N/A 8 8
vCPU to physical core ratio 1:1 1:1 1:1
PostgreSQL customization on primary and standby cells

shared_buffers = '3GB';

effective_cache_size = '9GB';

work_mem = '8MB';

maintenance_work_mem = '1GB';

max_worker_processes= '8';

shared_buffers = '5GB';

effective_cache_size = '15GB';

work_mem = '8MB';

maintenance_work_mem = '1GB';

max_worker_processes= '16';

shared_buffers = '7GB';

effective_cache_size = '21GB';

work_mem = '8MB';

maintenance_work_mem = '1GB';

max_worker_processes= '24';

How to detect if your system is undersized

In a VMware Cloud Director cell, the CPU or memory use grows and reaches a plateau at a high level, that is, a level near capacity. The VMware Cloud Director cell might also lose the connection to the database.

How to detect if your system number of cells are insufficient

In the vcloud-container-debug.log and cell-runtime.log files of any of the VMware Cloud Director cells, you see entries similar to org.apache.tomcat.jdbc.pool.PoolExhaustedException: [pool-jetty-XXXXX] Timeout: Pool empty. Unable to fetch a connection in 20 seconds, none available. The VMware Cloud Director cell might also lose the connection to the database.
Note:

Based on the default database connection configuration, all configurations are limited to a maximum of 6 cells of primary, standby and application type.

How to customize the appliance sizing

To customize the sizing of the VMware Cloud Director appliance to one of the supported configurations, after running the VMware Cloud Director appliance deployer, you must follow this procedure on all cells.

  1. Verify that you have the necessary number of cells for the selected configuration.
  2. Adjust the memory and vCPU of all cells to match one of the supported configuration you want.
    Important: The amount of RAM and vCPU must be the same for all primary and standby cells.
  3. Log in directly or by using an SSH client to the OS of the primary appliance as root.
  4. Change the user to postgres.
    sudo -i -u postgres
  5. Update the postgresql.auto.conf configuration file by running the following commands.
    Configuration Type Description
    Medium
    psql -c "ALTER SYSTEM set shared_buffers = '3GB';"
    psql -c "ALTER SYSTEM set effective_cache_size = '9GB';"
    psql -c "ALTER SYSTEM set work_mem = '8MB';"
    psql -c "ALTER SYSTEM set maintenance_work_mem = '1GB';"
    psql -c "ALTER SYSTEM set max_worker_processes= '8';"
    Large
    psql -c "ALTER SYSTEM set shared_buffers = '5GB';"
    psql -c "ALTER SYSTEM set effective_cache_size = '15GB';"
    psql -c "ALTER SYSTEM set work_mem = '8MB';"
    psql -c "ALTER SYSTEM set maintenance_work_mem = '1GB';"
    psql -c "ALTER SYSTEM set max_worker_processes= '16';"
    Extra Large
    psql -c "ALTER SYSTEM set shared_buffers = '7GB';"
    psql -c "ALTER SYSTEM set effective_cache_size = '21GB';"
    psql -c "ALTER SYSTEM set work_mem = '8MB';"
    psql -c "ALTER SYSTEM set maintenance_work_mem = '1GB';"
    psql -c "ALTER SYSTEM set max_worker_processes= '24';"
  6. Return to the root user by running the exit command.
  7. Restart the vpostgres process.
    systemctl restart vpostgres
  8. Change the user to postgres again.
    sudo -i -u postgres
  9. For each standby node copy the postgresql.auto.conf file to the node and restart the vpostgres process.
    1. Copy postgresql.auto.conf from the primary node to the standby node.
      scp /var/vmware/vpostgres/current/pgdata/postgresql.auto.conf postgres@<standby-node-address>:/var/vmware/vpostgres/current/pgdata/
      
    2. Restart the vpostgres process.
      systemctl restart vpostgres

To customize the sizing of the VMware Cloud Director appliance to a custom configuration, after running the VMware Cloud Director appliance deployer, you must follow this procedure on all cells.

  1. Log in directly or by using an SSH client to the OS of the primary appliance as root.
  2. To view and take note of the vCPU information, run the following command.
    grep -c processor /proc/cpuinfo
  3. To view and take note of the RAM information, run the following command.

    The RAM reported below is in KB and you must convert it to GB by dividing by 1024000.

    cat /proc/meminfo | grep MemTotal | cut -dk -f1 | awk '{print int($2/1024000)}'
  4. Calculate the shared_buffers value to be one-fourth of the total RAM minus 4GB.

    shared_buffers = 0.25 * (total RAM - 4GB)

  5. Calculate the effective_cache_size value to be three-fourths of the total RAM minus 4GB.

    effective_cache_size = 0.75 * (total RAM - 4GB)

  6. Calculate the max_worker_processes value to be number of vCPUs.
  7. Change the user to postgres.
    sudo -i -u postgres
  8. Update the postgresql.auto.conf configuration file by running the following commands and substituting the calculated values.
    psql -c "ALTER SYSTEM set shared_buffers = 'shared_buffers value';"
    psql -c "ALTER SYSTEM set effective_cache_size =  'effective_cache_size value';"
    psql -c "ALTER SYSTEM set work_mem = '8MB';"
    psql -c "ALTER SYSTEM set maintenance_work_mem = '1GB';"
    psql -c "ALTER SYSTEM set max_worker_processes= 'max_worker_processes value';"
    
  9. Return to the root user by running the exit command.
  10. Restart the vpostgres process.
    systemctl restart vpostgres
  11. Change the user to postgres again.
    sudo -i -u postgres
  12. For each standby node copy the postgresql.auto.conf file to the node and restart the vpostgres process.
    1. Copy postgresql.auto.conf from the primary node to the standby node.
      scp /var/vmware/vpostgres/current/pgdata/postgresql.auto.conf postgres@standby-node-address:/var/vmware/vpostgres/current/pgdata/
    2. Restart the vpostgres process.
      systemctl restart vpostgres