- 程序环境
主程序:/usr/sbin/haproxy
配置文件:/etc/haproxy/haproxy.cfg
Unit file:/usr/lib/systemd/system/haproxy.service
- 配置段
1.global:全局配置段
进程及安全配置相关的参数
性能调整相关参数
Debug 参数
- proxies:代理配置段
defaults:为 frontend,backend,listen 提供默认配置
frontend:前端,相当于 nginx 中的 server{}
backend:后端,相当于 nginx 中的 upstream {}
listen:同时拥有前端和后端,适用于一对一环境
HAProxy 配置
chroot # 锁定运行目录
deamon # 以守护进程运行
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin # socket 文件
user,group,uid,gid # 运行haproxy 的用户身份
nbproc # 开启的 haproxy 进程数,与 CPU 保持一致
nbthread # 指定每个 haproxy 进程开启的线程数,默认为每个进程一个线程
cpu-map 1 0 # 绑定 haproxy 进程至指定 CPU
maxconn # 每个 haproxy 进程的最大并发连接数
maxsslconn # SSL 每个 haproxy 进程 ssl 最大连接数
maxconnrate # 每个进程每秒最大连接数
spread-checks # 后端 server 状态 check 随机提前或延迟百分比时间,建议 2-5 (20%-50%) 之间
pidfile # 指定 pid 文件路径
log 127.0.0.1 local3 indo # 定义全局的 syslog 服务器;最多可以定义两个
- proxies
defaults [<name>] # 默认配置项,针对以下的 frontend、backend 和 siten 生效,可以多个 name
frontend <name> # 前端 servername,类似于 nginx 的一个虚拟主机 server
backend <name> # 后端服务器组,等于 nginx 的 upstream
listen <name> # 将 frontend 和 backend 合并在一起配置
注:name 字段只能使用 "-"、"_"、"." 和 ":",并且严格区分大小写,例如:Web 和 web 是完全不同的两组服务器
- defaults
option redispatch # 当 server ID 对应的服务器 down 了,强制定向到其他健康的服务器
option abortonclose # 当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
option http-keep-alive 60 # 开启会话保持
option forwardfor # 开启 IP 透传
mode http # 默认工作类型
timeout connect 120s # 连接到一台后端 server 的最长时间
timeout client 600s # 与客户端的最长空闲时间
timeout server 600s # 等待服务端的超时时长
timeout http-keep-alive 120s # session 会话保持时间
timeout check 5s # 对后端服务器的检测超时时间
- frontend
bind:指定 HAProxy 的监听地址,可以是 IPV4 或 IPV6,可以同时监听多个 IP 或端口,可同时用于 listen 字段中
bind [<address>]:<port_range>[,...][param*]
mode http/tcp # 指定负载协议类型
use_backend BACKEND_NAME # 调用的后端服务器组名称
示例
frontend WEB_PORT
bind:80,:8080
bind 192.168.7.102:10080,192.168.7.102::10043
use_backend BACKEND_NAME
- backend
mode http/tcp/health # 指定负载协议类型
option # 配置选项
server # 定义后端 real server
注意:option 后面加 httpckd,smtpchk,mysql-check,pgsql-check,ssl-hello-chk 方法,可用于实现更多应用层检测功能
后端服务器状态检测及相关配置
check # 对指定 real 进行健康状态检查,默认不开启
addr IP # 可指定的健康状态监测 IP
port NUM # 指定的健康状态监测端口
inter NUM # 健康状态检查间隔时间,默认 2000 ms
fall NUM # 后端服务器失效检查次数,默认为 3
rise NUM # 后端服务器从下线恢复检查次数,默认为 2
weight # 默认为 1,最大值 256,0 表示不参与负载均衡
backup # 将后端服务器标记为备份状态
disabled # 将后端服务器标记为不可用状态
redirect prefix http://www.rookie.com/ # 将请求临时重定向至其它 URL,只适用于 http 模式
maxconn <maxconn> # 当前后端 server 的最大并发连接数
backlog <backlog> # 当 server 的链接数达到上限后的后援队列长度
示例
frontend WEB_PORT_80
bind 192.168.7.248:80
mode http
use_backend web_port_http_nodes
backend web_port_http_nodes
mode http
option forwardfor
server 192.168.7.101 192.168.7.101:8080 check inter 3000 fall 3 rise 5
server 192.168.7.102 192.168.7.102:8080 check inter 3000 fall 3 rise 5
- listen
使用 listen 替换 frontend 和 backend 的配置方式
listen WEB_PORT_80
bind 192.168.7.102:80
mode http
option forwardfor
server web1 192.168.7.101:8080 check inter 3000 fall 3 rise 5
server web2 192.168.7.101:8080 check inter 3000 fall 3 rise 5
网友评论