Skip to content

Commit 81a7af4

Browse files
authored
Merge pull request #13870 from nextcloud/multi-instance-s3
add documentation for multi-instance primary object storage
2 parents 983b9d1 + 369d8fc commit 81a7af4

File tree

1 file changed

+55
-3
lines changed

1 file changed

+55
-3
lines changed

admin_manual/configuration_files/primary_storage.rst

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,14 +244,15 @@ Multibucket Object Store
244244
It's possible to configure Nextcloud to distribute the data over multiple buckets
245245
for scalability purposes.
246246

247-
To setup multiple buckets, use :code:`'objectstore_multibucket'` storage backend
248-
in :code:`config.php`:
247+
To setup multiple buckets, set :code:`'multibucket => true'` in the object store
248+
configuration in :code:`config.php`:
249249

250250
::
251251

252-
'objectstore_multibucket' => [
252+
'objectstore' => [
253253
'class' => 'Object\\Storage\\Backend\\Class',
254254
'arguments' => [
255+
'multibucket' => true,
255256
// optional, defaults to 64
256257
'num_buckets' => 64,
257258
// will be postfixed by an integer in the range from 0 to (num_nuckets-1)
@@ -271,6 +272,57 @@ You can find out more information about upscaling with object storage and Nextcl
271272
`Nextcloud customer portal <https://portal.nextcloud.com/article/object-store-as-primary-storage-16.html>`_.
272273

273274

275+
---------------------------
276+
Multi-instance Object Store
277+
---------------------------
278+
279+
It's possible to configure Nextcloud to distribute the data over multiple object store
280+
instances for further scaling and gradual migration.
281+
282+
To setup multiple buckets, set :code:`'objectstore'` to an array of named configurations
283+
configuration in :code:`config.php` and set the :code:`'default'` to the name of the
284+
configuration to use for newly created users:
285+
286+
::
287+
288+
'objectstore' => [
289+
'default' => 'server2',
290+
'root' => 'server1',
291+
'server1' => [
292+
'class' => 'Object\\Storage\\Backend\\Class',
293+
'arguments' => [
294+
'hostname' => 's3-server1.example.com',
295+
'bucket' => 's1_nextcloud',
296+
...
297+
],
298+
],
299+
'server2' => [
300+
'class' => 'Object\\Storage\\Backend\\Class',
301+
'arguments' => [
302+
'multibucket' => true,
303+
'hostname' => 's3-server2.example.com',
304+
'bucket' => 's2_nextcloud_',
305+
...
306+
],
307+
],
308+
],
309+
310+
.. note:: Bucket names must be unique between all configured object store instances.
311+
312+
Newly created users will be mapped to the object store instance set in :code:`default`.
313+
Files that are not part of the users storage are put in the :code:`root` instance, or
314+
in the :code:`default` instance if no :code:`root` instance is configured.
315+
316+
In the above example, if :code:`server2` is starting to run low on capacity, an admin can
317+
setup and configure a new :code:`server3` and change the :code:`default` to :code:`server3`.
318+
Than any newly created user will have their files put on :code:`server3`.
319+
320+
.. note:: As with multibucket object store, the user-to-instance mapping is only created once,
321+
so only newly created users will be mapped to the new default instance.
322+
323+
It is possible to mix different object store backends and multibucket and non-multibucket in
324+
a multi-instance configuration.
325+
274326
---------------------------
275327
S3 SSE-C encryption support
276328
---------------------------

0 commit comments

Comments
 (0)