Skip to main content

Railway's One-Click Redis HA, Priced: What Sentinel-Plus-HAProxy Costs Against Self-Hosted Valkey

10 min readDora NodaDora Noda
Share
On this page

Railway's August 2026 changelog turned a standalone Redis service into a one-click high-availability cluster: Sentinel-managed failover with HAProxy connection routing, replica and proxy counts picked in the dashboard, staged changes with a cluster view. Here is the honest monthly accounting for a small 3-node cluster holding about 1 GB: roughly $55-80 on Railway's meter against roughly $18 on three flat-fee Hetzner VMs running the same Sentinel topology as Valkey. "Owned nodes" in this post means exactly that — three CX23-class cloud VMs (2 shared vCPUs, 4 GB RAM, 40 GB NVMe, €5.49/month each after the June 2026 Hetzner price adjustment) that you operate yourself.

The gap — about 4x at small scale, widening as the dataset grows — is the clearest current example of the managed-data-layer premium: every gigabyte of dataset meters three times (once per replica) at $10/GB/month, plus two proxy services, plus the conversion gotchas below. Whether that premium is worth it depends on how you value the five ops jobs in section 5 that a self-operated Valkey cluster does not do for itself.

What you are comparingRailway (metered)Owned Hetzner nodes (flat)
Small Redis/Valkey HA, ~1 GB dataset, 3 data nodes≈ $55-80/month (math below)≈ $18/month (3 × CX23 at €5.49)
Same, dataset doubled to ~2 GB≈ $85-110/month (RAM meters 3x)≈ $18/month (same flat boxes)
Same, grown to 5 data nodes≈ 5/3x the 3-node meter5 × €5.49 ≈ $30/month
What the extra dollars buyFailover, entry point, AOF, backups, patching handledYou handle all five (hours, not dollars)

This post stays Redis-scoped: Railway's MySQL HA is a separate Group Replication template that went GA in September 2026, and we priced the whole managed-data bundle — Postgres patching, MySQL and Redis HA together — separately. What follows is the Redis convert flow torn down line by line.

What Convert to HA actually provisions

The conversion guide is refreshingly explicit about the resulting shape. Your original service becomes the primary, and Railway stages the rest as reviewable changes before anything deploys. Each piece maps to a meter line:

Provisioned pieceWhat it isWhat it meters
Data nodes (3, 5, 7, or 9 total)Primary plus 2/4/6/8 replicas; every node runs a colocated Sentinel, so the voter count stays odd for quorumEach node meters its own vCPU + RAM independently — replicas are not free riders
HAProxy entry points (1 or 2)Separate proxy services that health-check every node and route clients to the current primaryEach proxy is a billed service; small at idle, growing with connection churn and throughput
Forced AOF persistenceThe cluster always runs with append-only-file persistence so restarted nodes come back with dataExtra disk writes and volume usage on every node versus a cache-only standalone
Version pinning to your exact major.minorReplicas sync via RDB snapshots, which are unreadable across mismatched versionsNo direct charge — but it locks the cluster to Redis majors 7 or 8 and forbids :latest
Pre-conversion volume backupAutomatic backup of the database volume, expiring in 21 daysShort-lived storage, then gone

The engineering underneath is genuinely solid: the open redis-ha template runs a small Rust supervisor over official redis plus HAProxy images, with deterministic config generation, hostname-based peer tracking that survives Railway IP changes on redeploy, and failover in roughly 5-30 seconds via Sentinel majority vote. Nothing about this teardown disputes the quality — it prices the bundle.

Two prerequisites deserve emphasis because they gate who can even click the button. First, the service must run the official redis image (or the template's own sentinel image, or the legacy Bitnami lineage) tagged at major 7 or 8, with no custom start command. Second — and this is section 4's whole subject — forks and bundles are explicitly excluded: Valkey and Redis Stack services cannot be converted.

The conversion's non-dollar costs

Railway's own confirmation dialog warns about the first two items; the docs spell out the rest. None of them is a reason to refuse HA. All of them belong in the migration plan:

  1. Active connections are dropped during conversion. There is a real cutover window: clients must reconnect against the new HAProxy endpoint. Most Redis clients reconnect by default, but anything with a single long-lived connection and no retry logic will feel this as an outage, not a blip.
  2. Connection endpoints change, and hardcoded strings will not follow. Railway auto-migrates variable references within your project to the new Redis HA service — but literal URLs baked into application code, other projects, external tools, or CI pipelines must be hunted down and repointed by hand. Every hardcoded REDIS_URL you ever wrote comes due at once.
  3. Reverting keeps every deleted node's volume — still billing. Revert to standalone and the replicas' volumes stay in your project, unattached, counting toward storage billing. Deliberate (a revert never destroys data), but the cleanup is manual, and a later re-conversion provisions fresh suffixed volumes rather than reusing the kept ones.
  4. Reverting is only available while the original service is the primary. If a failover has moved the primary role elsewhere, you must Make Leader the original node back first — the revert flow offers this, but it is a coordinated switchover with its own brief connection drop, on top of the revert itself. (The reverted service also stays on the redis-sentinel image; swapping it back to redis:X by hand drops the --requirepass wiring and breaks password auth.)

None of this is unusual for a managed topology change. It is, however, the opposite of zero-cost: the button is one click, the surrounding work is a checklist.

The Valkey exclusion

The docs state it plainly: forks and bundles (Valkey, Redis Stack) are not compatible with conversion. The machinery explains why — the template pins official redis majors, generates config for the redis-server binary, and versions RDB compatibility around it. A Valkey service simply never gets the High Availability section in its Config tab.

The context, in three sentences: Redis moved off the BSD license in March 2024. The Linux Foundation forked the last BSD release (7.2.4) as Valkey days later. Valkey has since grown into an independent BSD-licensed 8.x line, backed by AWS, Google, and Oracle, speaking the same wire protocol and running Sentinel with identical configuration. A team that already migrated to Valkey for licensing reasons cannot click Railway's HA button at all — which makes self-operated Valkey-plus-Sentinel not just the cheaper topology, but the only HA topology available to them on this stack.

That is the setup for the other side of the ledger.

The same topology for a flat fee

Three CX23-class VMs at €5.49/month each is €16.50/month — about $18. Included NVMe (40 GB each) holds AOF files with room to spare, and 20 TB of included traffic each means replication chatter and client connections cost nothing extra. If the dataset needs more RAM headroom, the ARM alternative is three CAX21 machines (4 ARM vCPUs, 8 GB RAM, €10.49/month post-hike) at roughly $34/month total — still less than half the metered cluster, because the June 2026 hike hit dedicated x86 hardest (+173% on CCX23) while shared and ARM tiers moved 30-40%.

So the hardware side is a solved equation. The real price is attention:

Job Railway absorbsSelf-operated Valkey equivalentSteady-state burden
Sentinel quorum + electionThree valkey-sentinel processes, quorum of 2, tested promotionAn afternoon to configure; a chaos drill per quarter to trust
Stable entry pointHAProxy pair (or client-side Sentinel-aware failover)HAProxy config is small; client-side failover pushes the logic into every app
Persistence that survives restartsAOF + RDB snapshot policy per nodeOne config decision, then disk monitoring
Backups before topology changesVolume snapshots or valkey-cli --rdb dumps to object storage on a scheduleThe dump job is 20% of the work; proving restores work is the other 80%
Security patch timelineTrack Valkey/Redis CVE releases, rebuild images, roll nodesHours per release, on someone else's calendar — managed fleets patch underneath you

The last row is the moat at its most literal. Redis shipped authenticated-RCE-class flaws in 2026 that managed clouds patched silently while self-managed fleets scheduled their own upgrades. Valkey inherits the same exposure profile (same protocol surface, same C codebase lineage) without inheriting anyone else's patching staff. The meter charges for absence of pages, and this is the page it most reliably prevents.

Where the math moves

The 4x headline holds for the typical small case, but four variables move it — check each before generalizing:

  • Dataset RAM dominates everything. This is the single most important sensitivity: on Railway HA, each gigabyte of dataset lives on all three replicas and meters at roughly $10/GB on each, so dataset growth costs ~$30/GB/month. On flat boxes the same growth costs $0 until you resize the VM. A 5 GB dataset is roughly $200/month metered versus the same $18 flat. RAM-heavy is where the premium compounds fastest.
  • Replica steps multiply the meter linearly. Moving from 2 to 4 replicas (3 to 5 nodes) multiplies the data-node meter by 5/3 for extra read capacity and quorum margin most small teams never need. On owned nodes the same move adds €11/month.
  • Proxy count and traffic are second-order. Dropping to one HAProxy saves one small service but reintroduces a single entry point — the thing HA was bought to remove. Public exposure adds TCP-proxy egress on top. Neither decides the comparison; size them after the data nodes.
  • The Hetzner side has its own post-hike shape. Dedicated x86 (CCX23 at €85.99) is no longer the obvious database VM after June 2026; shared CX23 and ARM CAX21 are. A Valkey cluster does not need dedicated cores — it needs RAM and network stability — so the hike barely touches this topology. That will not be true for every workload you migrate alongside it.

The verdict rule: if your Redis holds under ~2 GB, your team has no on-call rotation, and a dropped-connections cutover is acceptable planned work, the meter is a fair price for never thinking about Sentinel quorum again. Past that — bigger datasets, an existing ops practice, Valkey already in the stack, or a fleet where three more small VMs are a rounding error — the failover bundle is the first line item a migration off Railway deletes, because it is the rare managed feature whose self-hosted equivalent is the same software, not a worse approximation.

That last point is why this example matters beyond Redis. Managed databases are an explicit bex non-goal — we will never run your database for you — and posts like this one are the honest version of that position: here is the exact ops burden leaving buys you out of, priced to the dollar, so you can decide with the invoice in one hand and the runbook in the other.

Bex.co is the open-source, AI-native Render alternative — push a git repo, get a running HTTPS service on machines you own. Star the repo on GitHub or deploy your first app today.

Related articles

Run this on infrastructure you own

bex is the open-source, AI-native Render alternative — push a git repo and get a running HTTPS service on your own machines.

Get started with bex