/ Zope / Apsis / Pound Mailing List / Archive / 2006 / 2006-07 / "Pounding" a cluster with multiple rails apps

[ << ] [ >> ]

[ Re: [Pound Mailing List] Pound RPMs for ... ] [ Legal crap: GPL+OpenSSL / Adam Borowski ... ]

"Pounding" a cluster with multiple rails apps
"alex black" <enigma(at)turingstudio.com>
2006-07-02 19:47:51 [ FULL ]
hi all,

We're seriously considering the deployment of pound as the front end of a
medium sized cluster to serve a set of applications, where each application
stack will look like this:

(the wilds)
    |
    |
front end pound box  -- (heartbeat) -- hot spare front end pound box
    |
    |
192.168.1.*
(where 1 is the subnet for that app)

(192.168.1.* is a set of appservers running mongrel for rails apps on ports
8000-8300)

I'd like to see the pound syntax expanded to support wildcard or range
definitions for IPs and ports, so we don't have to futz with the config file
every time we add or remove a node from the cluster.

We would like to be able to replace syntax like this:

ListenHTTP
  Address 0.0.0.0
  Port    80
  Service
    BackEnd
      Address 192.168.1.1
      Port    8000
    End
  End
  Service
    BackEnd
      Address 192.168.1.1
      Port    8001
    End
  End
  Service
    BackEnd
      Address 192.168.1.1
      Port    8002
    End
  End
  Service
    BackEnd
      Address 192.168.1.2
      Port    8000
    End
  End
  Service
    BackEnd
      Address 192.168.1.2
      Port    8001
    End
  End
  Service
    BackEnd
      Address 192.168.1.2
      Port    8002
    End
  End
(etc for a very long time...)
End

With syntax like this:

ListenHTTP
  Address 0.0.0.0
  Port    80
  Service
    BackEnd
      AddressRange 192.168.1.1-192.168.1.50
      -or-
      AddressRange 192.168.1.*
     -or-
      AddressRange 192.168.1.1-50
      PortRange    8000-8006
    End
  End
End

Which does imply that pound would need to autodiscover ports that respond. If
it did, this would ease the burden of cluster management considerably, as we
could add and remove notes at will without writing a set of tools to generate
the pound config based on any changes we make to the physical infrastructure.

On that subject, does pound perform tests to verify if a BackEnd is functional
and responding as expected, and drop that BackEnd if the tests fail? Does pound
support a content verification test? (would be great to be able to provide a
little page which shows "OK" or "ERROR" based on the result of a set of tests
done by a script, and point pound at it with a simple regex). The content
checks are something I am used to from "commercial" load balancers. I have
never seen a load balancer which will autodiscover nodes, and it would be
really cool.

thanks!

_alex

MailBoxer