Provided by: globus-rls-server_4.9-13_amd64 bug

NAME

       globus-rls-server - Replica Location Server

SYNOPSIS

       globus-rls-server  [ -B update_bf_int ] [ -b maxbackoff ] [ -C rlscertfile ] [ -c conffile
       ] [ -d ] [ -e rli_expire_int ] [ -F update_factor ] [ -f maxfreethreads ] [ -I  true|false
       [ -i idletimeout ] [ -K rlskeyfile ] [ -L loglevel ] [ -l true|false ] [ -M maxconnections
       ] [ -m maxthreads ] [ -N ] [ -o update_buftime ] [ -p pidfiledir ] [ -r true|false ] [  -S
       rli_expire_stale  ] [ -s startthreads ] [ -t timeout ] [ -U myurl ] [ -u update_ll_int ] [
       -v ]

DESCRIPTION

       The RLS server globus-rls-server supports both a Location Replica  Catalog  (LRC)  server,
       which  manages  Logical  FileName (LFN) to Physical FileName (PFN) mappings in a database,
       and a Replica Location Index (RLI) server, which manages mappings of LFNs to LRC  servers.
       globus-rls-server  may  be  configured as either an LRC or RLI server, or both.  Both LRCs
       and RLIs may be configured to send updates to other RLIs (using globus-rls-admin(8)).

       Clients wishing to locate 1 or more physical filenames associated with a logical  filename
       may  first contact an RLI server, which will return a list of LRCs that may know about the
       LFN.  The LRC servers are then contacted in turn to find  the  physical  filenames.   Note
       that  RLI  information may be out of date, so clients should be prepared to get a negative
       response when contacting an LRC (or no response at all if the LRC server is unavailable).

       globus-rls-server uses syslog(3) to log errors and other information (facility LOG_DAEMON)
       when it's running in normal (daemon) mode.  If the -d option (debug) is specified then log
       messages are written to stdout.

LRC to RLI Updates

       Two methods exist for LRC or RLI servers to inform RLI servers of their LFNs.  By  default
       the  list  of LFNs are sent from the source to the RLI.  This can be time consuming if the
       number of LFNs is large, but does give the RLI an exact list of the LFNs known to the LRC.
       This allows wildcard searching of the RLI.  Alternatively Bloom filters may be sent, which
       are highly compressed summaries of the LFNs, however they do not allow wildcard searching,
       and  they will generate more "false positives" when querying an RLI.  Please see below for
       more on Bloom filters.  The program globus-rls-admin(8) can be used to manage the list  of
       RLIs  that  an LRC or RLI server sends updates to, this includes partitioning LFNs amongst
       multiple RLI servers.

       A softstate algorithm is used for updates, periodically the source server sends its  state
       (LFN  information) to the RLI servers it updates.  The RLI servers add these LFNs to their
       index, or update a  timestamp  if  the  LFNs  were  already  known.   RLI  servers  expire
       information  about  LFN,LRC mappings if they haven't been updated for a period longer than
       the softstate update interval.

       Options that can be configured to control the softstate algorithm  when  a  source  server
       updates an RLI by sending LFNs are include:

       rli_expire_int (seconds)
              How often an RLI server will check for stale entries in its database.

       rli_expire_stale (seconds)
              How  old  an  entry  must be in an RLI database before it's considered stale.  This
              value should be  no  smaller  than  update_ll_int.   Note  if  the  LRC  server  is
              responding  this  value  is  not  used,  instead  the  value  of  update_ll_int  or
              update_bf_int is retrieved from the LRC server, multiplied by 1.2, and used as  the
              value for rli_expire_stale.

       update_bf_int seconds
              Interval between RLI updates when using Bloom filters.

       update_ll_int (seconds)
              Interval between RLI updates when using LFN lists for softstate updates.

       Updates to an LRC (new LFNs or deleted LFNs) normally don't propagate to RLI servers until
       the next softstate update (controlled by update_ll_int  and  update_bf_int).   However  by
       enabling  "immediate update" mode an LRC will send updates to an RLI within update_buftime
       seconds.  Immedate updates are enabled by setting update_immediate to  true.   If  updates
       are  done  with LFN lists then only the LFNs that have been added or deleted to the source
       server are sent, if Bloom filters are used then the entire Bloom filter is sent.

       When immediate updates are enabled the interval between softstate updates is multiplied by
       update_factor  as  long  as no updates have failed (source and RLI are considered to be in
       sync).  This can greatly reduce the number of softstate updates a source needs to send  to
       an  RLI.   Incremental  updates are buffered by the source server until either 100 udpates
       have accumulated (when LFN lists are used), or update_buftime seconds  have  passed  since
       the last update.

       A  Bloom  filter  is  an  array  of  bits.   Each  LFN  is  hashed  multiple times and the
       corresponding bits in the Bloom filter are set.  Querying an  RLI  to  verify  if  an  LFN
       exists  is  done by performing the same hashes, and checking if the bits in the filter are
       on.  If not then the LFN is known not to exist, however if they're all on then all  that's
       known is that the LFN probably exists.  The size of the Bloom filter (as a multiple of the
       number of LFNs) and the number of hash functions, control the false  positive  rate.   The
       default  values of 10 and 3 give a false positive rate of approximately 1%.  The advantage
       of Bloom filters is their efficiency.  For example, if the LRC has 1,000,000 LFNs  in  its
       database,  of average length 20 bytes, then 20,000,000 bytes must be sent to an RLI during
       a softstate update (assuming no partitioning).  The  RLI  server  must  perform  1,000,000
       updates  to  its database to create new LFN,LRC mappings, or update timestamps on existing
       entries.  With Bloom filters only 1,250,000 bytes are sent (10 x 1,000,000 bits / 8),  and
       there  are  no  database  operations  on the RLI (Bloom filters are maintained entirely in
       memory).  A comparison of the time to perform a  1,000,000  LFN  update  took  20  minutes
       sending  all  the  LFNs,  and  less  than 1 second using a Bloom filter.  However as noted
       before wild card searches of an RLI are not supported with Bloom filters.

       The options that control Bloom filter updates are:

       rli_bloomfilter true|false
              RLI servers must have this set to accept Bloom filter updates.

       rli_bloomfilter_dir none|default|pathname
              Bloom filters saved in this directory and read at start time if  not  "none".   See
              CONFIGURATION for details.

       lrc_bloomfilter_numhash N
              Number of hash functions, an integer from 1 to 8.  The default is 3.

       lrc_bloomfilter_ratio N
              Size  of  the Bloom filter as a multiple of the number of LFNs in the LRC database.
              Too small a value will generate too many false positives, too large  wastes  memory
              and network bandwidth.

       Note an LRC server can update some RLIs with Bloom filters, and others with LFNs.  However
       an RLI server can only be updated using one method, and an RLI  acting  as  a  source  for
       updates can only send the type of updates that it receives.

OPTIONS

       -b maxbackoff
              Maximum  time, in seconds, that globus-rls-server will attempt to reopen the socket
              it listens on after an I/O error.

       -C rlscertfile
              Name of X.509  certificate  file  that  identifies  the  server,  sets  environment
              variable X509_USER_CERT.

       -c conffile
              Name of configuration file for server.  The default is $GLOBUS_LOCATION/etc/globus-
              rls-server.conf  if  the  environment  variable  GLOBUS_LOCATION   is   set,   else
              /etc/globus-rls-server.conf.

       -d     Enable  debugging.   Server  will  not  detach  from  controlling  terminal and log
              messages will be written to stdout rather  than  syslog.   For  additional  logging
              verbosity set loglevel (see -L option) to higher values.

       -e rli_expire_int
              Interval (seconds) at which an RLI server should expire stale entries.

       -F update_factor
              If update_immediate mode is on, and the source server is in sync with an RLI server
              (an LRC and RLI are synced if there have been no failed updates since the last full
              softstate  update),  then  the  interval  between  RLI  updates  for  this server (
              update_ll_int ) is multipled by update_factor.

       -f maxfreethreads
              Maximum number of idle threads server  will  leave  running.   Excess  threads  are
              terminated.

       -I true|false
              Turns LRC to RLI immediate update mode on or off.  Default is false.

       -i idletimeout
              Seconds after which idle client connections are timed out.

       -K rlskeyfile
              Name of X.509 key file.  Sets environment variable X509_USER_KEY.

       -L loglevel
              Sets  log  level.   By  default  this is 0, which means only errors will be logged.
              Higher values mean more verbose logging.  Level 1 causes logging  of  major  events
              (eg  start  of  full  softstate update), 2 includes medium level events (eg writing
              pending updates to an RLI), 3 enables all tracing.  Level 4 includes  all  the  SQL
              commands executed by the server.

       -l true|false
              Configure whether server is an LRC server.  Default is false.

       -M maxconnections
              Maximum  number  of  active  connections.  Should be small enough to prevent server
              from running out of open file descriptors.  Default is 100.

       -m maxthreads
              Maximum number of threads server will start up to support simultaneous requests.

       -N     Disable authentication checking.  Intended for debugging.  Clients should  use  the
              URL RLSN://host to disable authentication on the client side.

       -o update_buftime
              Softstate  updates  are  buffered until either the buffer is full or this much time
              has elapsed since the last update.  Default is 30 seconds.

       -p pidfiledir
              Directory where pid file should be written.

       -r     Configure whether server is an RLI server.  Default is false.

       -S rli_expire_stale
              Interval after which entries in the RLI database are considered  stale  (presumably
              because they were deleted in the LRC).  Stale entries are not returned in queries.

       -s startthreads
              Number of threads to start up initially.

       -t timeout
              Timeout  (in  seconds)  for calls to other RLS servers (eg for LRC calls to send an
              update to an RLI).  A value of 0 disables timeouts.  The default is 30 seconds.

       -U myurl
              URL for this server.

       -u update_ll_int
              Interval (in seconds) between lfn-list LRC to RLI updates.

       -v     Show version and exit.

SIGNALS

       The server will reread its configuration file if it receives a HUP signal.  It  will  wait
       for  all  current  requests  to complete and shut down cleanly if sent a INT, QUIT or TERM
       signal.

CONFIGURATION

       If the configuration file is not specified on the command line (see the  -c  option)  then
       it's   looked  for  in  $GLOBUS_LOCATION/etc/globus-rls-server.conf,  or  /etc/globus-rls-
       server.conf if GLOBUS_LOCATION is not set.

       Most command line options may also be set in the configuration file, however command  line
       options  always override items found in the configuration file.  The configuration file is
       a sequence of lines consisting of a keyword, whitespace, and a value.  Comments begin with
       a # and end with a newline.

       acl user: permission [permission]
              user  is a regular expression matching distinguished names (or local usernames if a
              gridmap file is used) of users allowed to make calls to the server.  Permission  is
              one  or  more of lrc_read, lrc_update, rli_read, rli_update, admin, stats, and all.
              There may be multiple acl entries, the first match found is  used  to  determine  a
              user's  privileges.   The  admin  privilege is necessary to update an LRC's list of
              RLIs to send updates to.  The stats privilege allows a client to  read  performance
              statistics.

              A  gridmap  file  may also be used to map DNs to local usernames, which in turn are
              matched against the regular expressions in the acl list  to  determine  the  user's
              permissions.

              acl  entries may be a combination of DNs and local usernames.  If a DN is not found
              in the gridmap file then it is used to search the acl list.

       authentication true|false
              Enable or disable GSI authentication.  The default is true.  If  authentication  is
              enabled  clients  should  use  the  URL  schema "rls:" to connect to the server, if
              disabled "rlsn:".

       db_pwd password
              Password to use to connect to MYSQL server, default is changethis.

       db_user databaseuser
              Username to use to connect to MYSQL server, default is dbperson.

       idletimeout seconds
              Seconds after which idle connections closed, default is 900.

       loglevel N
              Sets loglevel to N (default is 0).  Higher levels mean more verbosity.

       lrc_bloomfilter_numhash N
              Number of hash functions to use in Bloom filters.   The  default  is  3.   Possible
              values  are  1  to  8.  This value, in conjunction with lrc_bloomfilter_ratio, will
              determine the number of false positives that may be expected when querying  an  RLI
              that  is  updated  via  Bloom filters.  The default values of 3 and 10 give a false
              positive rate of approximately 1%.

       lrc_bloomfilter_ratio N
              Sets ratio of bloom filter size (in bits) to number of LFNs  in  the  LRC  catalog.
              Only meaningful if Bloom filters are used to update an RLI.  The default is 10.

       lrc_dbname
              Name of LRC database, default is lrcdb.

       lrc_server true|false
              True if LRC server, default is false.

       maxbackoff seconds
              Max seconds to wait before retrying listen in the event of an I/O error, default is
              300.

       maxfreethreads N
              Maximum number of idle threads, excess threads are killed.  Default is 5.

       maxconnections N
              Maximum number of simultaneous connections.  Default is 100.

       maxthreads N
              Maximum number of threads running at one time, default is 30.

       myurl URL
              URL of server.  Default is rls://<hostname>:port

       odbcini filename
              Sets environment variable ODBCINI.  If not specified, and ODBCINI  is  not  already
              set, then defaults to $GLOBUS_LOCATION/var/odbc.ini.

       pidfiledir directory
              Directory where pid file should be written, default is /var/run.

       port N Port server listens on, default is 39281.

       result_limit limit
              Sets  the  maximum  number  of  results  returned  by  a query.  If a query request
              includes a limit greater than this value an error (GLOBUS_RLS_BADARG) is  returned.
              If  the  query request has no limit specified then at most result_limit records are
              returned by a query.  A value of zero means no limit, this is the default.

       rli_bloomfilter true|false
              If true then only Bloom filter updates are accepted from source servers,  otherwise
              full  LFN  lists are accepted.  Note if Bloom filters are enabled then the RLI does
              not support wildcarded queries.

       rli_bloomfilter_dir none|default|pathname
              If an RLI is configured to accept bloom filters (rli_bloomfilter true)  then  bloom
              filters  may  be  saved to this directory after updates.  This directory is scanned
              when an RLI server starts up and is used to initialize Bloom filters for  each  LRC
              that  updated  the  RLI.   This  option  is  useful when it is desired that the RLI
              recover its data immediately after a restart rather than  wait  for  LRCs  to  send
              another  update.   If  the LRCs are updating frequently this option is unnecessary,
              and may be wasteful in that each Bloom filter is written to disk after each update.

              If rli_bloomfilter_dir is set to the string "none" then Bloom filters are not saved
              to  disk,  this  is  the default.  If "default" then the default directory is used,
              which is $GLOBUS_LOCATION/var/rls-bloomfilters  if  GLOBUS_LOCATION  is  set,  else
              /tmp/rls-bloomfilters.   Any  other string is used as the directory name unchanged.
              The Bloom filter files in this directory have the name of the URL of the  LRC  that
              sent  the  Bloom  filter,  with slashes (/) changed to percent signs (%), and ".bf"
              appended.

       rli_dbname database
              Name of RLI database, default is rlidb.

       rli_expire_int seconds
              Interval between RLI expirations of stale entries.  Default is 28800 seconds.

       rli_expire_stale seconds
              Interval after which entries in the RLI database are considered  stale  (presumably
              because  they  were  deleted  in  the  LRC).   Default is 86400 seconds.  Stale RLI
              entries are not returned in queries.

       rli_server true|false
              True if RLI server, default is false.

       rlscertfile filename
              Name of X.509 certificate file  identifying  server,  set  by  setting  environment
              variable X509_USER_CERT.

       rlskeyfile
              Name   of   X.509  key  file  for  server,  set  by  setting  environment  variable
              X509_USER_KEY.

       startthreads N
              Number of threads to start initially, default is 3.

       timeout seconds
              Timeout (in seconds) for calls to other RLS servers (eg for LRC calls  to  send  an
              update to an RLI).

       update_bf_int seconds
              Interval between RLI updates when the RLI is updated by Bloom filters.  The default
              is 900 seconds.

       update_buftime N
              RLI updates are buffered until either the buffer is full  or  this  much  time  has
              elapsed since the last update.  Default is 30 seconds.

       update_factor N
              If update_immediate mode is on, and the source server is in sync with an RLI server
              (a source and RLI are synced if there have been no failed updates  since  the  last
              full  softstate  update),  then  the interval between RLI updates for this server (
              update_ll_int ) is multipled by update_factor.

       update_immediate true|false
              Turn LRC to RLI immediate mode updates on or off.  Default is false.

       update_ll_int seconds
              Seconds between lfn-list softstate updates, default is 86400 seconds.

       update_retry seconds
              Seconds to wait before a source server will retry to connect to an RLI server  that
              it needs to update.  Default is 300.

FILES

       $GLOBUS_LOCATION/etc/globus-rls-server.conf
              Default configuration file.

                                            24 Feb 02                        globus-rls-server(8)