zoukankan      html  css  js  c++  java
  • HAProxy的日志配置以及ACL规则实现负载均衡

    HAProxy配置日志策略

    默认情况下,HAProxy是没有配置日志的
    在centos6.3下默认管理日志的是rsyslog,可以实现UDP日志的接收,将日志写入文件,写入数据库
    先检测rsyslog是否安装
    rpm -q rsyslog
    安后在/etc/rsyslog.d/下创建haproxy.conf,内容如下:

    1 $ModLOad imudp
    2 $UDPServerRun 514
    3 local3.* /usr/local/haproxy/logs/haproxy.log
    4 local10.* /usr/local/haproxy/logs/haproxy.log

    说明下:
    imup是模块名,支持UDP协议
    第二行准许514端口接收使用UDP和TCP协议转发过来的日志,rsyslog默认514端口监听UDP,也可以将上面的内容写入/etc/rsyslog文件中
    然后修改下/etc/sysconfig/rsyslog文件,修改为:
    SYSLOGD_OPTIONS='-c 2 -r -m 0'
    -r接收远程日志
    重启即可 service rsyslog restart

    通过HAProxy的ACL规则实现智能负载均衡主要两个功能
    1,通过设置ACL规则检查客户端请求是否合法,符合ACL规则,放行,不符合直接中断请求.
    2,符合ACL要求的请求将被提交到后端的backend服务器集群,进而实现基于ACL规则的负载均衡

    HAProxy的ACL规则经常使用在frontend段中,语法如下

    1 acl 自定义acl名称 acl方法 -i [匹配的路径或者方法]

    acl方法,HAProxy定义了很多ACL方法,经常使用的有hdr_reg(host),hdr_dom(host),hdr_beg(host),url_sub,url_dir,path_beg,path_end
    -i表示不区分大小写,后边跟上匹配的路径或文件或正则表达式
    与ACL一起使用的参数还有use_backend,usebackend后面需要跟上一个backend实例名,表示在满足ACL规则后去请求哪个backend实例,与use_backend对应的还有default_backend参数,表示在没有满足ACL条件的时候默认使用哪个backend后端
    例如:

    1 acl www_policy hdr_reg(host) -i ^(www.z.cn|z.cn)
    2 acl bbs_policy hdr_dom(host) -i bbs.z.cn
    3 acl url_sub url_sub(host) -i buy_sid=
    4 
    5 
    6 use_backend server_www if www_policy
    7 use_backend server_bbs if bbs_policy
    8 use_backend server_app if url_policy
    9 default_backend server_cache

    这里只是列出了HAProxy配置文件中的ACL部分
    说明下:
    这里定义了三个ACL规则第一条规则表示客户端以www.z.cn或者z.cn开头的域名发送请求的时候则此规则返回true,同理后两条的意思也这样
    第四第五第六规则定义了三个ACL规则返回true 的时候要调度到哪个后端的backend,例如当用户请求满足www_policy规则的时候HAProxy会将用户的请求直接发往名为server_www的后端,以此类推
    不满足任何一个ACL规则的时候,直接发往default_backend
    第四第五第六规则定义了三个ACL规则返回true 的时候要调度到哪个后端的backend,例如当用户请求满足www_policy规则的时候HAProxy会将用户的请求直接发往名为server_www的后端

    1 acl url_static path_end .gif .png .jgp .js
    2 acl host_www hdr_beg(host) -i www
    3 acl host_statuc hdr_beg(host) -i img.video.download.ftp.
    4 
    5 use_backend static if host_static || host_www url_static
    6 use_backend www if host_www
    7 default-backend server_cache

    本实例也是定义了三个ACL规则,其中第一条规则通过psth_end参数定义了如果客户端在请求的URL中以.gif,.png,.jgp,.js结尾时返回true
    第二条说如果以www开头的域名发送请求时返回true,同理第三条
    第四五条规则定义了满足当前规则的时候调度到哪个后端的backend

  • 相关阅读:
    UE4项目《和平精英》渲染技术浅析
    如何用CMake构建Android C++库
    Unity Native Plugin
    多边形三角化
    参考图
    Unity SRP学习笔记
    Macbook Pro HDMI 无信号解决办法
    CGAL计算几何算法库
    无标记动作捕捉
    PS 鼠绘
  • 原文地址:https://www.cnblogs.com/Dicky-Zhang/p/6248872.html
Copyright © 2011-2022 走看看