HAproxy实现反向代理和负载均衡

反向代理服务器功能:web缓存(加速)、反向代理、内容路由(根据流量及内容类型等将请求转发至特定服务器)、转码器

缓存:减少冗余内容传输;节省带宽、缓解网络瓶颈;降低了对原始服务器的请求压力;降低了传输延迟,公共缓存每个人都可以使用,带有敏感数据的私有缓存则只对限定某类或某个人使用

nginx可实现缓存功能,haproxy不能实现缓存功能,这里只说明其反向代理功能和负载均衡功能

yum install haproxy
主配置文件haproxy.cfg
开启日志功能:
编辑/etc/rsyslog.conf文件
$ModLoad imudp
$UDPServerRun 514  #开启udp514端口
local2.*                                                /var/log/haproxy.log
编辑/etc/haproxy/haproxy.cfg文件:
log        127.0.0.1 local2
 
配置负载均衡后端主机:
global
    log        127.0.0.1 local2
 
    chroot      /var/lib/haproxy
    pidfile    /var/run/haproxy.pid
    maxconn    4000  定义面向客户端的总的最大连接数(面向客户端那一面)
    user        haproxy
    group      haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
 
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80  #第一种方式
#        bind *:80    #第二种方式
#        bind *:8080    #只能用于frontend, listen;
#        maxconn  也可以定义在这里或listen后,定义了单个实例的最大并发连接数,如果在global段定义就是所有实例总的
  default_backend            websrvs
#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend websrvs
    balance    roundrobin
    server  web1 192.168.20.7:80 check #定义的名字web1会被加到请求首部发到后端,当后端有虚拟主机时很有用
    server  web2 192.168.20.8:80 check

几种调度算法:

balance: 指明调度算法;
    动态:权重可动态调整
    静态:调整权重不会实时生效
        roundrobin: 轮询,动态算法,每个后端主机最多支持4128个连接;
        static-rr: 轮询,静态算法,每个后端主机支持的数量无上限;
        leastconn: 根据后端主机的负载数量进行调度;仅适用长连接的会话;动态;
hash-type:
    map-based:取模法;静态;
    consistent:一致性哈希法;动态;

下面的四种调度算法都基于上面的两种hash-type

source:
        uri:对uri的左半部分(?标记之前的部分)或者整个uri做hash,除以后端服务器总权重后绑定到后端服务器
        url_param: 根据url中的指定的参数的值进行调度;把值做hash计算,并除以总权重;
        hdr(<name>)    :根据请求报文中指定的header(如use_agent, referer, hostname)进行调度;把指定的header的值做hash计算得值除以总权重;
示例:

backend websrvs
    balance    hdr(User-Agent)
    hash-type consistent
    server  web1 192.168.20.7:80 check
    server  web2 192.168.20.8:80 check

测试:

HAproxy实现反向代理和负载均衡

mode: 健康状态检测时基于何种协议
    HAProxy的工作模式;默认为tcp;有三种:tcp, http, health

只有客户端和前端,后端都是用http通信才可以使用http模式

在front段也可以指定log:

frontend  main *:80
    log global
    log        127.0.0.2 local3

使用use_backend 和acl定义后段

use_backend    dynamic  if  url_dyn
use_backend    static  if  url_css url_img extension_img

server段后可加的参数:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f48c630846993e9fdb02afb51db88e14.html