Hi,
On Mon, Jan 19, 2009 at 06:11:13PM -0800, Hsin, Chih-fan wrote:
Hi, I am new to HAProxy and have questions about the configuration and
performance.
I downloaded HAProxy 1.3.15.7 from
http://haproxy.1wt.eu/blocked::http://haproxy.1wt.eu/ to /home/user/Tool
Unpacked it by tar xopf name.tar.gz.tar
Run make TARGET=linux26
1) Apache HTTP testing
Servers webA (192.168.5.4) and webB (192.168.5.5) have Apache server
started.
Client (192.168.5.1) sends http requests to webA (192.168.5.4:80) and
webB (192.168.5.5:80), and can get valide http response (default Apache
response).
[client] - [webA],[webB]
Now, the HAProxy does not have Apache server and has IP address
192.168.5.3.
At HAProxy, run ./haproxy -f ./haproxy1.cfg. The haproxy1.cfg is below
[client] - [HAProxy] - [webA],[webB].
Client sends http request to HAProxy via IE web browing to
http://192.168.5.3. However, the client cannot get web response.
By this, do you mean that no response ever comes back, or that you get
an error ?
Client sends http request to HAProxy via multiple IE web browsing to
http://192.168.5.3:80. Then it works.
Are you sure that your apache machines don't block access from haproxy ?
Also, do you have any form of virtual hosting on those machines, which
would refuse requests with a Host: field with a wrong IP address in it ?
haproxy1.cfg file
listen webfarm 192.168.5.3:80- How do I decide the correct
port number to make http://192.168.5.3 work?
This is the correct form.
mode http
balance roundrobin
cookie SERVERID insert indirect
stats enable
server webA 192.168.5.4:80 cookie A check
server webB 192.168.5.5:80 cookie B check
I see that you have not configured timeouts. This is bad (though it
should not cause you the problem you're seeing). Please add the
following lines to the section above :
timeout client 30s
timeout server 30s
timeout connect 5s
Also, you should log, you would see in the logs what is wrong.
For this, please add the following line :
log 127.0.0.1 local0
Then ensure that your syslogd listens to the UDP socket (syslogd -r),
and check the log files (you will see one line added when you start
haproxy, then one line per request).
2) TCP testing (using Iperf)
Servers webA (192.168.5.4) and webB (192,168.5.5) run Iperf TCP sink to
listen to port 5001
Client runs 2 Iperf TCP connections and send traffic to 192.168.5.3:80
At HAProxy, run ./haproxy -f ./haproxy2.cfg
haproxy2.cfg
listen webfarm 192.168.5.3:80
mode tcp
balance roundrobin
stats enable
server webA 192.168.5.4:5001
server webB 192.168.5.5:5001
I can achieve 36Mbps each under the following scenario.
[client] - 36Mbps - [webA]
|-36Mbps - [webB]
36 Mbps ??? You definitely have something wrong in your setup !
This is the bandwidth you could expect from a saturated 100 Mbps
HUB at maximal collision rate !!! Please check that all your
connections are made to a switch and not a hub, and that all
your hosts have negociated full duplex (with ethtool).
However, when I use HAProxy, I can only achieve 18Mbps each. The
utilization of HAProxy machine is low.
[client] - [HAProxy] - 18Mbps - [webA]
| 18Mbps - [webB]
Is this normal? Is there any way to improve it?
No it's not normal, but expected from the bad numbers above.
If you are using a hub which is saturated, then making the
traffic pass twice over it will half the per-host bandwidth.
Right now, it does not make sense to use a hub for network
testing, not even a 100 Mbps switch. Gigabit switches are
very cheap, you can find a 5-port gig switch for less than
$50, it could save you a lot of time spent troubleshooting
connectivity issues.
Regards,
Willy