# Blank lines are permitted in this file. # spread.conf sample file # # questions to spread@spread.org # #MINIMAL REQUIRED FILE # # Spread should work fine on one machine with just the uncommented # lines below. The rest of the file documents all the options and # more complex network setups. # # This configures one spread daemon running on port 4803 on localhost. #Spread_Segment 127.0.0.255:4803 { # # localhost 127.0.0.1 #} # Spread options #--------------------------------------------------------------------------- #--------------------------------------------------------------------------- #Set what internal Spread events are logged to the screen or file # (see EventLogFile). # Default setting is to enable PRINT and EXIT events only. #The PRINT and EXIT types should always be enabled. The names of others are: # EXIT PRINT DEBUG DATA_LINK NETWORK PROTOCOL SESSION # CONFIGURATION MEMBERSHIP FLOW_CONTROL STATUS EVENTS # GROUPS MEMORY SKIPLIST ALL NONE # ALL and NONE are special and represent either enabling every type # or enabling none of them. # You can also use a "!" sign to negate a type, # so { ALL !DATA_LINK } means log all events except data_link ones. #DebugFlags = { PRINT EXIT } # Set priority level of events to output to log file or screen # The possible levels are: # pDEBUG INFO WARNING ERROR CRITICAL FATAL # Once selected all events tagged with that priority or higher will # be output. FATAL events are always output and cause the daemon to # shut down. Some Events are tagged with a priority of PRINT which # causes them to print out no matter what priority level is set. # # The default level used if nothing is set is INFO. #EventPriority = INFO #Set whether to log to a file as opposed to stdout/stderr and what # file to log to. # Default is to log to stdout. # #If option is not set then logging is to stdout. #If option is set then logging is to the filename specified. # The filename can include a %h or %H escape that will be replaced at runtime # by the hostname of the machine upon which the daemon is running. # For example "EventLogFile = spreadlog_%h.log" with 2 machines # running Spread (machine1.mydomain.com and machine2.mydomain.com) will # cause the daemons to log to "spreadlog_machine1.mydomain.com.log" and # "spreadlog_machine2.mydomain.com.log" respectively. #EventLogFile = testlog.out #Set whether to add a timestamp in front of all logged events or not. # Default is no timestamps. Default format is "[%a %d %b %Y %H:%M:%S]". #If option is commented out then no timestamp is added. #If option is enabled then a timestamp is added with the default format #If option is enabled and set equal to a string, then that string is used # as the format string for the timestamp. The string must be a valid time # format string as used by the strftime() function. #EventTimeStamp # or #EventTimeStamp = "[%a %d %b %Y %H:%M:%S]" #Set whether to add a precise (microsecond) resolution timestamp to all logged # events or not. This option requires that EventTimeStamp is also enabled. # If the option is commented out then the microsecond timestamp is not added # If the option is uncommented then a microsecond time will print in addition # to the H:M:S resolution timestamp provided by EventTimeStamp. #EventPreciseTimeStamp # Set to initialize daemon sequence numbers to a 'large' number for testing # this is purely a debugging capability and should never be enabled on # production systems (note one side effect of enabling this is that # your system will experience an extra daemon membership every few messages # so you REALLY do not want this turned on) # If you want to change the initial value the sequence number is set to # you need to edit the #define INITIAL_SEQUENCE_NEAR_WRAP at the top # of configuration.h #DebugInitialSequence #Set whether to allow dangerous monitor commands # like "partition, flow_control, or kill" # Default setting is FALSE. #If option is set to false then only "safe" monitor commands are allowed # (such as requesting a status update). #If option is set to true then all monitor commands are enabled. # THIS IS A SECURTIY RISK IF YOUR NETWORK IS NOT PROTECTED! DangerousMonitor = true #Set handling of SO_REUSEADDR socket option for the daemon's TCP # listener. This is useful for facilitating quick daemon restarts (OSes # often hold onto the interface/port combination for a short period of time # after daemon shut down). # # AUTO - Active when bound to specific interfaces (default). # ON - Always active, regardless of interface. # SECURITY RISK FOR ANY OS WHICH ALLOW DOUBLE BINDS BY DIFFERENT USERS # OFF - Always off. #SocketPortReuse = AUTO #Set what the maximum per-session queue should be for messages before disconnecting # a session. Spread will buffer upto that number of messages that are destined to the # session, but that can not be delivered currently because the session is not reading fast enough. # The compiled in default is usually 1000 if you havn't changed it in the spread_params.h file. #MaxSessionMessages = 5000 #Sets the runtime directory used when the Spread daemon is run as root # as the directory to chroot to. Defaults to the value of the # compile-time preprocessor define SP_RUNTIME_DIR, which is generally # "/var/run/spread". #RuntimeDir = /var/run/spread #Sets the unix user that the Spread daemon runs as (when launched as # the "root" user). Not effective on a Windows system. Defaults to # the user and group "spread". #DaemonUser = spread #DaemonGroup = spread #Set the list of authentication methods that the daemon will allow # and those which are required in all cases. # All of the methods listed in "RequiredAuthMethods" will be checked, # irregardless of what methods the client chooses. # Of the methods listed is "AllowedAuthMethods" the client is # permitted to choose one or more, and all the ones the client chooses # will also be checked. # # To support older clients, if NULL is enabled, then older clients can # connect without any authentication. Any methods which do not require # any interaction with the client (such as IP) can also be enabled # for older clients. If you enable methods that require interaction, # then essentially all older clients will be locked out. # #The current choices are: # NULL for default, allow anyone authentication # IP for IP based checks using the spread.access_ip file #RequiredAuthMethods = " " #AllowedAuthMethods = "NULL" #Set the current access control policy. # This is only needed if you want to establish a customized policy. # The default policy is to allow any actions by authenticated clients. #AccessControlPolicy = "PERMIT" # network description line. # Spread_Segment { # port is optional, if not specified the default 4803 port is used. #Spread_Segment 127.0.0.255:4803 { # either a name or IP address. If both are given, than the name is taken # as-is, and the IP address is used for that name. # localhost 127.0.0.1 #} # repeat for next sub-network Spread_Segment 192.168.2.255:4803 { server 192.168.2.8 pi10 192.168.2.10 pi11 192.168.2.11 pi12 192.168.2.12 pi13 192.168.2.13 pi20 192.168.2.20 pi21 192.168.2.21 pi22 192.168.2.22 pi23 192.168.2.23 pi30 192.168.2.30 pi31 192.168.2.31 pi32 192.168.2.32 pi33 192.168.2.33 pi40 192.168.2.40 pi41 192.168.2.41 pi42 192.168.2.42 pi43 192.168.2.43 pi50 192.168.2.50 pi51 192.168.2.51 pi52 192.168.2.52 pi53 192.168.2.53 pi60 192.168.2.60 pi61 192.168.2.61 pi62 192.168.2.62 pi63 192.168.2.63 pi70 192.168.2.70 pi71 192.168.2.71 pi72 192.168.2.72 pi73 192.168.2.73 pi80 192.168.2.80 pi81 192.168.2.81 pi82 192.168.2.82 pi83 192.168.2.83 pi90 192.168.2.90 pi91 192.168.2.91 pi92 192.168.2.92 pi93 192.168.2.93 pi100 192.168.2.100 pi101 192.168.2.101 pi102 192.168.2.102 pi103 192.168.2.103 pi111 192.168.2.111 pi112 192.168.2.112 pi113 192.168.2.113 pi121 192.168.2.121 pi122 192.168.2.122 pi123 192.168.2.123 pi131 192.168.2.131 pi132 192.168.2.132 pi133 192.168.2.133 pi141 192.168.2.141 pi142 192.168.2.142 pi143 192.168.2.143 pi151 192.168.2.151 pi152 192.168.2.152 pi153 192.168.2.153 pi161 192.168.2.161 pi162 192.168.2.162 pi163 192.168.2.163 pi171 192.168.2.171 pi172 192.168.2.172 pi173 192.168.2.173 pi181 192.168.2.181 pi182 192.168.2.182 pi183 192.168.2.183 pi191 192.168.2.191 pi192 192.168.2.192 pi193 192.168.2.193 pi200 192.168.2.200 pi201 192.168.2.201 pi202 192.168.2.202 pi203 192.168.2.203 pi204 192.168.2.204 pi205 192.168.2.205 pi206 192.168.2.206 pi207 192.168.2.207 pi208 192.168.2.208 pi209 192.168.2.209 pi210 192.168.2.210 pi211 192.168.2.211 pi212 192.168.2.212 pi213 192.168.2.213 pi214 192.168.2.214 pi215 192.168.2.215 pi216 192.168.2.216 pi217 192.168.2.217 pi218 192.168.2.218 pi219 192.168.2.219 pi220 192.168.2.220 pi221 192.168.2.221 pi222 192.168.2.222 pi223 192.168.2.223 pi224 192.168.2.224 pi225 192.168.2.225 pi226 192.168.2.226 pi227 192.168.2.227 pi228 192.168.2.228 pi229 192.168.2.229 pi230 192.168.2.230 pi231 192.168.2.231 pi232 192.168.2.232 pi233 192.168.2.233 pi234 192.168.2.234 pi235 192.168.2.235 pi236 192.168.2.236 pi237 192.168.2.237 pi238 192.168.2.238 pi239 192.168.2.239 pi240 192.168.2.240 pi241 192.168.2.241 pi242 192.168.2.242 pi243 192.168.2.243 pi244 192.168.2.244 pi245 192.168.2.245 pi246 192.168.2.246 pi247 192.168.2.247 pi248 192.168.2.248 pi249 192.168.2.249 pi250 192.168.2.250 pi251 192.168.2.251 pi252 192.168.2.252 pi253 192.168.2.253 pi254 192.168.2.254 } # Spread will feel free to use broadcast messages within a sub-network. # if you do not want this to happen, you should specify your machines on # different logical sub-networks. # IP-Multicast addresses can also be used as the multicast address for # the logical sub-network as in this example. If IP-multicast is supported # by the operating system, then the messages will only be received # by those machines who are in the group and not by all others in the same # sub-network as happens with broadcast addresses #Spread_Segment 225.0.1.1:3333 { # mcast1 1.2.3.4 # mcast2 1.2.3.6 #} # Multi-homed host setup # # If you run Spread on hosts with multiple interfaces you may want to # control which interfaces Spread uses for client connections and for # the daemon-to-daemon (and monitor control) messages. This can be done # by adding an extra stanza to each configured machine. # #Sample: # #Spread_Segment 225.0.1.1 { # multihomed1 1.2.3.4 { # D 192.168.0.4 # C 1.2.3.4 } # multihomed2 1.2.3.5 { # D 192.168.0.5 # C 1.2.3.5 # C 127.0.0.1 } # multihomed3 1.2.3.6 { # 192.168.0.6 # 1.2.3.6 } #} # This configuration sets up three multihomed machines into a Spread segment. # The first host has a 'main' IP address of 1.2.3.4 and listens for client # connections only on that interface. All daemon-to-daemon UDP multicasts and # the tokens and any monitor messages must use the 192.168.0.4 interface. # The second host multihomed2 has a similar setup, except it also listens for # client connections on the localhost interface as well as the 1.2.3.5 interface. # If you make any use of the extra interface stanza ( a { } block ) then you must # explicitly configure ALL interfaces you want as Spread removes all defaults when # you use the explicit notation. # The third multihomed3 host uses a shorthand form of omitting the D or C option and # just listening for all types of traffic and events on both the 192.168.0 and 1.2.3 # networks. If no letter is listed before the interface address then ALL types of # events are handled on that interface. # AcceleratedRing indicates which protocol to use. If false, then the regular Spread # ring protocol is used. If true, then the accelerated ring protocol is used. If left # unspecified, then Spread tries to guess if you are running on a WAN or LAN and uses # the more appropriate protocol: the regular protocol on WANs and the accelerated protocol # on LANs. Spread uses the heuristic that if all your daemon addresses are within the # same /16 network then it assumes it is a LAN, otherwise it is a WAN. This same heurstic # is used to pick the default timeouts (WAN or LAN) for the protocols too. # # Note that daemons can only talk with daemons that run the same protocol - they # will refuse to talk with daemons that run the other protocol. The accelerated ring # protocol uses a flow control algorithm similar to the normal protocol, with the # exception that the token is sent before up to AcceleratedWindow packets of the # PersonalWindow (the token still reflects these packets). In general, the closer # AcceleratedWindow is to PersonalWindow the more acceleration can be expected -- up to # a point. In our testing on 1Gb/s and 10Gb/s networks, raising AcceleratedWindow # above 20 had significant negative side effects and actually lowered throughput. # #AcceleratedRing = true # Flow Control Parameters # #Window = 160 #PersonalWindow = 20 #AcceleratedWindow = 15 # Membership Timeouts (in terms of milliseconds) # # If you specify any of these timeouts then you must specify all of them # (and ensure that they make sense collectively) # #TokenTimeout = 1250 #HurryTimeout = 500 #AliveTimeout = 250 #JoinTimeout = 250 #RepTimeout = 625 #SegTimeout = 500 #GatherTimeout = 1250 #FormTimeout = 1250 #LookupTimeout = 30000