Properly implemented, load balancing can be totally transparent; you may need to rely on other means (such as hunting though job ads for the company) to try guess at likely products.
However there are a few things you can check that at least imply the existance of a balancer:
- The HTTP headers may reveal the presense of a proxy server or other balancer.
- Check here for different timestamps as well, implying slightly different clocks.
- Check the order of the headers as well.
- Observe the system under load
- Generate a ton of traffic; see if your requests start going somewhere else, or if the headers change, etc.
- General reconnaisance
- The DNS response may reveal multiple IP addresses, implying balancing.
- They may give it away in the hostname (cdn.xyz.com)
- You may be able to get some more info from netcraft.com that leads you in the right direction
The manual for halberd contains a good list of concepts that it uses (Date comparison; MIME header field names, values and their order; Generating high amounts of traffic; Using different URLs; Detecting server-side caches; Obtaining public IP addresses).
Using halberd or ldb is likely your best option in a practical situation - a lot of these tests are time consuming and finicky, so you likely want to automate all the busy work.