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