wdx1992828 发表于 2019-1-2 07:22:35

负载均衡集群HAProxy讲解篇

负载均衡集群HAProxy讲解篇
一、HAProxy组成部分
Haproxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择作为配置。
1.global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改;
2.default:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件;
3.frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的backend(可动态选择);
4.backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器;
5.listen:Frontend和Backend的组合体。
二、Global部分讲解
1、log 127.0.0.1 local0 info#log表示日志配置,local0表示日志设备,info表示日志级别。
2、maxconn 4096#haproxy进程可接受的最大并发连接说,等同于ulimit –n。
3、uid 99#HAProxy运行的用户uid。
4、gid 99#HAProxy运行的组uid
5、daemon#后台形式运行haproxy
6、nbproc 1 #开启的进程数
7、pidfile /usr/local/haproxy/haproxy.pid#指定haproxy进程文件。
三、defaults部分讲解
           1、log global #应用全局的日志配置。
           2、mode http#所处理的类别,默认采用http模式,可配置成tcp作4层消息转发。
           3、option httplog#日志类别。
           4、retries 3#连接后端服务器失败重试次数,连接失败3次,认为后端服务器不可用。
           5、option redispatch#当后端对应的服务器挂掉后,强制定向到其他健康的服务器。
           6、option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
           7、option dontlognull #保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包。
           8、maxconn 2000#默认的最大连接数。
           9、timeout connect 5000 #连接超时,根据情况设定,时间太短,可能会有408错误。
           10、timeout client 50000#客户端连接超时。
11、timeout server 50000#服务器回应超时。
12、timeout check 30s #心跳检测超时。
13、timeout http-keep-alive10s #存活请求时间为超时时间。
14、timeout http-request 30s #请求超时时间。
15、timeout queue 1m #队列超时间。
16、contimeout 5000 # 设置成功连接到一台服务器的最长等待时间,默认单位是毫秒,新版本的haproxy使用timeout connect替代,该参数向后兼容。
17、clitimeout 50000 #设置连接客户端发送数据时的成功连接最长等待时间,默认单位是毫秒,新版本haproxy使用timeout client替代。该参数向后兼容。
18、 srvtimeout 50000 #设置服务器端回应客户度数据发送的最长等待时间,默认单位是毫秒,新版本haproxy使用timeout server替代。该参数向后兼容。
四、frontend部分讲解
           1、bind *:8080 #监听端口。
           2、mode http #http的7层模式。
           3、option httplog #启用http日志格式。
           4、option http-server-close #对于某些server端不支持http长连接的情况,利用这个参数可以使用客户端到haproxy是长连接,而haproxy到server端是短连接。
           5、option forwardfor except 127.0.0.0/24 header X-Forwarded-For #后端服务器需要获得客户端的真实IP,将从Http Header中获得客户端IP.
           6、option dontlognull #来防止记录 Alteo(4层负载均衡)发出的健康检测,如果一个 session 交互没有数据,这个 session就不会被记录。
           7、option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现。
           8、default_backend htmpool #后端服务器池,真实服务器必须在backend中去定义。
五、backend部分讲解
           1、mode http#所处理的类别,默认采用http模式,可配置成tcp作4层消息转发。
           2、option redispatch#当后端对应的服务器挂掉后,强制定向到其他健康的服务器。
           3、option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
           4、balance leastconn#负载均衡算法。
           5、cookie SERVERID#允许向cookie插入serverid,每台服务器的serverid可在下面server关键字中使用cookie。
           6、option httpchk HEAD /index.htm HTTP/1.0 #健康检查。
           7、server#定义多个后端真实服务器。
                     例如:server web1 192.168.100.50:8085 cookie 1 weight 5 check inter 2000 rise 2 fall 3。
                     7.1、web1为后端真实服务器内部名称,随便定义。
                     7.2、192.168.100.50为后端真实服务器ip地址。
                     7.3、8085为后端真实服务器连接的端口。
                     7.4、cookie为后端服务器设定cookie值,实现持久性连接功能。cookie 1表示serverid为1。
                     7.5、weight为服务器的权重。
                     7.6、check为健康状态检查
                     7.7、inter 2000为健康检查时间间隔。
                     7.8、ruse 2为故障转换正常成功检查次数。
                     7.9、fall 3为正常状态转换为故障需要检查的次数。
六、listen部分讲解
           1、listen admi_statsd定义一个haproxy监控页面。
           2、bind *:9188 #监听端口。
           3、stats refresh 10s #统计页面自动刷新时间。
           4、stats uri /haproxy-stats #统计页面url。
           5、stats realm Statistics\ Report #统计页面密码框上提示文本。
           6、stats auth admin:123456 #统计页面用户名和密码设置。
           7、stats hide-version #隐藏统计页面上HAProxy的版本信息。
           8、stats admin if TRUE #手工启用/禁用,后端服务器(haproxy-1.4.9以后版本)。
七、haproxy相关命令参数介绍
           haproxy-f    [-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p] [-s] [-l] [-dk] [-ds] [-de] [-dp] [-db] [-m ] [{-sf|-st} pidlist...]
        -d   前台,debug模式
        -D   daemon模式启动
        -q   安静模式,不输出信息
        -V   详细模式
        -c   对配置文件进行语法检查
        -s   显示统计数据
        -l   显示详细统计数据
        -dk    不使用kqueue
        -ds    不使用speculative epoll
        -de    不使用epoll
        -dp    不使用poll
        -db    禁用后台模式,程序跑在前台
        -sf    程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后
        -st    程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后
  




页: [1]
查看完整版本: 负载均衡集群HAProxy讲解篇