基于第三方应用的高并发HAproxy简介及基本配置

HAproxy是基于第三方应用实现的负载均衡技术,

基于TCP(第四层)和HTTP(第七层)应用的负载均衡软件:可以根据报文内容再配合负载均衡算法来选择

适用于并发量特别大且需要持久连接或四层和七层处理机制的web系统

make TARGET=linux26  PREFIX=/usr/local/haproxy

make install PREFIX=/usr/local/haproxy

cp examp/auth.cfg  /usr/local/haproxy/conf复制一份配置文件过去

global设定全局配置参数;defaults配置默认值;frontend设置接受用户请求的前段虚拟节点;backend设置集群后端的配置;

listen frontend和backend的结合体,两种方式任选一种

配置文件:

global

#       chroot /var/empty/

        uid nobody

        gid nobody

        log 127.0.0.1 local0 info 使用本地日志系统

        maxconn 8192  可接受的最大并发连接数,等同ulimit -n

        daemon 

        nbproc 1   启动时创建的进程数,小于CPU核心

        pidfile /usr/local/haproxy/logs/haproxy.pid 启动进程的用户必须可访问此文件

defaults

        mode http 分析报文.不与RFC格式兼容的请求都被废弃  tcp建立全双工连接,不检查七层报文 health已被废弃

        retries 3 失败重试次数,三次之后设置为不可用

        timeout connect         3s 连接到一台服务器最长等待时间,默认单位毫秒

#       timeout queue           11000

#       timeout tarpit          12000

        timeout client          20000 连接客户端发送数据最长等待时间

#       timeout http-request    40000

#       timeout http-keep-alive 5000

        timeout server          40000 服务器回应客户端数据发送的最长等待时间

        timeout check           7000 对后端服务器的检测超时时间

#       option  contstats

#       option  log-health-checks

frontend www

        bind *:80定义监听的套接字

        mode http

        option httplog 启用日志记录http请求

        option forwardfor  向后端服务器的请求添加X-Forwarded-For记录客户端IP

        option httpclose完成一次连接后主动关闭

        log global使用全局日志配置

        default_backend htmpool指定一组后端真实服务器

backend htmpool

        mode http

        option redispatch将客户的请求强制重定向到另外一台健康的服务器

        option abortonclose自动结束当前队列中处理时间较长的连接

        balance roundrobin

{roundrobin 轮叫 static-rr权重轮叫 source原地址hash

 leastconn适合长时间 uri uri_param hdr}

        cookie SERVERID想cookie插入

        option httpchk HEAD /index.html

        log global

        server s1 192.168.1.201:80 check inter 2000 cookie server1 weight 6 ;backup 192.168.1.100

        server s2 192.168.1.202:80 check inter 2000 cookie server2 weight 6 rise 2两次成功就加回 fall 3三次失败就设置不可用

listen admin_stats 设置一个监听界面

        bind 0.0.0.0:9188

        mode http

        log 127.0.0.1 local0 err

        stats refresh 30s

        stats uri /haproxy 

        stats realm welcome login\ Haproxy密码框上的提示信息

        stats auth admin:123123

        stats hide-version

        stats admin if TRUE支持手工禁用后端真实服务器


日志配置:

$Modload imudp 模块

$UDPServerRun 514 监听端口

local3.* /usr/local/haproxy/logs/haproxy.log

local0.* /usr/local/haproxy/logs/haproxy.log

SYSLOGD_OPTIONS='-c 2 -r接收远程日志 -m 0"


ACL:放在front内,根据backend分发

acl  名称  方法  -i不区分大小写    匹配的路径或者正则表达式

acl方法:hdr_reg(host)正则匹配  ,hdr_dom(host) 完整域名,  hdr_beg(host)以开头   ,

url_sub检查匹配, url_dir, path_beg开头匹配,    path_end结尾匹配   

与方法一起使用的有use_backend   default_backend

acl www_policy    hdr_reg(host)      -i        ^(www.z.cn|z.cn)客户端以www.z.cn|z.cn开头的域名发送请求时返回ture

acl bbs_policy      hdr_dom(host)      -i        bbs.z.cn   客户端通过bbs.z.cn发送请求时返回true

acl url_policy         url_sub            -i        buy_sid=     当URL中包含buy_sid时返回true

use_backend        server_www        if         www_policy 满足www policy规则时,发送到server_www

·····

···

default_backend    server_cache    

haproxy -f 配置文件  -st重启 -sf完成 -db禁用后台模式 -n最大并发连接数 -c检查配置文件 -q安静模式


你可能感兴趣的:(基于第三方应用的高并发HAproxy简介及基本配置)