fair.conf(5)

πŸ’– fair.conf(5) πŸ’–

okay so bestie, welcome to fair.conf(5) β€” the config file for the carrousel and transponder daemons. this is a file formats manual page, and it's literally the whole personality of how your load balancer behaves. grab a strawberry πŸ“ and let's get into it.


✨ NAME ✨

fair.conf β€” configuration file for the carrousel and transponder daemons


🌸 DESCRIPTION 🌸

so basically this is a list of variables you can put in fair.conf, and each one comes with a type and a default value. the format is like:

Name (type, default)

and then a little description of what it does. let's go one by one, no skips, periodt.

  • Debug (bool, false) β€” runs the program in debug mode. in this mode it will not detach, it will print status updates very frequently, and it will print extra diagnostic messages to stderr. it's giving "verbose bestie". 🫢
  • DropPrivs (bool, true) β€” the program will switch to a different uid/gid after it's obtained its root-only resources. see also the UserID and GroupID variables. ✨
  • WorkerService (string, smtp) * β€” this is the service on which the worker nodes offer the service that's being balanced. typically it's the service of another daemon, e.g. Postfix. the transponder daemon also uses this as the datagram source service for its status updates.
  • BalancerService (string, smtp) * β€” the stream service on which the carrousel daemon listens for incoming connections. those connections get put through to one of the worker nodes.
  • TransponderService (string, rlp) * β€” the carrousel daemon listens on this service for status update datagrams from the transponders. see also the AllowUDP variable. πŸ‘€
  • PingInterval (time, 0.1 seconds) β€” how often the transponder sends an update to each carrousel. so like, if two carrousels are configured and the interval is 0.1 seconds, that transponder sends 20 packets every second. busy little bee fr fr. 🐝
  • PingTimeout (time, 0.5 seconds) β€” after this period has elapsed without receiving any status update packets from the transponder, this host is considered dead. πŸ’€
  • IdleTimeout (time, 600.0 seconds) β€” the connection is terminated if neither party has sent something for this many seconds. for SMTP connections this would have to be at least 600.0 seconds, see RFC 2821 section 4.5.3.2. it's the "if u don't text back i'm leaving" of config options 😭
  • ConnectTimeout (time, 1.0 seconds) β€” when connecting to a worker node, abort after this many seconds have elapsed and no connection is established. no waiting around, bestie.
  • ConnectAttempts (integer, 3) β€” when putting through a connection fails, the carrousel will attempt to contact other worker nodes. it will give up after this many tries. three strikes and it's out, iconic behaviour. πŸ’…
  • BenchPeriod (time, 5.0 seconds) β€” if a connection to a worker node fails, it gets excluded from new connections for this many seconds. timeout corner. πŸ™ˆ
  • TrailPeriod (time, 60.0 seconds) β€” when a connection is finished, pretend it lasted this many seconds more for load calculation purposes. delulu is the solulu, mathematically speaking. ✨
  • Hysteresis (integer, 0) β€” add an advantage to the last used worker node so that it gets selected in preference of others. loyalty bonus πŸŽ€
  • MaxCapacity (integer, 100) β€” when sending update packets, the capacity of the worker node measured in terms of concurrent connections. this number is adjusted for the current load average before sending it to the carrousel nodes.
  • MaxBurst (integer, 65536) β€” ringbuffer size for load balancer nodes.
  • MinBurst (integer, 1450) β€” if fewer than this many bytes are available in the ring buffer, do not read anything but try to free up space first. tidying up before the party, love that for it. 🧹
  • LocalTCP (bool, yes) β€” only allow connections over the loopback interface. if this option is set to "no", connections will be accepted on any interface and on any address.
  • AllowUDP (extended regexp, ^) β€” only datagram status packets that match this extended regular expression are accepted. all other datagram packets are logged and silently dropped. once UDP packets are accepted from a certain source, they are never matched against this regexp again.
⚠️ real talk bestie, that last bit about AllowUDP is important β€” the regexp check happens once per source, not every time. so set it right the first time, iykyk.

🌈 SEE ALSO 🌈


okay that's the whole page, you ate that. πŸ’… this manual page came from Debian GNU/Linux and it's dated 2005-01-27 β€” vintage but still slaying, no cap. mwah, go configure something iconic πŸ’–πŸ¦‹πŸ‘‘