diff options
author | Casey Bodley <cbodley@redhat.com> | 2019-03-15 19:35:13 +0100 |
---|---|---|
committer | Casey Bodley <cbodley@redhat.com> | 2019-03-15 20:50:32 +0100 |
commit | c95585b1984e60708addee436a774d0c92ce57a6 (patch) | |
tree | 367116b5d9da7b2b96566c735a19f2188349fdac | |
parent | Merge PR #26958 into nautilus (diff) | |
download | ceph-c95585b1984e60708addee436a774d0c92ce57a6.tar.xz ceph-c95585b1984e60708addee436a774d0c92ce57a6.zip |
doc/rgw: document placement target configuration
Fixes: http://tracker.ceph.com/issues/24508
Signed-off-by: Casey Bodley <cbodley@redhat.com>
-rw-r--r-- | doc/radosgw/index.rst | 1 | ||||
-rw-r--r-- | doc/radosgw/placement.rst | 180 |
2 files changed, 181 insertions, 0 deletions
diff --git a/doc/radosgw/index.rst b/doc/radosgw/index.rst index 8906ef12760..a064733a642 100644 --- a/doc/radosgw/index.rst +++ b/doc/radosgw/index.rst @@ -40,6 +40,7 @@ you may write data with one API and retrieve it with the other. Manual Install w/Civetweb <../../install/install-ceph-gateway> HTTP Frontends <frontends> + Pool Placement <placement> Multisite Configuration <multisite> Configuring Pools <pools> Config Reference <config-ref> diff --git a/doc/radosgw/placement.rst b/doc/radosgw/placement.rst new file mode 100644 index 00000000000..ce9ecbc2e08 --- /dev/null +++ b/doc/radosgw/placement.rst @@ -0,0 +1,180 @@ +============== +Pool Placement +============== + +.. contents:: + +Placement Targets +================= + +.. versionadded:: Jewel + +Placement targets control which `Pools`_ are associated with a particular +bucket. A bucket's placement target is selected on creation, and cannot be +modified. The ``radosgw-admin bucket stats`` command will display its +``placement_rule``. + +The zonegroup configuration contains a list of placement targets with an +initial target named ``default-placement``. The zone configuration then maps +each zonegroup placement target name onto its local storage. This zone +placement information includes the ``index_pool`` name for the bucket index, +the ``data_extra_pool`` name for metadata about incomplete multipart uploads, +and a ``data_pool`` name for object data. + +Zonegroup/Zone Configuration +============================ + +Placement configuration is performed with ``radosgw-admin`` commands on +the zonegroups and zones. + +The zonegroup placement configuration can be queried with: + +:: + + $ radosgw-admin zonegroup get + { + "id": "ab01123f-e0df-4f29-9d71-b44888d67cd5", + "name": "default", + "api_name": "default", + ... + "placement_targets": [ + { + "name": "default-placement", + "tags": [], + } + ], + "default_placement": "default-placement", + ... + } + +The zone placement configuration can be queried with: + +:: + + $ radosgw-admin zone get + { + "id": "557cdcee-3aae-4e9e-85c7-2f86f5eddb1f", + "name": "default", + "domain_root": "default.rgw.meta:root", + ... + "placement_pools": [ + { + "key": "default-placement", + "val": { + "index_pool": "default.rgw.buckets.index", + "data_pool": "default.rgw.buckets.data", + "data_extra_pool": "default.rgw.buckets.non-ec", + "index_type": 0 + } + } + ], + ... + } + +.. note:: If you have not done any previous `Multisite Configuration`_, + a ``default`` zone and zonegroup are created for you, and changes + to the zone/zonegroup will not take effect until the Ceph Object + Gateways are restarted. If you have created a realm for multisite, + the zone/zonegroup changes will take effect once the changes are + committed with ``radosgw-admin period update --commit``. + +Adding a Placement Target +------------------------- + +To create a new placement target named ``temporary``, start by adding it to +the zonegroup: + +:: + + $ radosgw-admin zonegroup placement add \ + --rgw-zonegroup default \ + --placement-id temporary + +Then provide the zone placement info for that target: + +:: + + $ radosgw-admin zone placement add \ + --rgw-zone default \ + --placement-id temporary \ + --data-pool default.rgw.temporary.data \ + --index-pool default.rgw.temporary.index \ + --data-extra-pool default.rgw.temporary.non-ec \ + --compression lz4 + +Customizing Placement +===================== + +Default Placement +----------------- + +By default, new buckets will use the zonegroup's ``default_placement`` target. +This zonegroup setting can be changed with: + +:: + + $ radosgw-admin zonegroup placement default \ + --rgw-zonegroup default \ + --placement-id new-placement + +User Placement +-------------- + +A Ceph Object Gateway user can override the zonegroup's default placement +target by setting a non-empty ``default_placement`` field in the user info. + +:: + + $ radosgw-admin user info --uid testid + { + ... + "default_placement": "", + "placement_tags": [], + ... + } + +If a zonegroup's placement target contains any ``tags``, users will be unable +to create buckets with that placement target unless their user info contains +at least one matching tag in its ``placement_tags`` field. This can be useful +to restrict access to certain types of storage. + +The ``radosgw-admin`` command cannot modify these fields directly, so the json +format must be edited manually: + +:: + + $ radosgw-admin metadata get user:<user-id> > user.json + $ vi user.json + $ radosgw-admin metadata put user:<user-id> < user.json + +S3 Bucket Placement +------------------- + +When creating a bucket with the S3 protocol, a placement target can be +provided as part of the LocationConstraint to override the default placement +targets from the user and zonegroup. + +Normally, the LocationConstraint must match the zonegroup's ``api_name``: + +:: + + <LocationConstraint>default</LocationConstraint> + +A custom placement target can be added to the ``api_name`` following a colon: + +:: + + <LocationConstraint>default:new-placement</LocationConstraint> + +Swift Bucket Placement +---------------------- + +When creating a bucket with the Swift protocol, a placement target can be +provided in the HTTP header ``X-Storage-Policy``: + +:: + + X-Storage-Policy: new-placement + +.. _`Pools`: ../pools +.. _`Multisite Configuration`: ../multisite |