Haproxy的配置文件haproxy.cfg由两大部分组成:
- global:全局配置段
- proxies:代理配置段
global全局配置段:
- 进程及安全配置相关的参数
- 性能调整相关参数
- Debug参数
proxies代理配置段:
- defaults:为frontend,backend,listen提供默认配置
- frontend:前端,相当于nginx中的server{}
- backend:后端,相当于nginx中的upstream{}
- listen:同时拥有前端和后端配置
#1. global配置参数
参数 | 含义 |
log | 日志配置,格式:log 机器IP 日志类型 日志级别。如:log 127.0.0.1 local3 info |
maxconn | 最大连接限制(优先级低) |
uid,user | 用户,运行Haproxy的用户是谁,可以写用户名也可以写用户ID。如:uid fq |
gid,group | 用户组,如:gid wql |
daemon | 守护进程运行 |
nbproc | haproxy进程数,该值的设置应该和服务器CPU核心数一致,比如设置成16,及常见的2颗8核心CPU的服务器,即共有16,可以设置的值:<=16。创建进程数可以减少每个进程任务队列,提高效率 |
nbthread | 指定每一个haproxy进程开启的线程数,默认为每一个进程一个线程 |
pidfile | 指定haproxy进程ID存储位置,如: pidfile /var/lib/haproxy/haproxy.pid |
chroot | 锁定运行目录 |
例:
global maxconn 100000 chroot /apps/haproxy stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin uid 99 gid 99 #user haproxy #group haproxy daemon #nbproc 4 pidfile /var/lib/haproxy/haproxy.pid log 127.0.0.1 local2 info
#2. proxies配置
##2.1 defaults配置参数
参数
|
含义
|
log
|
日志配置,格式:log 机器IP 日志类型 日志级别。如:log 127.0.0.1 local3 info
|
mode
|
指定haproxy的工作模式,指定它是工作在4层还是7层。如:四层 TCP,七层http
|
maxconn
|
最大连接限制(优先级比global高)
|
retries
|
健康检测次数,如:retries 3 ,3次连接失败认为服务不可用
|
option
|
服务不可用后的操作,重定向到其他健康的服务器,如:option redispath
|
contimeout
|
重传计时器,定义haproxy将客户端m请求转发至后端服务器所等待的超时时长
|
clietimeout
|
(向后长连) haproxy作为客户,和后满服务器之间空闲连接m的超时时间,到时候发送fin指令
|
srvtimeout
|
(向前长连接) haproxy作为服务器,和用户之间空闲连接的超时时间,到时候发送fin指令
|
option abortclose
|
当服务器负载高的时候,自动结束掉当前队列处理比较久的链接
|
stats uri
|
设置统计页面的uri路径,如:stats uri /admin
|
stats realm Private lands
|
设置统计页面认证时的提示内容
|
stats auth admin:password
|
设置统计页面认证时的账号和密码,如果设置多个另起一行写入即可
|
stats hide-version
|
隐藏统计页面上的haproxy版本信息
|
haproxy的三大计时器:
- contimeout( timeout connect)
- clietimeout(timeout client)
- srvtimeout(timeout server)
haproxy跟nginx有很大区别就在于它除了有健康检查还维护了客户端和服务端的关系
- 但client发送请求,server失去链接并超时,haproxy就会将请求转发给其他server
- 当client失去链接并超时,haproxy会直接丢弃请求
- 这个关系通过心跳计时器来维护
例:
defaults log global mode http maxconn 3000 retries 3 option abortclose timeout connect 5000 timeout client 50000 timeout server 50000 stats uri /admin stats auth wql:123456789 stats hide-version
##2.2 frontend配置参数
frontend表示前端(代理器的前面),代理器的前面是用户
参数 |
含义
|
bind
|
对外提供服务的绑定地址,可以一次配多个IP,如:bind 192.168.68.133:8080只有访问这个地址才能提供服务,0.0.0.0:80表示只有访问本机地址就提供服务
|
mode
|
工作模式,前端时指定为http
|
log
|
日志配置,和之前的一样,假如值为global就表示使用global的日志配置 例:log global
|
option httpclose
|
用户连接过久,直接关闭
|
前端控制列表配置:
acl wql url_reg -i \.html$ use_backend fq-server if wql
格式:acl 访问控制列表名字 控制规则 参数 规则表达式
acl wql url_reg -i \.html$ ,url_reg为url正则匹配, -i忽略大小写,\.html$为正则表达式,意思为只有用户访问的是以.html结尾的请求(if wql)都推送(use_backend)给后端服务器群组(fq-server为群组名称)
例:
frontend fw bind 0.0.0.0:80 mode http log global option httpclose acl wql url_reg -i \.html$ use_backend fq-server if wql default_backend fq-server
##2.3 backend配置参数
backend表示后端(代理器的后面),代理器的后面是服务器
参数
|
含义
|
mode
|
工作模式,四层值为tcp,七层为http
|
balance
|
指定负载均衡策略,如:roundrobin表示轮询
|
option httpchk GET 路径
|
对固定的server地址就行效验,发送GET请求,看是否正常。和retries搭配使用
|
cookie SERVERID insert indirect nocache
|
把服务器编号ID插入到回复给用户的cookie当中
|
server
|
指定服务器,基本格式:server 服务器别名 ip:端口,例:server wql1 192.168.68.133:80
|
server的其他配置:
- weight:服务器权重
- cookie:需要发送给用户的cookie标识
- check inter:效验的间隔时间
- rise:成功次数,定义多少次成功才算真正成功
- fail:失败次数,定义多少次失败才算真正失败
如:
backend fq-server mode http option httpchk GET /index.html cookie SERVERID insert indirect nocache server wql1 192.168.68.133:80 weight 1 cookie 3 check inter 2000 rise 2 fail 5 server wql1 192.168.68.134:80 weight 1 cookie 4 check inter 2000 rise 2 fail 5
##2.4 listen配置参数
listen主要用来替代frontend和backend
listen配置参数是所有frontend和backend的混合,只要是这两者有的listen都能用
例:
listen stats mode http bind 0.0.0.0:9999 stats enable log global listen web_port bind 0.0.0.0:80 mode http log global server web1 127.0.0.1:8080 check inter 3000 fall 2 rise 5
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109