Ceph Object Gateway (RGW) Setup — Enterprise S3 Storage

When enterprise S3 storage starts to degrade, the whole team suffers. We set up Ceph RGW turnkey: we discuss the task, design the modes, and deliver ready infrastructure with a guarantee. You get smooth access to data and predictable service operation.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a web application for FEEDME
    Development of a web application for FEEDME
    1365
  • Development of an online store for the company FURNORO
    Development of an online store for the company FURNORO
    1330
  • B2B Advance company logo design
    B2B Advance company logo design
    776
  • Development of a web application for Enviok
    Development of a web application for Enviok
    1077
  • AIDER company logo development
    AIDER company logo development
    1022
  • CRM development for Chasseurs
    CRM development for Chasseurs
    1113

Ceph RGW: why enterprise S3 storage degrades

The classic scenario: a Ceph RGW cluster is running, S3-compatible storage serves objects, and a few weeks later read and write operation latencies grow severalfold.

The cause is almost never the "hardware" but how the data is laid out and the pools are configured: some nodes are loaded to the ceiling, some sit idle, and clients complain about timeouts when offloading backups and logs.

Degradation of the object gateway rarely comes suddenly — it accumulates.

Data skew across nodes arises from an unfortunate number of placement groups and device weights set "by eye"; when new disks are added, this only gets worse, because rebalancing proceeds slowly and competes for disk I/O with production requests.

A separate story is access key revocation: if policies and accounts are set up manually, key rotation turns into downtime for services that still use the old credentials.

Another typical failure is an incorrectly chosen bucket indexing mode and object size handling. Small objects hit the operation count, large ones hit throughput, and without separating pools for data and for the index, the gateway starts to "choke" precisely at peaks. Add to this the absence of bucket limits: one service with aggressive writes crowds out the rest.

We break down how this is addressed: placement group layout and node weights, separate pools for data and indexes, lifecycle policies, and managed rotation of access keys.

What a tuned Ceph RGW delivers: modes and effect

A tuned Ceph RGW stops being "just another S3" and becomes a manageable storage layer with predictable characteristics. Below is exactly what changes and in what numbers it shows.

Object placement modes

The choice between replication and erasure coding determines both the cost of storage and the latency profile. A replica with three copies delivers read response in single-digit milliseconds and instant rollback, but takes up three times the space.

Erasure coding with a k+m profile reduces storage overhead severalfold, yet adds latency for fragment recovery. In practice, hot buckets are kept on a replica, while archives live on erasure pools.

Access policies

Policies at the bucket and prefix level remove manual rights management.

Instead of issuing keys "to everyone," roles are configured with restrictions on operations and lifetimes — the share of incidents caused by excessive permissions drops, and key rotation becomes a planned operation rather than a fire drill.

Fault tolerance and failure class

With a correctly defined CRUSH rule, a node going down does not degrade reads: data is redistributed across the remaining disks without stopping the service.

This eliminates an entire class of failures — "one server went down, the storage went down" — and reduces recovery time to background rebalancing.

Response time

Caching metadata and moving the bucket index onto fast media reduces response time for listing and object operations severalfold under high concurrent load. Manual operations — moving buckets, editing policies, cleanup — move into declarative configurations.

Option When it fits Limitations
Replica 3x Hot data, low latency High space consumption
Erasure coding Archives, large volumes Latency for recovery
Hybrid by pools Mixed workload More complex rule configuration

Ceph

How we implement Ceph RGW: stages of engineering work

Ceph RGW implementation begins not with installing packages, but with an infrastructure audit: we examine existing disk pools, network topology, current points of failure, and the load profile — how many operations per second, what object size, the ratio of small files to large ones.

The placement scheme depends on this: the number of storage nodes, journal layout, pool sizes, and replication policy across availability zones. We configure the gateway on top of an existing cluster so that the storage doesn't have to be rebuilt after going into production.

  1. Infrastructure audit. We compile a map of servers, networks, and storage, measure the current load and growth points. The output is an understanding of how many nodes are needed and where the bottlenecks are.
  2. Placement scheme. We design the cluster and pool topology, define the replication policy and data placement rules across failure zones.
  3. Node preparation. We deploy the storage nodes, configure the storage network separately from the client network, and verify time synchronization and disk journals.
  4. Gateway configuration. We bring up RGW, create users and access keys, and configure buckets, quotas, and object lifecycle policies.
  5. Fault tolerance testing. We simulate node and disk failures, verify data recovery and gateway behavior under load — balancing, connection limits, cache.
  6. Client connection. We migrate applications to S3-compatible access, verify compatibility with existing tools, and transfer data.
  7. Documentation handover. We provide schematics, configurations, maintenance regulations, and conduct training for the customer's team.

Each stage ends with a verifiable result, not a report. After handover, the team retains working configurations, the placement scheme, and a recovery regulation — storage maintenance and development do not depend on us. Describe your task — we will come back with an estimate and a plan for your environment.

How does Ceph RGW differ from a classic S3 gateway?

A classic S3 gateway is a facade over an already existing storage system: it accepts S3 requests and distributes objects across pre-allocated volumes or an array.

Ceph RGW works differently: the S3 service itself is just one of the interfaces to a single distributed storage system, where data, metadata, and their placement are managed by the cluster as a whole. This is where the difference in behavior under load comes from.

In a centralized scheme, scaling goes "up": you add disks to the array, expand volumes, migrate data. Each such step is a planned downtime or migration, and the ceiling is set by the controller and the bandwidth of a single node.

In distributed storage, capacity and throughput grow "outward": a new node is added to the cluster, and data is automatically redistributed across it without downtime.

A disk or node failure does not bring down the service — replicas and erasure codes already reside on other nodes, and recovery proceeds in the background.

It is the storage architecture that determines the cost of ownership. A centralized approach requires expensive disk shelves and reserve capacity for peak loads that sits idle on normal days.

Distributed storage is assembled from standard servers, and redundancy is defined by policy: multiple replicas for hot data, erasure codes for archival data that provide the same level of fault tolerance with less volume. Storage costs stop growing linearly with the data.

For applications, there is no difference in the protocol: the same S3 API, the same access keys, the same policies. What changes is the behavior under failures and the cost of growth.

A centralized gateway hits the ceiling of a single node and requires manual redistribution; Ceph RGW scales by adding nodes and survives hardware failure without manual intervention.

Therefore, the choice is not about "which S3 is more convenient," but about whether you are ready for a scaling ceiling and manual migrations, or whether you want to grow predictably.

Case study: how we eliminated data skew in Ceph RGW

A team came to us whose Ceph RGW cluster was running, but data was landing unevenly: two out of six nodes held almost half of the objects, while the rest sat idle.

While the load was growing, this didn't stand out — but when a loaded node failed, recovery stretched into hours, and some bucket requests timed out.

What the metrics showed before

We captured the state via ceph osd df tree and radosgw-admin bucket stats: the spread in disk utilization between nodes reached 40%, and the number of placement groups on disks differed by multiples.

The cause turned out to be compound — the pool was created with a small number of placement groups, and the disk weights in the CRUSH map remained at default, even though node capacity varied.

What we changed

We rebuilt the CRUSH map with real weights based on each disk's capacity and redistributed the placement groups. For buckets, we enabled index sharding so that metadata load wouldn't stick to a single node.

Separately, we configured the recovery policy: we limited the backfill rate so that rebuild wouldn't consume the entire channel for production requests.

What the result was

Metric Before After
Spread in node utilization up to 40% within 5%
Recovery after node failure hours tens of minutes
Response stability under load dips steady graph

The spread evened out, node failure stopped being a half-day event, and response stopped "breathing" at peaks. We worked on Ceph — a distributed object storage where evenness of placement directly determines both recovery speed and response predictability.

If your RGW is already in production and you suspect skew — show the output of ceph osd df tree, we'll discuss the task and come back with a rebalancing plan.

Concerns before implementing Ceph RGW: compatibility and rollback

Compatibility with existing applications is addressed at the S3 API level: clients that work with S3 connect to RGW without code changes — it is enough to change the endpoint and access keys.

For legacy applications that only support file protocols, we deploy an NFS or SMB gateway on top of the same storage, and we separate access through bucket policies and roles so that the application sees exactly its own prefix.

Data migration proceeds without service downtime: we enable replication between the old and new storage, copy objects in batches, verify checksums, and only after the discrepancy reaches zero do we switch traffic.

We plan the rollback of changes in advance — the RGW configuration and routing rules are stored in a version control system, so reverting to the previous state is performed with a single operation, and the old environment remains operational until stability is confirmed.

What happens if an access problem is discovered after the switch?

Access permissions and policies are versioned together with the configuration, so a rollback restores both the permissions and the routing to their previous state.

We keep the old storage in read-only mode until we are sure that all clients are operating normally — this window is the safeguard against surprises.

What if the application uses non-standard S3 extensions? We run its scenarios on a test environment before migration and record the list of incompatible calls — usually they are addressed with configuration or a thin layer.

What about a large volume of data? Copying proceeds in parallel streams with a limit on channel load, so migration does not interfere with production traffic.

The customer receives:

  • ready-made RGW and access gateway configurations;
  • a data placement and replication scheme;
  • access policies and roles for applications;
  • a migration plan with stages and rollback points;
  • an operations manual and standard procedures;
  • monitoring and incident response documentation.

Describe your task and current storage environment — we will get back to you with a compatibility assessment and a transition plan.

Ceph RGW implementation timeline: phases and benchmarks

The timeline depends not on the amount of hardware, but on the number of integrations: the more S3 consumers and external perimeters there are, the longer the approvals and checks take.

Below are benchmarks for a medium-scale cluster being deployed from scratch for an enterprise workload.

The phases partially overlap: design begins before the assessment is complete, and migration preparation runs in parallel with RGW configuration. Therefore, the sum of the table rows does not equal the project's calendar duration.

Migration and approvals on the consumers' side stretch the duration the most: switching applications to a new endpoint requires their involvement and a maintenance window.

If there is little data or the storage is being built "from scratch" without migration, the overall timeline is roughly halved.

The benchmarks are refined after the assessment — based on the actual number of consumers, data volume, and availability requirements. Describe your task: we will come back with an estimate and a plan for your perimeter.

Ceph RGW Compatibility with Existing Infrastructure

Ceph RGW implements S3- and Swift-compatible interfaces, so the application layer usually does not require rewriting: applications that work with S3 through standard libraries connect to RGW by changing the endpoint and access keys.

Below is what integration works without modifications, and where limitations need to be accounted for at the deployment stage.

Integration with existing storage. If Ceph is already deployed in the infrastructure, RGW is brought up as a separate service on top of existing pools — data and OSDs are not rebuilt.

For environments without Ceph, deployment starts with the cluster, and this is a separate stage with fault-tolerance planning.

Deployment limitations. RGW is sensitive to latency between the gateway and the cluster: when placed at different sites without a local cache, response time increases.

A load balancer in front of the gateways is mandatory for load distribution, and TLS termination is configured separately. Multisite replication requires a consistent configuration of zones and does not tolerate discrepancies in settings.

Ceph — we verify compatibility on a test bench that replicates your environment before migrating production data.