• Haproxy负载均衡/动静分离(haproxy各选项详细解释)


    在前端领域做负载均衡,动静分离的程序有很多,比较常用的是nginx和Haproxy,今天就说一下

    Haproxy在这两方面的表现,文章参考很多网文写成,再加上自己的实验成果,文中所有解释都经过实际环境验证。

    环境介绍:

    Centos 6.5

    Haproxy 1.7.9

    前端 192.168.6.10

    后端 192.168.6.20(web1)  192.168.6.21(web2)

    图片服务器 192.168.6.22(img01)

    1.安装Haproxy

    wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.9.tar.gz
    tar -xvf haproxy-1.7.9.tar.gz
    mkdir /usr/local/haproxy
    cd haproxy-1.7.9
    make TARGET=/usr/local/haproxy
    make install
     

    2.编辑配置文件

    vim /usr/local/haproxy/conf/haproxy.cfg

    ###########全局配置#########  
    global
            log 192.168.6.11   local0 info    #[日志输出配置,info日志都记录在远程服务器,通过local6输出,不需要ssh验证机制]  
            log 127.0.0.1    local0 notice  #定义haproxy notice日志记录在本机 此级别比较常用
            #日志级别 
            #emerg 0 系统不可用
            #alert 1 必须马上采取行动的事件
            #crit 2 关键的事件
            #err 3 错误事件
            #warning 4 警告事件
            #notice 5 普通但重要的事件
            #info 6 有用的信息
            daemon            #以后台形式运行harpoxy  
            nbproc 1           #设置进程数量  
            pidfile /home/haproxy/haproxy/conf/haproxy.pid   #haproxy 进程PID文件  
            ulimit-n 819200           #ulimit 的数量限制  
            maxconn 4096           #默认最大连接数,需考虑ulimit-n限制  
            #chroot /usr/share/haproxy #chroot运行路径  
            uid 99           #运行haproxy 用户 UID  99是nobody用户
            gid 99           #运行haproxy 用户组gid  
            #debug            #haproxy 调试级别,建议只在开启单进程的时候调试  
            #quiet  
    
    ########默认配置############  
    defaults
            log global
            mode http           #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK  
            option  httplog       #日志类别,采用httplog  
            option  dontlognull     #不记录健康检查日志信息  
            retries 2           #两次连接失败就认为是服务器不可用,也可以通过后面设置  
            option  forwardfor      #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip  
            option  httpclose      #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现  
            #option redispatch      #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器,以后将不支持  
            option  abortonclose     #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接  
            maxconn 4096         #默认的最大连接数  
            timeout connect 5000ms     #连接超时  
            timeout client 30000ms     #客户端超时  
            timeout server 30000ms     #服务器超时  
            #timeout check 2000       #心跳检测超时  
            #timeout http-keep-alive 10s   #默认持久连接超时时间  
            #timeout http-request   10s     #默认http请求超时时间  
            #timeoutqueue        1m    #默认队列超时时间  
            balance roundrobin       #设置默认负载均衡方式,轮询方式  
            #balance source        #设置默认负载均衡方式,类似于nginx的ip_hash  
            #balnace leastconn       #设置默认负载均衡方式,最小连接数  
    
    ########统计页面配置########  
    listen admin_stats
            bind 0.0.0.0:1080            #设置Frontend和Backend的组合体,监控组的名称,按需要自定义名称  
            mode http                #http的7层模式  
            option httplog             #采用http日志格式  
            #log 127.0.0.1 local0 err       #错误日志记录  
            maxconn 10               #默认的最大连接数  
            stats refresh 20s           #统计页面自动刷新时间  
            stats uri /666-stats          #统计页面url  
            stats realm XingCloud Haproxy      #统计页面密码框上提示文本  
            #stats realm Haproxy Statistics   #统计页面密码框上提示文本  
            stats auth admin:admin123       #设置监控页面的用户和密码:admin,可以设置多个用户名  
            # stats auth  Frank:Frank      #设置监控页面的用户和密码:Frank  
            stats hide-version           #隐藏统计页面上HAProxy的版本信息  
            stats  admin if TRUE         #设置手工启动/禁用,后端服务器(haproxy-1.4.9以后版本)  
    
    ########设置haproxy 错误页面#####  
    #errorfile 403  /home/haproxy/haproxy/errorfiles/403.http  
    #errorfile 500 /home/haproxy/haproxy/errorfiles/500.http  
    #errorfile 502 /home/haproxy/haproxy/errorfiles/502.http  
    errorfile 503 /home/haproxy/503.hh    #文件名和后缀可随便起,浏览器都可以正常显示
    #errorfile 504 /home/haproxy/haproxy/errorfiles/504.http  
    
    #errorloc   404 /home/haproxy/404.htm
    errorloc   503  /home/haproxy/503.hh  #后端有一台报错,直接跳转到此页面
    
    ########frontend前端配置##############  
    bind *:80
        #这里建议使用bind *:80的方式,要不然做集群高可用的时候有问题,vip切换到其他机器就不能访问了。  
        acl webserver hdr(host) -i www.abc.com
        #acl后面是规则名称,-i是要访问的域名,  
       
        acl url_static       path_beg       -i /upload/
        acl url_static       path_end       -i .jpg .jpeg .gif .png .css .js .html
    
        use_backend imgserver if url_static   #如果匹配静态规则就跳转到imgserver
        default_backend webserver              #默认规则
        #如果访问www.abc.com这个域名就分发到下面的webserver 的作用域。  
        #如果访问img.abc.com.cn就分发到imgserver这个作用域。  
        #use_backend webserver if web      #设置了默认规则,这里可以不设置
        #use_backend imgserver if img  
    
    ########backend后端配置##############  
    backend webserver             #webserver作用域  
        cookie srv insert nocache        #插入一个cookie,在下次用户登录时登录到同样的后端
        balance   roundrobin
        #banlance roundrobin 轮询,balance source 保存session值,支持static-rr,leastconn,first,uri等参数  
        option  httpchk GET /index.html #HTTP/1.0  #健康检查  
        #检测文件,如果分发到后台index.html访问不到就不再分发给它  
        server  web1 192.168.6.20:80 cookie web1 weight 5 check inter 2000 rise 2 fall 3
        server  web2 192.168.6.21:80 cookie web2 weight 3 check inter 2000 rise 2 fall 3
        #cookie web1表示cookie名称为web1,check inter 1500 是检测心跳频率    
        #rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用,weight代表权重  
    backend imgserver
        option  httpchk /upload/         #检测文件夹是否存在
        balance     roundrobin
        server      img01 192.168.6.22:80  check inter 2000 fall 3
     

    3.增加Haproxy日志存放位置

    Haproxy日志默认是存放在/var/log/message,但是message里信息较多,建议分离出自己想要的部分到别的日志文件中

    ①vim /etc/sysconfig/rsyslog

    SYSLOGD_OPTIONS="-r -m 0 -c 2"
     

    ②vim /etc/rsyslog.conf

    去掉以下两行的注释:

    $ModLoad imudp
    $UDPServerRun 514
     

    添加一行:

    local5.*      /var/log/haproxy/haproxy.log  #级别为5的日志存放位置,各级文件夹必须存在
     

    ③重启rsyslog

    service rsyslog restart
     

    完成后Message和haproxy.log中会同时存在日志,因级别不同,显示内容也就会不同

    4.启动Haproxy

    cd /usr/local/haproxy/

    ./sbin/haproxy -f conf/haproxy.cfg

    观察日志 tail /var/log/message

    3737334403e87d9ebbaaa7c2cc58e902.png-wh_

    出现以上提示为启动成功

    4bb408bbfa1e2918cc991336e0c64da7.png-wh_

    出现以上提示为后端其中一台服务器连接失败

    5.访问http://192.168.6.10/666-stats,输入用户名密码后出现如下界面:

    fb842f52ad83270e125d00fedbb19ef5.png-wh_

    3个服务器连接正常,可以提供服务!

    注:附一张缓存插入成功的截图,仅供参考,图片是360极速浏览器的截图

    abe727b94a2564a117bfd3b51562c053.png-wh_

    原文:https://blog.51cto.com/forall/1974621

  • 相关阅读:
    vue组件重新加载的方法
    事件触发方法获取当前值的写法 (含方法要传2个参数的写法)
    mac 解压 rar压缩文件
    表格
    小米8安装charles证书方法
    视频结构化技术栈全解析
    多目标跟踪全解析,全网最全
    SpringBoot
    技术方案设计的方法
    Java的强引用、软引用、弱引用、虚引用
  • 原文地址:https://www.cnblogs.com/soymilk2019/p/11124043.html
Copyright © 2020-2023  润新知