Haproxy 是一款开源的高性能的代理转发软件,用途最多的还是将它用着前端的负载均衡器,
他可以提供第4层和第7层的负载,用的最多还是第7层(mode http),
其工作性质类似nginx 做负载均衡器,但是haproxy 精妙的ACL NGINX略感乏力,
不过nginx可以借助其他模块(lua)也可以达到类似的效果,haproxy和nginx都可以修改HTTP头,
都可以做到seesion sticky,不过nginx需要额外的模块支持,关于性能方面,
haproxy 官方说同等条件下lvs>haproxy>nginx 原因lvs的转发直接在内核空间完成,
haproxy 和nginx 还需要使用用户空间的资源,而相对于nginx haproxy调用的资源比较少而已
1.安装haproxy
yum -y install haproxy
2.修改配置文件(修改之前先备份)
vim /etc/haproxy/haproxy.cfg
#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
# to have these messages end up in /var/log/haproxy.log you will
# need to:
#
# 1) configure syslog to accept network log events. This is done
# by adding the '-r' option to the SYSLOGD_OPTIONS in
# /etc/sysconfig/syslog
#
# 2) configure local2 events to go to the /var/log/haproxy.log
# file. A line like the following can be added to
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
listen mysql
bind *:8888
mode tcp #在客户端和服务端之间创建全双工连
balance roundrobin #负载均衡采用加权的roundrobin算法
option tcpka
server node01 127.0.0.1:3306 inter 1s rise 2 fall 1 check
3.启动服务
/etc/init.d/haproxy restart
4.测试
mysql -h 192.168.1.156 -uroot -p -P8888
可以登录数据库说明配置成功
备注:修改配置文件记得重启服务
global段
global段用于配置进程级的参数。官网文档基于参数的功能,将global配置参数分为3组:
进程管理和安全
性能调优
调试
具体内容可以参考文档详细介绍。
defaults段
defaults段主要是代理配置的默认配置段,设置默认参数,这些默认的配置可以在后面配置的其他段中使用。如果其他段中想修改默认的配置参数,只需要覆盖defaults段中的出现配置项内容。
关于defaults段可以配置的参数,可以参考官网文档的详细介绍。
frontend段
frontend段主要配置前端监听的Socket相关的属性,也就是接收请求链接的虚拟节点。这里除了配置这些静态的属性,还可以根据一定的规则,将请求重定向到配置的backend上,backend可能配置的是一个服务器,也可能是一组服务器(集群)。
backend段
backend段主要是配置的实际服务器的信息,通过frontend配置的重定向请求,转发到backend配置的服务器上。
listen段
listen段是将frontend和backend这两段整合在一起,直接将请求从代理转发到实际的后端服务器上。