Skip to content

Components

A minimal CyVerse deployment is five moving parts plus the DE service set:

Component Role
HAProxy Single public entry point; terminates HTTPS and forwards to cluster node ports
PostgreSQL Catalog (iCAT) database plus one database per DE service
RabbitMQ AMQP message bus between iRODS, the DE, and indexing services
iRODS 4.3.3 Data Store catalog provider and storage vault
Discovery Environment The DE service set, split into non-analysis services and analyses (VICE)

Resource requirements

Per-component requirements, as sized for the two-node pilot:

Component Cores Memory Storage
HAProxy 4 8 GB
PostgreSQL 22 56 GB 510 GB
RabbitMQ 1 2 GB 20 GB
iRODS 20 120 GB 110 TB
DE without analyses 24 56 GB 1.4 TB
DE analyses (VICE) 48 192 GB 3 TB

Storage figure for iRODS

The pilot record quotes iRODS storage as both 100 TB and 110 TB. 110 TB is the figure its own totals are computed from, so that is what this table carries. Treat it as the data vault target for a pilot, not a fixed requirement — the vault is sized to the science, and is the one number that grows without bound.

Two-node allocation

The pilot placed everything except analyses on the first node:

First node (core-1) Cores Memory Storage
Physical capacity 192 2.3 TB 610 TB
Required by HAProxy, PostgreSQL, RabbitMQ 27 66 GB 530 GB
Required by iRODS 20 120 GB 110 TB
Required by DE (no analyses) 24 56 GB 1.4 TB
Total required 71 242 GB 112 TB
Over-allocation ratio (capacity ÷ required) 2.7× 9.5× 5.4×

The totals are the exact sums of the rows above them; the pilot record rounded them to 250 GB and 120 TB, which shifts the storage ratio it quotes from 5.4× to 5.0×. Nothing downstream depends on the rounding.

Headroom is not left idle. The pilot reserved the surplus by workload so that one component cannot starve another:

Reservation Cores Memory Storage
Scaled iRODS reservation 54 1.2 TB 550 TB
Scaled DE reservation 65 540 GB 7 TB
Unreserved (HAProxy, PostgreSQL, RabbitMQ) 73 560 GB 53 TB

The second node carries only DE analyses, and is sized from the DE analyses row above plus whatever concurrency target the site sets for VICE.

Deriving PostgreSQL settings from this table

Several postgresql.conf values are functions of the memory and cores reserved for the database rather than of total machine capacity — see PostgreSQL tuning. Decide the reservation first, then compute.

Dependencies

graph TD
    PG[PostgreSQL]
    MQ[RabbitMQ]
    HA[HAProxy]
    IRODS[iRODS]
    DE[Discovery Environment]

    IRODS --> PG
    IRODS --> MQ
    DE --> HA
    DE --> PG
    DE --> MQ
    DE --> IRODS

Read as "depends on":

  • iRODS → PostgreSQL, RabbitMQ
  • Discovery Environment → HAProxy, PostgreSQL, RabbitMQ, iRODS

That graph is why the deployment order in deployment is what it is: nothing in a later phase can come up before its dependencies in an earlier one.

Beyond the pilot

The two-node shape is the smallest useful deployment, not the production target. Scaling is additive rather than a redesign:

  • More VICE capacity means more workers in the k8s_vice_workers inventory group.
  • More data capacity means more iRODS resources, which may live on separate hardware in the same zone.
  • Separating PostgreSQL onto its own host is the first split most sites make, because the DE and the catalog compete for the same buffer cache.

For the shape of the production US CyVerse deployment, see system overview.