- 介绍
- HAProxy是支持虚拟主机的,通过frontend指令来实现
- 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
- 支持url检测后端的服务器出问题的检测会有很好的帮助。
- 它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
- HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS,所以我向大家推荐LVS+Keepalived。
- 能对请求的url和header中的信息做匹配,有比lvs有更好的7层实现
- HAProxy的负载均衡算法现在也越来越多了,具体有如下8种:
① roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
②static-rr,表示根据权重,建议关注;
③leastconn,表示最少连接者先处理,建议关注;
④source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法
⑤ri,表示根据请求的URI;
⑥rl_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
⑦hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
⑧rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。
- 安装
1 下载链接
2 tar -zxvf haproxy-version.tar.gz
3 cd haproxy-version
4 uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
5 make TARGET=linux31
6 make install PREFIX=/data/haproxy
7 cd /data/haproxy
8 mkdir conf
9 cd conf
9 touch haproxy.conf
10 vim haproxy.conf - 配置haproxy.conf
global
# 定义每个haproxy进程的最大连接数
maxconn 40000
daemon
user haproxy
group haproxy
# 定义haproxy的pid,定义haproxy pid文件存放位置
pidfile /data/haproxy/h.pid
log 127.0.0.1:514 local2
defaults
log global
mode http
option httplog
option dontlognull
no option log-health-checks
no option dontlog-normal
option log-separate-errors
# add X-Forwarded-For: IP
option forwardfor
balance roundrobin
hash-type consistent
timeout connect 10000
timeout queue 1000
timeout tarpit 12000
timeout client 120000
timeout server 120000
timeout http-request 120000
timeout http-keep-alive 120000
timeout check 3000
grace 3000
frontend h_9999
maxconn 60000
bind 0.0.0.0:9999
use_backend weixin_server
# 这里定义你要代理的服务器
backend weixin_server
balance roundrobin
log global
cookie SERVERID
server db_test_155_8888 10.1.3.155:8888 check inter 2000 fall 3
11 添加haproxy 用户和用户组
groupadd haproxy #添加haproxy组
useradd -g haproxy haproxy -s /bin/false #创建nginx运行账户haproxy并加入到haproxy组,不允许haproxy用户直接登录系统
12 启动
/data/haproxy/sbin/haproxy -f /data/haproxy/conf/haproxy.cfg
- 给haproxy 添加日志:
haproxy的日志需要打开才能够查看,一般haproxy会将日志输出到系统日志中。haproxy 日志配置步骤如下:- 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.Doallow this access for now by executing:# grep rsyslogd /var/log/audit/audit.log | audit2allow -M mypol# semodule -i mypol.pp2.rsyslog - 默认情况下,需要在514端口监听UDP,
所以可以把/etc/rsyslog.conf如下的注释去掉
$ModLoad imudp
$UDPServerRun 514
- 重启 rsyslog
service rsyslog restart
service rsyslog status
- 配置Haproxy.conf代码
global
log 127.0.0.1 local0 info - 日志输出在/var/log/haproxy.log下
- vim /etc/rsyslog.conf