[tahoe-lafs-trac-stream] [Tahoe-LAFS] #3457: The separate introducer servers represent unnecessary complexity in an overall Tahoe-LAFS deployment
Tahoe-LAFS
trac at tahoe-lafs.org
Thu Oct 1 19:30:20 UTC 2020
#3457: The separate introducer servers represent unnecessary complexity in an
overall Tahoe-LAFS deployment
------------------------------+-----------------------
Reporter: exarkun | Owner:
Type: defect | Status: new
Priority: normal | Milestone: undecided
Component: code-network | Version: n/a
Resolution: | Keywords:
Launchpad Bug: |
------------------------------+-----------------------
Comment (by exarkun):
Here's a more concrete elaboration of the latter idea above.
The introducer-v3 manages a mutable directory on a grid (typically the
grid for which it is the manager). This is the grid service directory
(GSD). It encodes the mutable directory so that any single share from any
single server in the grid is sufficient to reconstruct its contents. It
holds the writecap for the directory in secret and, for certain
operations, shares the readcap.
Into this directory, introducer-v3 will link readcaps for grid service
announcement (GSAs) it wishes to share with any of its clients. These
readcaps yield objects containing, for example, a storage service
announcement.
A client is granted access to a grid by receiving two pieces of
information. First, the readcap for the GSD. Second, one or more storage
service fURLs. The client connects to any one storage service using the
fURLs supplied and reads the GSD and all GSAs. Among the GSAs should be
storage service announcements for all storage servers related to the
introducer-v3 granting access. At this point the client can connect to
and use all of the necessary storage servers. The client will monitor the
GSD and GSAs to remain up to date with any reconfigurations which might
take place (addition of new GSAs, removal of old GSAs, modifications to
existing GSAs).
A manual CLI for this workflow might go something like this.
First, the operator of the introducer-v3 produces the two pieces of
information required by the client:
{{{
$ introducer-v3 get-introduction-text
<dir readcap>,<storage furl>[,<storage furl>,...]
}}}
Then the information is shared out-of-band with the client which enters it
into their client:
{{{
$ tahoe create-node --introducer-v3 <dir readcap>,<storage furl>[,<storage
furl>,...] ...
}}}
The given configuration is recorded for use when the node is running.
When the node is started it:
1. uses one of the <storage furl> values to connect to a storage service
2. retrieves the GSD (using the <dir readcap>)
3. fetches each GSA in the GSD
4. rewrites its configuration to record all storage announcements found in
the GSAs
Thereafter, it periodically repeats steps 2-4 to ensure it remains up-to-
date with any changes made by its introducer.
A storage server can be taken out of service by unlinking its GSA from the
GSD.
{{{
$ introducer-v3 remove-announcement <readcap>
}}}
A storage server can self-report configuration changes (such as its
location hints) by rewriting its own GSA. It takes care to encode the GSA
so that every storage server known to it receives a share that is
sufficient to reconstruct the GSA.
A new storage server can be commissioned by:
1. receiving access to the grid in the manner any client would
2. writing its GSA to a mutable file
3. sharing the readcap for its GSA with the introducer-v3
4. the introducer-v3 operator links the readcap into the GSD
{{{
$ introducer-v3 add-announcement <readcap>
}}}
--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3457#comment:5>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage
More information about the tahoe-lafs-trac-stream
mailing list