logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Perlbal::FAQ - Frequently Asked Questions about Perlbal

Contents

Name

       Perlbal::FAQ - Frequently Asked Questions about Perlbal

   VERSION
       Perlbal 1.78.

   DESCRIPTION
       This document aims at listing several Frequently Asked Questions regarding Perlbal.

   ConfiguringPerlbalIsthereasample"perlbal.*"Icanuseformy"init.d"?

       Yes, you can find one under "debian/perlbal.init". It implements "start", "stop" and
       "restart/force-reload". Make sure you adjust it to your particular taste and/or needs.

       Isthereawaytomakeperlbalre-readtheconfigfilewithoutshutingitdown?

       No, there is not. But typically, if you're making changes, you can just make them on the management
       console, which doesn't require any restart whatsoever.

       Still, restarting is probably easy. The trick to it is to simulate a graceful restart.

       HowcanIimplementagracefulrestart?

       Here's a sample script that will allow you to perform a graceful restart:

           $ cat restart-perlbal.sh
           echo "shutdown graceful" | nc localhost 60000
           /usr/local/bin/perlbal --conf=/etc/perlbal.conf

       The idea is that you tell the old Perlbal to do a graceful shutdown; that immediately closes all of the
       listening sockets, so new connections are not accepted. As soon as that's done (which is instant) you can
       start up a new Perlbal.

       This gives you a minimum of downtime that can be measured on the order of milliseconds (the time it takes
       for the new Perlbal to start up).

       Remember that you need to have a "management" service listening on port 60000 for this example to work.
       See Perlbal::Manual::Management.

   LoadBalancingWhatbalancingalgorithmdoesPerlbaluse?

       Currently, Perlbal supports only one balancing method: "random".

           SET pool balance_method = 'random'

       With this mode, Perlbal selects one of the nodes within the pool randomly for each request received. It
       prefers reusing existing idle backend connections if backend_persist is enabled, which is faster than
       waiting for a new connection to open each time.

   PluginsCanIinfluencetheorderpluginsareused?

       Yes. When you set the plugins for your service they get to register their hooks in order.

           SET plugins = AccessControl HighPri

       These hooks are pushed into an array, which means that they preserve the order of the plugins.

   HTTP,SSLDoesperlbalsupportHTTP1.1?

       Perlbal for the most part only speaks HTTP/1.0 both to clients and to backend webservers. It happily
       takes requests advertising HTTP/1.1 and downgrading them to HTTP/1.0 when speaking to backend serves.

       It knows all about persistent connections (in both 1.0 and 1.1) and will reply with HTTP/1.0 Connection:
       keep-alive the request was only implicitly keep-alive with HTTP/1.1.  etc.

       Perlbal is now also starting to speak more of 1.1. For instance, Perlbal does support receiving transfer-
       encoding "chunked" requests from clients (a feature of HTTP/1.1), will send a "100 Continue" in response
       to "Expect: 100-continue", and will parse the chunked requests, writing the request-of-unknown-length to
       disk (only if "buffered_uploads" is enabled), and then will send an HTTP/1.0 request to the backends,
       with the actual "Content-Length" (now known) filled in.

       When more of 1.1 is supported, it will become an option, and later become the default. However, after
       several years of usage, there just hasn't been that much of a reason. The chunked requests (common from
       mobile phones uploading large images) has been the most annoying shortcoming but now that it's solved,
       it's questionable whether or not more of HTTP/1.1 will be supported.

       DoesperlbalsupportSSL?

       Yes. To use SSL mode you'll need IO::Socket::SSL "v0.98+" installed.

       You can do SSL either on "web_server", "reverse_proxy" or "selector" modes, but not on a vhost-based
       "selector" service, because SSL and vhosts aren't compatible.

       See the configuration file ssl.conf under conf/ for an example.

   SEEALSO
       Perlbal::Manual.

perl v5.34.0                                       2022-06-28                                  Perlbal::FAQ(3pm)

See Also