• haproxy配置文件详解


    global配置参数

    maxconn 100000             #每个haproxy进程的最大并发连接数
    chroot /apps/haproxy       #把haproxy锁定一个工作目录;当发生特殊情况,haproxy被控制时,也只能在锁定的目录下,不能跳转到其他目录
    stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin   #指定socket文件路径及文件的权限
    user haproxy
    group haproxy
    #uid 99
    #gid 99                    #99是nobody
    daemon                     #以守护进程方式启动
    nbproc 4                   #haproxy工作进程数量;与CPU核心数量相对应
    cpu-map 1 0                #第一个工作进程绑定在第0核CPU上
    cpu-map 2 1                #第二个工作进程绑定在第1核CPU上
    cpu-map 3 2
    cpu-map 4 3
    maxconn                 #每个haproxy进程的最大并发连接数
    maxsslconn                #每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下
    maxconnrate               #每个进程每秒创建的最大连接数量
    pidfile /var/lib/haproxy/haproxy.pid
    spread-checks 3            #后端server状态检查,随机提前或延迟百分比时间,建议2-5(20%-50%)之间;设置当前检测时间为3s,则会提前3s的20%-50%,或者 
                                延后3s的20%-50%;把同时探测的压力分散开
    log 127.0.0.1 local3 info  #生成的日志发送给本机的syslog服务器;最多可以定义两个;定义的是local3设备,所以需要在syslog服务器的配置文件中进行定
                                义;vim /etc/rsyslog.conf;添加local3.* /var/log/haproxy.log,记录local3设备的所有级别的日志到指定文件中;并且 
                                需要开启$ModLoad imtcp、$InputTCPServerRun 514这两行,使用TCP协议进行日志转发;systemctl restart rsyslog
    

    Proxies配置

    defaults [<name>] #默认配置项,针对以下的frontend、backend和lsiten生效,可以多个name;defaults后面的name是一个可有可无的。
    frontend <name>  #前端servername,类似于Nginx的一个虚拟主机 server;后面必须有name。
    backend <name>   #后端服务器组,等于nginx的upstream;后面必须有name。
    listen   <name>  #将frontend和backend合并在一起配置;后面必须有name。
    
    注意1:name字段只能使用”-”、”_”、”.”、和”:”,并且严格区分大小写,例如:Web和web是完全不同的两组服务器。
    注意2:如果frontend、listen中进行了配置,则以frontend、listen为准;如果frontend、listen中未进行配置,则以defaults配置为准。
    

    Proxies配置-defaults

    option redispatch     #当server Id(real server)对应的服务器挂掉后,强制定向到其他健康的服务器  
    option abortonclose    #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接;一般长时间处理的服务器(连接数据库等),需要关闭该选项
    option http-keep-alive  #开启与客户端的会话保持,在不超时的情况下,再次访问就不需要TCP三次握手建立连接
    option forwardfor     #透传客户端真实IP至后端web服务器
    mode http               #haproxy默认工作类型,基于应用层;如果后端服务器有自己的应用层协议,可单独在后端代理上定义协议类型;工作中一般为TCP
    timeout connect 120s    #客户端请求到后端server的最长连接等待时间(haproxy与后端服务器TCP三次握手之前)
    timeout server 600s     #客户端请求到后端服务端的超时超时时长(TCP之后);如果在600s后端服务器还未给haproxy返回,则会报502(后端服务器超时)
    timeout client 600s     #与客户端的最长非活动时间;600s内客户端没有向haproxy请求资源,则haproxy将会主动切断与客户端的连接
    timeout http-keep-alive 120s    #session 会话保持超时时间,范围内会转发到相同的后端服务器
    timeout check   5s    #对后端服务器的检测超时时间
    

    Proxies配置-frontend

    示例1:
    1 frontend yewu-service-80                     #前端的名字一般为:业务-服务-端口号
    2     bind 192.168.38.37:80,192.168.38.37:81   #指定haproxy监听的IP及端口,可以是多个IP;也可以写成,IP:80-89,或者是sock文件
    3     mode tcp                                 #指定负载均衡协议类型
    4     use_backend yewu-service-80-nodes        #调用后端服务器组的名称

    示例2:
    1 frontend http_https_proxy  #https监听
    2    bind :80
    3    bind :443 ssl crt /etc/haproxy/site.pem

    Proxies配置-backend

    定义一组后端服务器,backend服务器将被frontend进行调用。
    
    server #定义后端real server
    check  #对指定real server进行健康状态检查,默认不开启
           addr IP   #可指定的健康状态监测IP
           port num   #指定的健康状态监测端口;一般先对后端重要的服务的端口进行检查,如果重要服务的端口存在,则进行后端服务器的负载均衡;一般反向代理的
                      IP和端口号与重要服务的IP不在同一个网段;如nginx与php,先检查后端nginx服务器的php的9000端口是否存在,存在才反向代理后端的nginx
                      服务器
           inter num  #健康状态检查间隔时间,默认2000ms
           fall num  #后端服务器失效检查次数,默认为3,失败3次,从后端服务器组里面踢出去;1次失败有可能是网络问题,所以设置为检测失败3次;检测的时候,
                      用户的请求也会往服务器进行转发,所以失败检测次数不能太多;被踢出去后,用户的请求将不会往该服务器转发
           rise num  #后端服务器从下线恢复检查次数,默认为2;后端服务器宕机,恢复后,检查成功2次后,重新添加到haproxy反向代理的服务器组里面
    
    weight #默认为1,最大值为256,0表示不参与负载均衡
    backup #将后端服务器标记为备份状态;当所有服务器都宕机时,backup服务器才会启动,相当于say sorry服务器
    disabled #将后端服务器标记为不可用状态
    redirect prefix http://www.xxx.net/   #将请求临时重定向至其它URL,只适用于http模式
    maxconn <maxconn>:当前,后端server的最大并发连接数
    backlog <backlog>:当server的连接数达到上限后的后援队列长度
    
    示例:
    1 backend yewu-service-80-nodes    #指定后端服务器组的名称;一般为,前端名称-nodes
    2  mode tcp        #后端服务器组的协议类型必须与前端一致
    3  server web1 192.168.38.27:80 weight 1 check addr 192.168.38.27 port 9000 inter 3s fall 3 rise 5   #反向代理前,先检查192.168.38.37:9000
                                                                                                          端口是否可以访问,可访问才会进行反向代
                                                                                                          理;如果9000端口不能访问,则不进行反向
                                                                                                          代理
    4  server web2 192.168.38.47:80 check   #指定后端服务器的名称、IP、端口号,以及检查
     

    使用listen替换frontend+backend的配置方式

    1 listen yewu-service-80      #指定名称,业务-服务-端口号
    2  bind 192.168.38.37:80      #指定haproxy所监听的IP及端口号
    3  mode http                  #指定反向代理的协议类型
    4  option forwardfor          #把用户的IP透传给后端服务器
    5  server web1 192.168.38.27:80 weight 1 check inter 3000 fall 3 rise 5     #指定后端服务器的名称、IP、端口号等
    6  server web2 192.168.38.47:80 weight 1 check inter 3000 fall 3 rise 5
  • 相关阅读:
    视图
    使用navicat for sqlserver 把excel中的数据导入到sqlserver数据库
    sql去重
    SQLserver连接本地服务器
    html中去掉文本框(input type="text")的边框或只显示下边框
    用户控件与页面间相互给各自的控件赋值
    easyui datagrid 去掉 全选checkbox
    ZebraDatepicker中文显示
    实现在点击asp:button按钮后,不刷新当前页面
    (转)ASP.NET(C#)FileUpload实现上传限定类型和大小的文件到服务器
  • 原文地址:https://www.cnblogs.com/dongzhanyi123/p/12173494.html
Copyright © 2020-2023  润新知