2018-07-30 05:07:21 +00:00
|
|
|
.. _object-gateway:
|
|
|
|
|
2013-05-31 03:27:01 +00:00
|
|
|
=====================
|
2013-08-05 20:44:20 +00:00
|
|
|
Ceph Object Gateway
|
2013-05-31 03:27:01 +00:00
|
|
|
=====================
|
2012-06-26 15:21:05 +00:00
|
|
|
|
2013-08-05 20:44:20 +00:00
|
|
|
:term:`Ceph Object Gateway` is an object storage interface built on top of
|
2022-11-12 21:28:45 +00:00
|
|
|
``librados``. It provides a RESTful gateway between applications and Ceph
|
|
|
|
Storage Clusters. :term:`Ceph Object Storage` supports two interfaces:
|
2012-06-26 15:21:05 +00:00
|
|
|
|
2017-03-30 21:53:49 +00:00
|
|
|
#. **S3-compatible:** Provides object storage functionality with an interface
|
2013-05-31 03:27:01 +00:00
|
|
|
that is compatible with a large subset of the Amazon S3 RESTful API.
|
2012-06-26 15:21:05 +00:00
|
|
|
|
2013-05-31 03:27:01 +00:00
|
|
|
#. **Swift-compatible:** Provides object storage functionality with an interface
|
2012-06-26 15:21:05 +00:00
|
|
|
that is compatible with a large subset of the OpenStack Swift API.
|
2017-03-30 21:53:49 +00:00
|
|
|
|
2022-11-20 04:14:44 +00:00
|
|
|
Ceph Object Storage uses the Ceph Object Gateway daemon (``radosgw``), an HTTP
|
|
|
|
server designed for interacting with a Ceph Storage Cluster. The Ceph Object
|
|
|
|
Gateway provides interfaces that are compatible with both Amazon S3 and
|
|
|
|
OpenStack Swift, and it has its own user management. Ceph Object Gateway can
|
|
|
|
store data in the same Ceph Storage Cluster in which data from Ceph File System
|
|
|
|
clients and Ceph Block Device clients is stored. The S3 API and the Swift API
|
|
|
|
share a common namespace, which makes it possible to write data to a Ceph
|
|
|
|
Storage Cluster with one API and then retrieve that data with the other API.
|
2012-10-01 21:09:21 +00:00
|
|
|
|
2020-04-09 13:25:39 +00:00
|
|
|
.. ditaa::
|
|
|
|
|
|
|
|
+------------------------+ +------------------------+
|
2012-10-01 21:09:21 +00:00
|
|
|
| S3 compatible API | | Swift compatible API |
|
|
|
|
+------------------------+-+------------------------+
|
2014-04-14 16:18:26 +00:00
|
|
|
| radosgw |
|
2012-10-01 21:09:21 +00:00
|
|
|
+---------------------------------------------------+
|
2014-05-05 19:34:59 +00:00
|
|
|
| librados |
|
2012-10-01 21:09:21 +00:00
|
|
|
+------------------------+-+------------------------+
|
|
|
|
| OSDs | | Monitors |
|
2017-03-30 21:53:49 +00:00
|
|
|
+------------------------+ +------------------------+
|
2012-10-01 21:09:21 +00:00
|
|
|
|
2013-05-31 03:27:01 +00:00
|
|
|
.. note:: Ceph Object Storage does **NOT** use the Ceph Metadata Server.
|
2012-10-01 21:09:21 +00:00
|
|
|
|
2012-06-26 15:21:05 +00:00
|
|
|
|
|
|
|
.. toctree::
|
2017-03-16 07:03:43 +00:00
|
|
|
:maxdepth: 1
|
|
|
|
|
2018-01-22 19:43:38 +00:00
|
|
|
HTTP Frontends <frontends>
|
2017-03-16 07:03:43 +00:00
|
|
|
Multisite Configuration <multisite>
|
2022-12-01 02:19:45 +00:00
|
|
|
Pool Placement and Storage Classes <placement>
|
2019-12-15 15:56:01 +00:00
|
|
|
Multisite Sync Policy Configuration <multisite-sync-policy>
|
2017-05-18 18:45:03 +00:00
|
|
|
Configuring Pools <pools>
|
2017-03-16 07:03:43 +00:00
|
|
|
Config Reference <config-ref>
|
|
|
|
Admin Guide <admin>
|
|
|
|
S3 API <s3>
|
rgw: Adding data cache and CDN capabilities
This feature is meant to add data cache feature to the RGW.
It is using Nginx as a cache server.
This feature adds 2 new apis, Auth api and Cache api.
Some Performance tests using hsbench:
16K objs:
RGW direct access:
Mode: GET, Ops: 3001, MB/s: 46.89, Lat(ms): [ min: 30.4, avg: 33.2, 99%: 34.7, max: 35.2 ]
Nginx access (objs have not been cached)
Mode: GET, Ops: 1363, MB/s: 21.30, Lat(ms): [ min: 63.8, avg: 73.8, 99%: 78.1, max: 86.6 ]
Nginx access (objs have been cached)
Mode: GET, Ops: 2446, MB/s: 38.22, Lat(ms): [ min: 36.9, avg: 41.0, 99%: 43.9, max: 45.9 ]
512K objs:
RGW direct access:
Mode: GET, Ops: 1492, MB/s: 746.00 Lat(ms): [ min: 60.4, avg: 66.7, 99%: 73.5, max: 75.9 ]
Nginx access (objs have not been cached)
Mode: GET, Ops: 1382, MB/s: 691.00, Lat(ms): [ min: 64.5, avg: 72.1, 99%: 77.9, max: 82.8 ]
Nginx access (objs have been cached)
Mode: GET, Ops: 2947, MB/s: 1473.50, Lat(ms): [ min: 3.3, avg: 32.7, 99%: 62.2, max: 72.1 ]
2M objs:
RGW direct access:
Mode: GET, Ops: 613, MB/s: 1226.00, Lat(ms): [ min: 143.6, avg: 162.0, 99%: 180.2, max: 190.1 ]
Nginx access (objs have not been cached)
Mode: GET, Ops: 462, MB/s: 924.00, Lat(ms): [ min: 180.2, avg: 215.0, 99%: 243.2, max: 248.3 ]
Nginx access (objs have been cached)
Mode: GET, Ops: 1392, MB/s: 2784.00, Lat(ms): [ min: 3.0, avg: 5.3, 99%: 18.8, max: 30.2 ]
10M objs:
RGW direct access:
Mode: GET, Ops: 135, MB/s: 1350.00, Lat(ms): [ min: 191.1, avg: 265.8, 99%: 373.1, max: 382.8 ]
Nginx access (objs have not been cached)
Mode: GET, Ops: 120, MB/s: 1200.00, Lat(ms): [ min: 302.1, avg: 428.8, 99%: 561.2, max: 583.7 ]
Nginx access (objs have been cached)
Mode: GET, Ops: 281, MB/s: 2810.00, Lat(ms): [ min: 3.2, avg: 8.3, 99%: 16.9, max: 25.6 ]
gdal_translate 4GiB image gdal_translate -co NUM_THREADS=ALL_CPUS /vsis3/hello/sat.tif
Nginx (have not cached):
real 0m24.714s
user 0m8.692s
sys 0m10.360s
Nginx (have been cached):
real 0m21.070s
user 0m9.140s
sys 0m10.316s
RGW:
real 0m21.859s
user 0m8.850s
sys 0m10.386s
The results are showing that for objects larger than 512K the cache will increase the performance by twice or more.
For small objs, the overhead of sending the auth request will make the cache less efficient
The result for cached objects in the 10MB test can be explained by net limit of 25 Gb/s(it could reach more)
In Gdal (image decoder/encoder over s3 using range requests) the results were not that different because of Gdal single cpu encoding/decoding.
Gdal have been chosen because of the ability to check the smart cache of the nginx.
https://www.nginx.com/blog/smart-efficient-byte-range-caching-nginx/
Signed-off-by: Or Friedmann <ofriedma@redhat.com>
2020-02-03 10:36:10 +00:00
|
|
|
Data caching and CDN <rgw-cache.rst>
|
2017-03-16 07:03:43 +00:00
|
|
|
Swift API <swift>
|
|
|
|
Admin Ops API <adminops>
|
|
|
|
Python binding <api>
|
2017-07-07 03:41:28 +00:00
|
|
|
Export over NFS <nfs>
|
2017-03-16 07:03:43 +00:00
|
|
|
OpenStack Keystone Integration <keystone>
|
2017-02-15 23:47:32 +00:00
|
|
|
OpenStack Barbican Integration <barbican>
|
2019-08-15 14:09:08 +00:00
|
|
|
HashiCorp Vault Integration <vault>
|
2021-02-03 19:26:46 +00:00
|
|
|
KMIP Integration <kmip>
|
2018-05-30 23:49:30 +00:00
|
|
|
Open Policy Agent Integration <opa>
|
2017-03-16 07:03:43 +00:00
|
|
|
Multi-tenancy <multitenancy>
|
|
|
|
Compression <compression>
|
2017-07-07 03:41:28 +00:00
|
|
|
LDAP Authentication <ldap-auth>
|
2017-02-15 23:47:32 +00:00
|
|
|
Server-Side Encryption <encryption>
|
2017-04-03 22:03:00 +00:00
|
|
|
Bucket Policy <bucketpolicy>
|
2017-06-26 11:58:49 +00:00
|
|
|
Dynamic bucket index resharding <dynamicresharding>
|
2018-04-04 21:29:23 +00:00
|
|
|
Multi factor authentication <mfa>
|
2018-01-25 16:16:23 +00:00
|
|
|
Sync Modules <sync-modules>
|
2019-08-22 13:31:01 +00:00
|
|
|
Bucket Notifications <notifications>
|
2017-03-16 07:03:43 +00:00
|
|
|
Data Layout in RADOS <layout>
|
2019-12-04 04:57:05 +00:00
|
|
|
STS <STS>
|
2018-09-11 05:40:33 +00:00
|
|
|
STS Lite <STSLite>
|
2019-12-04 04:57:05 +00:00
|
|
|
Keycloak <keycloak>
|
2021-07-26 05:30:36 +00:00
|
|
|
Session Tags <session-tags>
|
2018-10-17 15:11:57 +00:00
|
|
|
Role <role>
|
2020-11-30 18:46:07 +00:00
|
|
|
Orphan List and Associated Tooling <orphans>
|
2020-03-29 17:46:30 +00:00
|
|
|
OpenID Connect Provider <oidc>
|
2017-03-16 07:03:43 +00:00
|
|
|
troubleshooting
|
|
|
|
Manpage radosgw <../../man/8/radosgw>
|
|
|
|
Manpage radosgw-admin <../../man/8/radosgw-admin>
|
2019-03-15 15:20:12 +00:00
|
|
|
QAT Acceleration for Encryption and Compression <qat-accel>
|
2020-02-12 04:21:54 +00:00
|
|
|
S3-select <s3select>
|
2020-06-08 12:26:47 +00:00
|
|
|
Lua Scripting <lua-scripting>
|
2021-07-14 16:37:16 +00:00
|
|
|
D3N Data Cache <d3n_datacache>
|
2020-12-21 15:20:30 +00:00
|
|
|
Cloud Transition <cloud-transition>
|
2017-06-26 11:58:49 +00:00
|
|
|
|