设为首页 收藏本站
查看: 752|回复: 0

[经验分享] Haproxy配置应用文档

[复制链接]

尚未签到

发表于 2019-1-1 09:18:01 | 显示全部楼层 |阅读模式
一、配置HAProxy Session亲缘性的三种方式
haproxy负载均衡保持客户端和服务器Session亲缘性的三种方式:
1 用户IP 识别
  haroxy 将用户IP经过hash计算后 指定到固定的真实服务器上(类似于nginx 的IP hash 指令)
配置指令 balance source
backend SOURCE_srv
mode http
balance source
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1

2 cookie 识别
haproxy 将WEB服务端发送给客户端的cookie中插入(或添加加前缀)haproxy定义的后端的服务器COOKIE ID。
配置指令例举 cookie SESSION_COOKIE insert indirect nocache
用firebug可以观察到用户的请求头的cookie里 有类似" Cookie jsessionid=0bc588656ca05ecf7588c65f9be214f5;
SESSION_COOKIE=app1"
SESSION_COOKIE=app1就是haproxy添加的内容。

#vi /usr/local/haproxy/haproxy.cfg
backend COOKIE_srv
mode http
cookie SESSION_COOKIE insert indirect nocache
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1

3 session 识别
haproxy 将后端服务器产生的session和后端服务器标识存在haproxy中的一张表里。客户端请求时先查询这张表。
配置指令例举 appsession JSESSIONID len 64 timeout 5h request-learn
配置举例
backend APPSESSION_srv
mode http
appsession JSESSIONID len 64 timeout 5h request-learn
server REALsrv_70 184.82.239.70:80 cookie 11 check inter 1500 rise 3 fall 3 weight 1
server REALsrv_120 220.162.237.120:80 cookie 12 check inter 1500 rise 3 fall 3 weight 1[2]
  
#启动haproxy
/usr/local/haproxy/haproxy -f /usr/local/haproxy/haproxy.cfg
#查看是否启动
ps -e|grep haproxy
  4859 ? 00:00:00 haproxy
  4860 ? 00:00:00 haproxy
测试
/usr/local/bin/webbench -c 100 -t 30 http://localhost:1080/phpinfo.php


二、安装配置
1、安装
groupadd haproxy
useradd -g haproxy haproxy

tar -xvzf haproxy-1.4.22.tar.gz
cd haproxy-1.4.22
make TARGET=linux26 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
cd /usr/local/haproxy            
mkdir conf
cd conf

2、配置HAproxy 虚拟主机配置
vi /usr/local/haproxy/conf/haproxy.cfg

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 65535
    user haproxy
    group haproxy
    daemon
   # nbproc 4
    pidfile /usr/local/haproxy/haproxy.pid

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    maxconn 65535
    contimeout 5000
    clitimeout 50000
    srvtimeout 50000

listen admin_status
   bind 0.0.0.0:65532
   mode http
#log 127.0.0.1 local3 err
   stats refresh 5s
   stats uri /admin?stats
   stats realm itnihao\ itnihao
   stats auth admin:admin
   stats auth admin1:admin1
   stats hide-version
   stats admin if TRUE

frontend http-in
    bind *:80

   acl sso_web hdr_dom(host) -i sso.qlteacher.com
   use_backend sso_qlteacher_com if sso_web

   acl base_web hdr_dom(host) -i base.qlteacher.com
   use_backend base_qlteacher_com if base_web

   acl plat_web hdr_dom(host) -i plat.qlteacher.com
   use_backend plat_qlteacher_com if plat_web

   

backend sso_qlteacher_com
    balance roundrobin
    cookie SERVERID insert nocache indirect
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server sso1 10.0.0.20:7005 cookie sso1
    server sso2 10.0.0.21:7005 cookie sso2


backend base_qlteacher_com
    balance roundrobin
    cookie SERVERID insert nocache indirect
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server base1 10.0.0.30:7007 cookie base1
    server base2 10.0.0.31:7007 cookie base2


backend plat_qlteacher_com
    balance roundrobin
    cookie SERVERID insert nocache indirect
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server plat1 10.0.0.22:7009 cookie plat1
    #server Server2 10.0.0.31:7007 cookie Server2


3、启动haproxy
# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg、重启haproxy
/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/haproxy.pid`
5、停止haproxy
# killall haproxy
4


三、配置监控页面
访问地址:http://10.0.0.72:65532/admin?stats

listen admin_status
        bind 0.0.0.0:65532
        mode http
        #log 127.0.0.1 local3 err
       stats refresh 5s               
        stats uri /admin?stats         
        stats realm itnihao\ itnihao   
        stats auth admin:admin         
        stats auth admin1:admin1      
        stats hide-version            
        stats admin if TRUE         


四、reqisetbe
#reqisetbe关键字定义,根据定义的关键字选择backend
reqisetbe ^Host:\ img dynamic
reqisetbe ^[^\ ]*\ /(img|css)/ dynamic
reqisetbe ^[^\ ]*\ /admin/stats stats
######reqisetbe自定义关键字匹配backend部分#######################
backend dynamic
mode http
balance source
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net
server denlai1 10.3.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.4.6.104:80 check inter 1500 rise 3 fall 3
backend stats
mode http

balance source
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net
server denlai1 10.5.5.114:80 check inter 1500 rise 3 fall 3
server denlai2 10.6.6.104:80 check inter 1500 rise 3 fall 3
五、日志支持
global
log 127.0.0.1 local0 info

listen admin_status
     bind 0.0.0.0:65532
     mode http
     log 127.0.0.1 local3 err
#vim /etc/syslog.conf
添加:
local0.* /usr/local/haproxy/logs/haproxy.log
local3.* /usr/local/haproxy/logs/haproxy_err.log
#vim /etc/sysconfig/syslog
修改:
SYSLOGD_OPTIONS="-r -m 0"

service syslog restart


六、其它汇总
1、/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.cfg
[WARNING] 217/202150 (2857) : Proxy ’chinaapp.sinaapp.com’: in multi-process mode, stats will be limited to process assigned to the current request.
会提示如上信息,nbproc进程如果设置为1则不会提示,如果想去掉这个提示可以修改编译文件即可。 在源码配置src/cfgparse.c找到如下行
if (nbproc > 1) {
if (curproxy->uri_auth) {
- Warning(“Proxy ‘%s’: in multi-process mode, stats will be limited to process assigned to the current request.\n”,
+ Warning(“Proxy ‘%s’: in multi-process mode, stats will be limited to the process assigned to the current request.\n”,
调整nbproc > 1数值即可。


2、option httpchk HEAD /check.txt HTTP/1.0
此问题出在这句话上面,它的意思是Haproxy会判断你的后端web的根上存在check.txt没有,以此作为haproxy-status的监控状态依据,将它#掉即可;如果是生产环境,你可将check.txt改为index.jsp或index.php即可;

3、压力测试
session 识别会话保持测试1w登陆成功配置如下:
appsession JSESSIONID len 64 timeout 5h request-learn
  F5开启jn_source会话保持。
负载不平衡。

cookie 识别会话保持测试1w登陆成功配置如下:
   cookie SERVERID insert nocache indirect
F5开启jn_source会话保持。
负载均衡较好些。


七、生产环境配置

global
    log 127.0.0.1 local0
    log 127.0.0.1 local1 notice
    maxconn 65535
    user haproxy
    group haproxy
    daemon
pidfile /usr/local/haproxy/haproxy.pid

defaults
    log global
    mode http
    option httplog
    option dontlognull
    retries 3
    option redispatch
    maxconn 65535
    contimeout 5000
    clitimeout 50000
    srvtimeout 50000

listen admin_status
        bind 0.0.0.0:65532
        mode http
        #log 127.0.0.1 local3 err
        stats refresh 5s               
        stats uri /admin?stats         
        stats realm itnihao\ itnihao   
        stats auth admin:admin         
        stats auth admin1:admin1      
        stats hide-version            
    stats admin if TRUE
      
frontend http-in
    bind *:80
    acl sso_web hdr_dom(host) -i sso.qlteacher.com
    use_backend sso_qlteacher_com if sso_web

    acl base_web hdr_dom(host) -i base.qlteacher.com
    use_backend base_qlteacher_com if base_web

    acl plat_web hdr_dom(host) -i plat.qlteacher.com
    use_backend plat_qlteacher_com if plat_web
   


backend sso_qlteacher_com
    balance roundrobin
   #balance leastconn
    cookie SERVERID insert nocache indirect
   #appsession JSESSIONID len 64 timeout 5h request-learn
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
   option forwardfor
    server sso1 10.0.0.20:7005 cookie sso1
    server sso2 10.0.0.21:7005 cookie sso2
    server sso3 10.0.0.22:7005 cookie sso3
    server sso4 10.0.0.23:7005 cookie sso4
    server sso5 10.0.0.24:7005 cookie sso5

backend base_qlteacher_com
    balance roundrobin
   #balance leastconn
    cookie SERVERID insert nocache indirect
   #appsession JSESSIONID len 64 timeout 5h request-learn
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server base1 10.0.0.30:7007 cookie base1
    server base2 10.0.0.31:7007 cookie base2
    server base3 10.0.0.32:7007 cookie base3
    server base4 10.0.0.33:7007 cookie base4
    server base5 10.0.0.34:7007 cookie base5
backend plat_qlteacher_com
    balance roundrobin
   #balance leastconn
    cookie SERVERID insert nocache indirect
   #appsession JSESSIONID len 64 timeout 5h request-learn
    option httpchk HEAD /check.txt HTTP/1.0
    option httpclose
    option forwardfor
    server plat1 10.0.0.22:7009 cookie plat1
    #server Server2 10.0.0.31:7007 cookie Server2





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658139-1-1.html 上篇帖子: haproxy1.8安装配置 下篇帖子: yum安装haproxy-12163069
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表