Production Deployment: Advanced Deployment Scenarios
Part of: Production Deployment Guide
Each scenario below uses the heliosdb-full server, its flags and environment
variables, and standard infrastructure (systemd, containers, Kubernetes, load
balancers, storage snapshots). The Server Configuration
Reference lists every flag used here.
A heliosdb-full server is a single node that owns one data directory. Scenarios
that span sites or versions are built around that: one active server per data
directory, with copies of the directory moved between servers.
10.1 Hybrid Cloud Deployment
Run the server where the data must live (on premises or in one cloud) and reach it from the other environment over a private link (site-to-site VPN, Direct Connect / ExpressRoute / Interconnect).
heliosdb-full --data-dir /var/lib/heliosdb \ --bind-addr 10.20.0.5 --allow-external \ --tls-cert /etc/heliosdb/tls/server.crt --tls-key /etc/heliosdb/tls/server.key --tls-require- Bind to the private interface only, not
0.0.0.0. - Require TLS on the PostgreSQL listener; tunnel the plaintext listeners (HTTP, MySQL, Oracle and others) through the private link or a TLS proxy.
- Keep a copy of the data directory in the second environment with storage snapshots (see Backup & Disaster Recovery) so it can take over.
10.2 Air-Gapped Environment
The server needs no outbound network access. To install without internet:
- On a connected machine, save the image (
docker save <heliosdb-full-image> -o heliosdb-full.tar) or copy theheliosdb-fullbinary, and record its checksum (sha256sum). - Transfer the file through your approved media process and verify the checksum.
- Load the image (
docker load -i heliosdb-full.tar) into the internal registry, or install the binary under/usr/local/bin. - Leave the AI routes of the HTTP gateway unconfigured (no
HELIOSDB_AI_*variables), or pointHELIOSDB_AI_API_BASEat an internal model server withHELIOSDB_AI_ALLOW_PRIVATE_NETWORK=1.
10.3 Multi-Tenancy Deployment
Tenant isolation is achieved by running a server per tenant (or per tenant group), each with its own data directory, credentials and ports:
# tenant-a (its own environment file with its own HELIOSDB_SUPERUSER_PASSWORD)heliosdb-full --data-dir /srv/heliosdb/tenant-a --postgres-port 15432 --http-port 18443# tenant-bheliosdb-full --data-dir /srv/heliosdb/tenant-b --postgres-port 25432 --http-port 28443In Kubernetes, use one StatefulSet (or Helm release) per tenant in its own namespace
with its own PersistentVolumeClaim, Secret and NetworkPolicy. Inside one server, roles
authenticate separately (CREATE ROLE ... LOGIN PASSWORD, CONNECTION LIMIT), but
every role that logs in can read all data: GRANT/REVOKE, row-level security and
CREATE TENANT return SQLSTATE 0A000 in the current release. Per-IP connection and
query limits (--conn-rate-limit, --query-rate-limit) protect each server from a
noisy client.
10.4 Edge Computing Deployment
The server runs on small hosts as well as large ones. For an edge site:
- Use a small read cache (
--read-cache-mb 64or leave it off) and lower--max-connections. - Keep
--synchronous-commit onif the site loses power unexpectedly; the WAL recovers committed writes. - Ship data to the central site with your integration tooling (scheduled
SELECTexports, application-level sync) and back up the edge data directory with snapshots.
10.5 Disaster Recovery Testing
Test recovery regularly with a restore, not just a backup:
# 1. Restore the latest backup into a scratch locationmkdir -p /tmp/dr-test && tar -C /tmp/dr-test -xzf /backup/heliosdb-latest.tar.gz
# 2. Start it on spare ports, without external accessheliosdb-full --data-dir /tmp/dr-test/heliosdb --postgres-port 55432 --http-port 58443 &
# 3. Verifycurl -fsS http://127.0.0.1:58443/readypsql "host=127.0.0.1 port=55432 user=postgres" -c "SELECT COUNT(*) FROM orders"
# 4. Record the time from step 1 to step 3 as your measured recovery timekill %110.6 Blue-Green Deployment
Use blue-green for server upgrades:
- Blue serves traffic. Stop it at the start of the window (
SIGTERMflushes storage), copy or snapshot its data directory. - Start green (new version) on the copy and verify it:
heliosdb-full --version,/ready, a smoke-test query set. - Switch clients (DNS, load-balancer target, Kubernetes Service selector) to green.
- Keep blue’s directory untouched until green has run for an agreed period; rolling back means pointing clients back at blue with its own copy.
Writes are not mirrored between blue and green, so plan the window so that no writes reach blue after the copy, or replay them.
10.7 Canary Deployment
For a read-mostly workload, start the new version on a copy of the data and send a share of read-only traffic to it (separate connection string, load-balancer weight) to compare latency and results before switching writes. For write traffic, use blue-green above: two servers must never share a data directory.
10.8 Geographic Distribution
Place the server close to the applications that write to it. For readers in other regions:
- Serve read-heavy, latency-sensitive data from regional copies refreshed from snapshots on a schedule, and accept their staleness.
- Keep a restore-ready copy in a second region for disaster recovery (Backup & Disaster Recovery).
Built-in multi-region replication is not part of the current server
(SHOW REPLICATION STATUS returns 0A000).
Navigation
- Previous: Troubleshooting
- Next: Production Checklist
- Index: Production Deployment Guide