HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。
HAProxy特别适用于那些负载特大的web站点, 这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
其支持从4层至7层的网络交换,即覆盖所有的TCP协议。就是说,Haproxy 甚至还支持 Mysql 的均衡负载。。
如果说在功能上,能以proxy反向代理方式实现 WEB均衡负载,这样的产品有很多。包括 Nginx,ApacheProxy,lighttpd,Cheroke 等。
但要明确一点的,Haproxy 并不是 Http 服务器。以上提到所有带反向代理均衡负载的产品,都清一色是 WEB 服务器。简单说,就是他们能自个儿提供静态(html,jpg,gif..)或动态(php,cgi..)文件的传输以及处理。而Haproxy 仅仅,而且专门是一款的用于均衡负载的应用代理。其自身并不能提供http服务。
但其配置简单,拥有非常不错的服务器健康检查功能还有专门的系统状态监控页面,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。自1.3版本开始还引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend。
另外, 版本1.3 是处于活跃开发阶段的版本, 它支持如下新特性:
l 内容交换 : 可以根据请求(request)的任何一部分 来选择一组服务器, 比如请求的 URI , Host头(header) , cookie , 以及其他任何东西. 当然,对那些静态分离的站点来说,对此特性还有更多的需求。
l 全透明代理 : 可以用 客户端IP地址 或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy 补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
l 基于树的更快的调度器 : 1.2.16以上的版本要求所有的超时都设成同样的值以支持数以万计的全速连接. 这个特性已经移植到1.2.17.
l 内核TCP拼接 : 避免了内核到用户然后用户到内核端的数据拷贝, 提高了吞吐量同时又降低了CPU使用率 . Haproxy 1.3支持Linux L7SW 以满足在商用硬件上数Gbps 的吞吐的需求。
l 连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点。
l 细微的头部处理 : 使得编写基于header的规则更为简单,同时可以处理URI的某部分。
l 快而可靠的头部处理 : 使用完全RFC2616 兼容的完整性检查对一般的请求全部进行分析和索引仅仅需要不到2ms 的时间。
l 模块化设计 : 允许更多人加入进此项目,调试也非常简单. poller已经分离, 已经使得它们的开发简单了很多. HTTP已经从TCP分离出来了,这样增加新的七层特性变得非常简单. 其他子系统也会很快实现模块化
l 投机I/O 处理 : 在一个套接字就绪前就尝试从它读取数据。poller仅推测哪个可能就绪哪个没有,尝试猜测,并且如果成功,一些开销很大的系统调用就可以省去了。如果失败,就会调用这些系统调用。已知的使用Linux epoll()已经净提升起码10%了。
l ACLs : 使用任意规则的任意组合作为某动作的执行条件。
l TCP 协议检查 : 结合ACL来对请求的任意部分进行检查,然后再进行转发。这就可以执行协议验证而不是盲目的进行转发。比如说允许SSL但拒绝SSH。
l 更多的负载均衡算法 : 现在,动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现。其他算法比如Weighted Measured Response Time也很快会实现。
安装配置:
下载软件
Wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.15.tar.gz
1 。解压安装
tar -xzf haproxy-1.4.15.tar.gz
cd haproxy-1.4.15
make TARGET=linux26 PREFIX=/usr/local/haprpxy
make install PREFIX=/usr/local/haproxy
如果有不明的地方可以查看readme 如:
cat README
2.编辑haprox.cfg文件
拷贝一份:
cp /opt/haproxy/haproxy-1.4.15/examples/haproxy.cfg /usr/local/haproxy/
编辑配置文件
[root@node1 examples]# cat /usr/local/haproxy/haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
chroot /usr/share/haproxy
uid 99
gid 99
daemon
#debug
#quiet
# nbproc 2
#通过nbproc多设置几个haproxy并发进程,这样每个进程的task_queue相对就会短很多,性能自然就能提高不少
defaults
log global
# log 127.0.0.1 local3
mode http
option httplog
option dontlognull
option forwardfor
retries 3
option redispatch
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen feiyang 0.0.0.0:80
stats uri /haproxy-stats #查看haproxy状态
stats auth feiyang:feiyang #登陆用户名密码
mode http
cookie SERVERID insert indirect
balance roundrobin #轮询
stats realm Haproxy\ statistics
option httpclose
# option httpchk HEAD /check.txt HTTP/1.1
option httpchk GET /index.html #健康检测
server app1_2 192.168.1.215:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server app1_1 192.168.1.220:80 cookie app1inst1 check inter 2000 rise 2 fall 5
errorloc 502 http://192.168.1.222/error.html
# errorfile 503 /etc/haproxy/errors/503.http
补充: 在访问权重顺序我的我的测试结果是:排在前面优先选择。
即使你设置了weigth 参数。
启动haproxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
[ALERT] 102/003701 (10974) : [/usr/local/haproxy/sbin/haproxy.main()] Cannot chroot
(/usr/share/haproxy).
解决:
[root@node1 haproxy]# mkdir /usr/share/haproxy
添加日志:
# touch /var/log/haproxy.log
# chown haproxy:haproxy /var/log/haproxy.log
# chmod u+x /var/log/haproxy.log
# vim /etc/syslog.conf
在最下边增加
local3.* /var/log/haproxy.log
local0.* /var/log/haproxy.log
重启核心日志服务使配置起效
# service syslog restart
当然,为了方便系统在开机时加载,还可以创建启动脚本:(借用了别人的,自己不写了)
# vim /etc/rc.d/init.d/haproxy 内容如下:
#! /bin/sh
set -e
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/haproxy/sbin
PROGDIR=/usr/local/haproxy
PROGNAME=haproxy
DAEMON=$PROGDIR/sbin/$PROGNAME
CONFIG=$PROGDIR/conf/$PROGNAME.conf
PIDFILE=$PROGDIR/run/$PROGNAME.pid
DESC="HAProxy daemon"
SCRIPTNAME=/etc/init.d/$PROGNAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
start()
{
echo -n "Starting $DESC: $PROGNAME"
$DAEMON -f $CONFIG
echo "."
}
stop()
{
echo -n "Stopping $DESC: $PROGNAME"
haproxy_pid=cat $PIDFILE
kill $haproxy_pid
echo "."
}
restart()
{
echo -n "Restarting $DESC: $PROGNAME"
$DAEMON -f $CONFIG -p $PIDFILE -sf $(cat $PIDFILE)
echo "."
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
保存后赐予可执行权限
# chmod +x /etc/rc.d/init.d/haproxy
就可以使用 service haproxy start|stop|restart 来控制服务的启动停止跟重启。
并通过以下命令加载到开机服务启动列表
# chkconfig --add haproxy
查看状态
http://192.168.1.219/haproxy-stats
用户名:feiyang
密码:feiyang
这时你就看到haproxy的状态了。
我自己的 配置文件vi haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
#log loghost local0 info
maxconn 4096
#chroot /usr/share/haproxy
chroot /home/admin/haproxy
uid 99
gid 99
daemon
#debug
#quiet
nbproc 1
defaults
log global
mode http
option httplog
option dontlognull
option forwardfor
retries 3
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen feiyang 0.0.0.0:80
# bind 0.0.0.0:80
stats uri /haproxy-stats
stats auth feiyang:feiyang
mode http
cookie SERVERID rewrite
balance roundrobin
stats realm Haproxy\ statistics
option httpclose
server app1_1 192.168.0.161:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server app1_2 192.168.0.115:80 cookie app1inst2 check inter 2000 rise 2 fall 5
# server app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2 fall 5
# server app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2 fall 5
http://blog.chinaunix.net/space.php?uid=21868571&do=blog&id=224212
http://blog.csdn.net/maijian/article/details/6082283
相关推荐
安装haproxy负载均衡MySQL,截图最全,mysql5.7版本。
如何配置haproxy负载均衡器,命令,文档,操作, !
HAPROXY负载均衡反向代理最佳实践
Nginx、LVS及HAProxy负载均衡软件的优缺点详解.docx
mariadb+haproxy负载均衡集群搭建.docx
keepalived+haproxy负载均衡配置 1、 操作系统:RedHat linux6.5 64bit 2、 keepalive: keepalived-1.2.19.tar.gz 地址:http://www.keepalived.org/download.html 3、 Haproxy: haproxy-1.5.8.tar.gz 地址(不能...
HAproxy负载均衡配置教程.docx
haproxy负载均衡配置文档.docx
HAProxy负载均衡解决方案 v2.9.0.zip
HAProxy负载均衡解决方案及应用.pptx
haproxy (container image):构建自HAProxy负载均衡器的源容器映像
管理系统系列--主从HAProxy负载均衡任务管理系统
为您提供HAProxy负载均衡解决方案下载,HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点, 这些站点通常又...
这是一个PPT,主要讲解在liunx服务器搭建一下haproxy应用实现负载均衡功能。
使用 haproxy,实现在 http request 的负载均衡,将对负载均衡器的请 求分发到其所对应的 web 服务器。
用haproxy实现RDP会话负载均衡 这篇文章主要针对 thinstation 方案来做测试。
准备4台Linux服务器,两台做Web服务器,1台安装HAProxy,1台做客户端。实现如下功能: 客户端访问HAProxy,HAProxy分发请求到后端Real Server; 开启HAProxy监控页面,及时查看调度器状态; 设置HAProxy为开机启动;
主要介绍了linux服务器之LVS、Nginx和HAProxy负载均衡器对比,需要的朋友可以参考下
Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件,目前只支持InnoDB引擎。 主要功能: • 同步复制 • 真正的multi-master,即所有节点可以同时读写数据库 • 自动的节点成员控制,失效节点自动被...
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。