1globus-rls-server(8) System Manager's Manual globus-rls-server(8)
2
3
4
6 globus-rls-server - Replica Location Server
7
9 globus-rls-server [ -B update_bf_int ] [ -b maxbackoff ] [ -C rlscert‐
10 file ] [ -c conffile ] [ -d ] [ -e rli_expire_int ] [ -F update_factor
11 ] [ -f maxfreethreads ] [ -I true|false [ -i idletimeout ] [ -K rlskey‐
12 file ] [ -L loglevel ] [ -l true|false ] [ -M maxconnections ] [ -m
13 maxthreads ] [ -N ] [ -o update_buftime ] [ -p pidfiledir ] [ -r
14 true|false ] [ -S rli_expire_stale ] [ -s startthreads ] [ -t timeout ]
15 [ -U myurl ] [ -u update_ll_int ] [ -v ]
16
18 The RLS server globus-rls-server supports both a Location Replica Cata‐
19 log (LRC) server, which manages Logical FileName (LFN) to Physical
20 FileName (PFN) mappings in a database, and a Replica Location Index
21 (RLI) server, which manages mappings of LFNs to LRC servers. globus-
22 rls-server may be configured as either an LRC or RLI server, or both.
23 Both LRCs and RLIs may be configured to send updates to other RLIs
24 (using globus-rls-admin(8)).
25
26 Clients wishing to locate 1 or more physical filenames associated with
27 a logical filename may first contact an RLI server, which will return a
28 list of LRCs that may know about the LFN. The LRC servers are then
29 contacted in turn to find the physical filenames. Note that RLI infor‐
30 mation may be out of date, so clients should be prepared to get a nega‐
31 tive response when contacting an LRC (or no response at all if the LRC
32 server is unavailable).
33
34 globus-rls-server uses syslog(3) to log errors and other information
35 (facility LOG_DAEMON) when it's running in normal (daemon) mode. If
36 the -d option (debug) is specified then log messages are written to
37 stdout.
38
40 Two methods exist for LRC or RLI servers to inform RLI servers of their
41 LFNs. By default the list of LFNs are sent from the source to the RLI.
42 This can be time consuming if the number of LFNs is large, but does
43 give the RLI an exact list of the LFNs known to the LRC. This allows
44 wildcard searching of the RLI. Alternatively Bloom filters may be
45 sent, which are highly compressed summaries of the LFNs, however they
46 do not allow wildcard searching, and they will generate more "false
47 positives" when querying an RLI. Please see below for more on Bloom
48 filters. The program globus-rls-admin(8) can be used to manage the
49 list of RLIs that an LRC or RLI server sends updates to, this includes
50 partitioning LFNs amongst multiple RLI servers.
51
52 A softstate algorithm is used for updates, periodically the source
53 server sends its state (LFN information) to the RLI servers it updates.
54 The RLI servers add these LFNs to their index, or update a timestamp if
55 the LFNs were already known. RLI servers expire information about
56 LFN,LRC mappings if they haven't been updated for a period longer than
57 the softstate update interval.
58
59 Options that can be configured to control the softstate algorithm when
60 a source server updates an RLI by sending LFNs are include:
61
62 rli_expire_int (seconds)
63 How often an RLI server will check for stale entries in its
64 database.
65
66 rli_expire_stale (seconds)
67 How old an entry must be in an RLI database before it's consid‐
68 ered stale. This value should be no smaller than update_ll_int.
69 Note if the LRC server is responding this value is not used,
70 instead the value of update_ll_int or update_bf_int is retrieved
71 from the LRC server, multiplied by 1.2, and used as the value
72 for rli_expire_stale.
73
74 update_bf_int seconds
75 Interval between RLI updates when using Bloom filters.
76
77 update_ll_int (seconds)
78 Interval between RLI updates when using LFN lists for softstate
79 updates.
80
81 Updates to an LRC (new LFNs or deleted LFNs) normally don't propagate
82 to RLI servers until the next softstate update (controlled by
83 update_ll_int and update_bf_int). However by enabling "immediate
84 update" mode an LRC will send updates to an RLI within update_buftime
85 seconds. Immedate updates are enabled by setting update_immediate to
86 true. If updates are done with LFN lists then only the LFNs that have
87 been added or deleted to the source server are sent, if Bloom filters
88 are used then the entire Bloom filter is sent.
89
90 When immediate updates are enabled the interval between softstate
91 updates is multiplied by update_factor as long as no updates have
92 failed (source and RLI are considered to be in sync). This can greatly
93 reduce the number of softstate updates a source needs to send to an
94 RLI. Incremental updates are buffered by the source server until
95 either 100 udpates have accumulated (when LFN lists are used), or
96 update_buftime seconds have passed since the last update.
97
98 A Bloom filter is an array of bits. Each LFN is hashed multiple times
99 and the corresponding bits in the Bloom filter are set. Querying an
100 RLI to verify if an LFN exists is done by performing the same hashes,
101 and checking if the bits in the filter are on. If not then the LFN is
102 known not to exist, however if they're all on then all that's known is
103 that the LFN probably exists. The size of the Bloom filter (as a mul‐
104 tiple of the number of LFNs) and the number of hash functions, control
105 the false positive rate. The default values of 10 and 3 give a false
106 positive rate of approximately 1%. The advantage of Bloom filters is
107 their efficiency. For example, if the LRC has 1,000,000 LFNs in its
108 database, of average length 20 bytes, then 20,000,000 bytes must be
109 sent to an RLI during a softstate update (assuming no partitioning).
110 The RLI server must perform 1,000,000 updates to its database to create
111 new LFN,LRC mappings, or update timestamps on existing entries. With
112 Bloom filters only 1,250,000 bytes are sent (10 x 1,000,000 bits / 8),
113 and there are no database operations on the RLI (Bloom filters are
114 maintained entirely in memory). A comparison of the time to perform a
115 1,000,000 LFN update took 20 minutes sending all the LFNs, and less
116 than 1 second using a Bloom filter. However as noted before wild card
117 searches of an RLI are not supported with Bloom filters.
118
119 The options that control Bloom filter updates are:
120
121 rli_bloomfilter true|false
122 RLI servers must have this set to accept Bloom filter updates.
123
124 rli_bloomfilter_dir none|default|pathname
125 Bloom filters saved in this directory and read at start time if
126 not "none". See CONFIGURATION for details.
127
128 lrc_bloomfilter_numhash N
129 Number of hash functions, an integer from 1 to 8. The default
130 is 3.
131
132 lrc_bloomfilter_ratio N
133 Size of the Bloom filter as a multiple of the number of LFNs in
134 the LRC database. Too small a value will generate too many
135 false positives, too large wastes memory and network bandwidth.
136
137 Note an LRC server can update some RLIs with Bloom filters, and others
138 with LFNs. However an RLI server can only be updated using one method,
139 and an RLI acting as a source for updates can only send the type of
140 updates that it receives.
141
143 -b maxbackoff
144 Maximum time, in seconds, that globus-rls-server will attempt to
145 reopen the socket it listens on after an I/O error.
146
147 -C rlscertfile
148 Name of X.509 certificate file that identifies the server, sets
149 environment variable X509_USER_CERT.
150
151 -c conffile
152 Name of configuration file for server. The default is
153 $GLOBUS_LOCATION/etc/globus-rls-server.conf if the environment
154 variable GLOBUS_LOCATION is set, else /etc/globus-rls-
155 server.conf.
156
157 -d Enable debugging. Server will not detach from controlling ter‐
158 minal and log messages will be written to stdout rather than
159 syslog. For additional logging verbosity set loglevel (see -L
160 option) to higher values.
161
162 -e rli_expire_int
163 Interval (seconds) at which an RLI server should expire stale
164 entries.
165
166 -F update_factor
167 If update_immediate mode is on, and the source server is in sync
168 with an RLI server (an LRC and RLI are synced if there have been
169 no failed updates since the last full softstate update), then
170 the interval between RLI updates for this server ( update_ll_int
171 ) is multipled by update_factor.
172
173 -f maxfreethreads
174 Maximum number of idle threads server will leave running.
175 Excess threads are terminated.
176
177 -I true|false
178 Turns LRC to RLI immediate update mode on or off. Default is
179 false.
180
181 -i idletimeout
182 Seconds after which idle client connections are timed out.
183
184 -K rlskeyfile
185 Name of X.509 key file. Sets environment variable
186 X509_USER_KEY.
187
188 -L loglevel
189 Sets log level. By default this is 0, which means only errors
190 will be logged. Higher values mean more verbose logging. Level
191 1 causes logging of major events (eg start of full softstate
192 update), 2 includes medium level events (eg writing pending
193 updates to an RLI), 3 enables all tracing. Level 4 includes all
194 the SQL commands executed by the server.
195
196 -l true|false
197 Configure whether server is an LRC server. Default is false.
198
199 -M maxconnections
200 Maximum number of active connections. Should be small enough to
201 prevent server from running out of open file descriptors.
202 Default is 100.
203
204 -m maxthreads
205 Maximum number of threads server will start up to support simul‐
206 taneous requests.
207
208 -N Disable authentication checking. Intended for debugging.
209 Clients should use the URL RLSN://host to disable authentication
210 on the client side.
211
212 -o update_buftime
213 Softstate updates are buffered until either the buffer is full
214 or this much time has elapsed since the last update. Default is
215 30 seconds.
216
217 -p pidfiledir
218 Directory where pid file should be written.
219
220 -r Configure whether server is an RLI server. Default is false.
221
222 -S rli_expire_stale
223 Interval after which entries in the RLI database are considered
224 stale (presumably because they were deleted in the LRC). Stale
225 entries are not returned in queries.
226
227 -s startthreads
228 Number of threads to start up initially.
229
230 -t timeout
231 Timeout (in seconds) for calls to other RLS servers (eg for LRC
232 calls to send an update to an RLI). A value of 0 disables time‐
233 outs. The default is 30 seconds.
234
235 -U myurl
236 URL for this server.
237
238 -u update_ll_int
239 Interval (in seconds) between lfn-list LRC to RLI updates.
240
241 -v Show version and exit.
242
244 The server will reread its configuration file if it receives a HUP sig‐
245 nal. It will wait for all current requests to complete and shut down
246 cleanly if sent a INT, QUIT or TERM signal.
247
249 If the configuration file is not specified on the command line (see the
250 -c option) then it's looked for in $GLOBUS_LOCATION/etc/globus-rls-
251 server.conf, or /etc/globus-rls-server.conf if GLOBUS_LOCATION is not
252 set.
253
254 Most command line options may also be set in the configuration file,
255 however command line options always override items found in the config‐
256 uration file. The configuration file is a sequence of lines consisting
257 of a keyword, whitespace, and a value. Comments begin with a # and end
258 with a newline.
259
260 acl user: permission [permission]
261 user is a regular expression matching distinguished names (or
262 local usernames if a gridmap file is used) of users allowed to
263 make calls to the server. Permission is one or more of
264 lrc_read, lrc_update, rli_read, rli_update, admin, stats, and
265 all. There may be multiple acl entries, the first match found
266 is used to determine a user's privileges. The admin privilege
267 is necessary to update an LRC's list of RLIs to send updates to.
268 The stats privilege allows a client to read performance statis‐
269 tics.
270
271 A gridmap file may also be used to map DNs to local usernames,
272 which in turn are matched against the regular expressions in the
273 acl list to determine the user's permissions.
274
275 acl entries may be a combination of DNs and local usernames. If
276 a DN is not found in the gridmap file then it is used to search
277 the acl list.
278
279 authentication true|false
280 Enable or disable GSI authentication. The default is true. If
281 authentication is enabled clients should use the URL schema
282 "rls:" to connect to the server, if disabled "rlsn:".
283
284 db_pwd password
285 Password to use to connect to MYSQL server, default is
286 changethis.
287
288 db_user databaseuser
289 Username to use to connect to MYSQL server, default is dbperson.
290
291 idletimeout seconds
292 Seconds after which idle connections closed, default is 900.
293
294 loglevel N
295 Sets loglevel to N (default is 0). Higher levels mean more ver‐
296 bosity.
297
298 lrc_bloomfilter_numhash N
299 Number of hash functions to use in Bloom filters. The default
300 is 3. Possible values are 1 to 8. This value, in conjunction
301 with lrc_bloomfilter_ratio, will determine the number of false
302 positives that may be expected when querying an RLI that is
303 updated via Bloom filters. The default values of 3 and 10 give
304 a false positive rate of approximately 1%.
305
306 lrc_bloomfilter_ratio N
307 Sets ratio of bloom filter size (in bits) to number of LFNs in
308 the LRC catalog. Only meaningful if Bloom filters are used to
309 update an RLI. The default is 10.
310
311 lrc_dbname
312 Name of LRC database, default is lrcdb.
313
314 lrc_server true|false
315 True if LRC server, default is false.
316
317 maxbackoff seconds
318 Max seconds to wait before retrying listen in the event of an
319 I/O error, default is 300.
320
321 maxfreethreads N
322 Maximum number of idle threads, excess threads are killed.
323 Default is 5.
324
325 maxconnections N
326 Maximum number of simultaneous connections. Default is 100.
327
328 maxthreads N
329 Maximum number of threads running at one time, default is 30.
330
331 myurl URL
332 URL of server. Default is rls://<hostname>:port
333
334 odbcini filename
335 Sets environment variable ODBCINI. If not specified, and
336 ODBCINI is not already set, then defaults to $GLOBUS_LOCA‐
337 TION/var/odbc.ini.
338
339 pidfiledir directory
340 Directory where pid file should be written, default is /var/run.
341
342 port N Port server listens on, default is 39281.
343
344 result_limit limit
345 Sets the maximum number of results returned by a query. If a
346 query request includes a limit greater than this value an error
347 (GLOBUS_RLS_BADARG) is returned. If the query request has no
348 limit specified then at most result_limit records are returned
349 by a query. A value of zero means no limit, this is the
350 default.
351
352 rli_bloomfilter true|false
353 If true then only Bloom filter updates are accepted from source
354 servers, otherwise full LFN lists are accepted. Note if Bloom
355 filters are enabled then the RLI does not support wildcarded
356 queries.
357
358 rli_bloomfilter_dir none|default|pathname
359 If an RLI is configured to accept bloom filters (rli_bloomfilter
360 true) then bloom filters may be saved to this directory after
361 updates. This directory is scanned when an RLI server starts up
362 and is used to initialize Bloom filters for each LRC that
363 updated the RLI. This option is useful when it is desired that
364 the RLI recover its data immediately after a restart rather than
365 wait for LRCs to send another update. If the LRCs are updating
366 frequently this option is unnecessary, and may be wasteful in
367 that each Bloom filter is written to disk after each update.
368
369 If rli_bloomfilter_dir is set to the string "none" then Bloom
370 filters are not saved to disk, this is the default. If
371 "default" then the default directory is used, which is
372 $GLOBUS_LOCATION/var/rls-bloomfilters if GLOBUS_LOCATION is set,
373 else /tmp/rls-bloomfilters. Any other string is used as the
374 directory name unchanged. The Bloom filter files in this direc‐
375 tory have the name of the URL of the LRC that sent the Bloom
376 filter, with slashes (/) changed to percent signs (%), and ".bf"
377 appended.
378
379 rli_dbname database
380 Name of RLI database, default is rlidb.
381
382 rli_expire_int seconds
383 Interval between RLI expirations of stale entries. Default is
384 28800 seconds.
385
386 rli_expire_stale seconds
387 Interval after which entries in the RLI database are considered
388 stale (presumably because they were deleted in the LRC).
389 Default is 86400 seconds. Stale RLI entries are not returned in
390 queries.
391
392 rli_server true|false
393 True if RLI server, default is false.
394
395 rlscertfile filename
396 Name of X.509 certificate file identifying server, set by set‐
397 ting environment variable X509_USER_CERT.
398
399 rlskeyfile
400 Name of X.509 key file for server, set by setting environment
401 variable X509_USER_KEY.
402
403 startthreads N
404 Number of threads to start initially, default is 3.
405
406 timeout seconds
407 Timeout (in seconds) for calls to other RLS servers (eg for LRC
408 calls to send an update to an RLI).
409
410 update_bf_int seconds
411 Interval between RLI updates when the RLI is updated by Bloom
412 filters. The default is 900 seconds.
413
414 update_buftime N
415 RLI updates are buffered until either the buffer is full or this
416 much time has elapsed since the last update. Default is 30 sec‐
417 onds.
418
419 update_factor N
420 If update_immediate mode is on, and the source server is in sync
421 with an RLI server (a source and RLI are synced if there have
422 been no failed updates since the last full softstate update),
423 then the interval between RLI updates for this server (
424 update_ll_int ) is multipled by update_factor.
425
426 update_immediate true|false
427 Turn LRC to RLI immediate mode updates on or off. Default is
428 false.
429
430 update_ll_int seconds
431 Seconds between lfn-list softstate updates, default is 86400
432 seconds.
433
434 update_retry seconds
435 Seconds to wait before a source server will retry to connect to
436 an RLI server that it needs to update. Default is 300.
437
439 $GLOBUS_LOCATION/etc/globus-rls-server.conf
440 Default configuration file.
441
442
443
444 24 Feb 02 globus-rls-server(8)