HAProxy, "The Reliable, High Performance TCP/HTTP Load Balancer"
使用HAProxy负载若干python websocket实例,安装完HAProxy后,默认情况下,HAProxy为了节省读写IO所消耗的性能,默认情况下没有日志输出,以下是我配置log的过程:
Fedora16 默认使用的是rsyslog管理log
可通过以下shell来检查:
#rpm -q sysklogd syslog-n rsyslog
package sysklogd is not installed
package syslog-n is not installed
rsyslog-5.8.7-1.fc16.i686
#rpm -ql rsyslog | grep conf$
/etc/rsyslog.conf
1.
vim /etc/rsyslog.conf
添加local0.* /var/log/haproxy.log
这里对路径如果修改为/home/xinz/haproxytest/log目录下,由于rsyslog默认情况下,没有访问home目录下的权限,可以参考:
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep rsyslogd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp
2.
rsyslog 默认情况下,需要在514端口监听UDP,所以可以把/etc/rsyslog.conf如下的注释去掉
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
3.重启 rsyslog
service rsyslog restart
service rsyslog status
4.在任意工作目录下,配置如下文件
Haproxy.conf代码
global
log127.0.0.1local0 info
maxconn10000
ulimit-n30000
defaults
log global
mode http
frontend pub-srv0.0.0.0:8080
maxconn10000
timeout client 40s
use_backend websocket if { hdr(Upgrade) -i WebSocket }
default_backend http
backend websocket
timeout connect 100s
timeout server 600s
server ws1 localhost:8084weight1maxconn5000check
server ws2 localhost:8085weight1maxconn5000check
backend http
timeout connect 40s
timeout server 30s
server www1 localhost:8084weight1maxconn5000check
server www2 localhost:8085weight1maxconn5000check