haproxy.conf 配置文件
global
# 使用log关键字,指定使用127.0.0.1上的syslog服务中的local0日志设备,记录日志等级为info的日志
log 127.0.0.1 local0 info
# 修改haproxy的工作目录至指定目录并在放弃权限前执行chroot()操作
chroot /containers/loadbalancer/lb-nvhytpcd/
# 启用stats socket
stats socket /containers/loadbalancer/lb-nvhytpcd/stats.sock
# 设置运行haproxy的用户和组
user haproxy
group haproxy
# 定义每个haproxy进程的最大连接数
# 由于每个连接包括一个客户端和一个服务器端,所以单个进程的TCP会话最大数目将是该值的两倍
maxconn 100000
# 设定haproxy进程内核调度运行时一次性可以接受的连接的个数,较大的值可以带来较大的吞吐率,默认在单进程模式下为100,多进程模式下为8,设定为-1可以禁止此限制
tune.maxaccept 100000
tune.ssl.default-dh-param 2048
# 以后台形式运行harpoxy
daemon
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
defaults
# 启用该项,日志中将不会记录空连接
# 所谓空连接就是在上游的负载均衡器或者监控系统为了探测该服务是否存活可用时,需要定期的连接或者获取某一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接
option dontlognull
# 定义连接后端服务器的失败重连次数
# 失败次数超过此值后将会将对应后端服务器标记为不可用
retries 3
# 当使用了cookie时,haproxy将会将其请求的后端服务器的serverID插入到cookie中,以保证会话的SESSION持久性
option redispatch
maxconn 100000
# 设置连接客户端发送数据时的成功连接最长等待时间,默认单位是毫秒
timeout client 50s
# 设置服务器端回应客户度数据发送的最长等待时间,默认单位是毫秒
timeout server 50s
# 设置成功连接到一台服务器的最长等待时间,默认单位是毫秒
timeout connect 5s
# 客户端和服务器端通道非活动超时时间
timeout tunnel 1h
# 定义一个名为 lb-oauvwypx_80 的部分
listen lb-oauvwypx_80
# http_80_in定义前端部分监听的套接字
bind 0.0.0.0:80
bind :::80
# 定义为 tcp 模式 mode {http|tcp|health}
mode tcp
# 设置默认负载均衡方式,轮询方式
balance roundrobin
no log
timeout client 60s
timeout server 60s
# 使用 server 关键字来设置后端服务器
# lb-oauvwypx_80_i-dmfulowr_80
#
# 后端服务器名称
# 10.10.0.244:80
#
# 支持端口映射
# check inter 5000
#
# 接受健康监测,监测的间隔时长,单位毫秒
# [inter 2000]
#
# 分发的权重
# weight 10
#
# 监测正常多少次后被认为后端服务器是可用的
# rise 5
#
# 监测失败多少次后被认为后端服务器是不可用的
# fall 3
#
# 备份用的后端服务器,当正常的服务器全部都宕机后,才会启用备份服务器
# backup
server lb-oauvwypx_80_i-dmfulowr_80 10.10.0.244:80 weight 10 check inter 5000 rise 5 fall 3
listen lb-nvhytpcd_8089
# http 带 ssl 的模式 也就是 https
#
# 指定 pem 文件位置
# ssl crt
bind 0.0.0.0:8089 ssl crt /containers/loadbalancer/lb-nvhytpcd/lb-nvhytpcd_8089.pem no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1
bind :::8089 ssl crt /containers/loadbalancer/lb-nvhytpcd/lb-nvhytpcd_8089.pem no-sslv3 no-tlsv10 no-tlsv11 alpn h2,http/1.1
mode http
balance roundrobin
# 使用全局的日志配置
log global
log-format "%Tl",%{+Q}ci,"%fi:%fp",%{+Q}bi,%{+Q}r,%ST,%B,%{+Q}hr,%Tt
# 启用X-Forwarded-For,在requests头部插入客户端IP发送给后端的server,使后端server获取到客户端的真实IP
option forwardfor
option http-server-close
# 设置请求头长度
capture request header Host len 255
capture request header User-Agent len 255
capture request header Referer len 255
capture request header Cookie len 255
# http 请求超时
timeout http-request 10s
# http 保持链接时间
timeout http-keep-alive 55s
# 该服务器的SERVERID为xxx
# cookie xxx
server lb-nvhytpcd_8089_i-zxodhbyc_8089 192.168.10.3:8089 cookie i-zxodhbyc_8089 weight 10 check inter 5000 rise 5 fall 3
server lb-nvhytpcd_8089_i-alcfdqyx_8089 192.168.10.4:8089 cookie i-alcfdqyx_8089 weight 10 check inter 5000 rise 5 fall 3
listen lb-nvhytpcd_8444
bind 0.0.0.0:8444
bind :::8444
mode http
balance roundrobin
# 设置统计页面的uri为/admin?stats
# 监控统计也的URL路径(http://IP:19088/harpoxy-status)可以随意指定
stats uri /admin?stats
# 设置统计页面认证时的提示内容
# 密码框上的文本信息
stats realm Status
log global
log-format "%Tl",%{+Q}ci,"%fi:%fp",%{+Q}bi,%{+Q}r,%ST,%B,%{+Q}hr,%Tt
option forwardfor
option http-server-close
capture request header Host len 255
capture request header User-Agent len 255
capture request header Referer len 255
capture request header Cookie len 255
timeout http-request 10s
timeout http-keep-alive 55s
server lb-nvhytpcd_8444_i-zxodhbyc_8444 192.168.10.3:8444 cookie i-zxodhbyc_8444 weight 10 check inter 5000 rise 5 fall 3
server lb-nvhytpcd_8444_i-alcfdqyx_8444 192.168.10.4:8444 cookie i-alcfdqyx_8444 weight 10 check inter 5000 rise 5 fall 3
haproxy
命令
# 检查配置文件语法
haproxy -c -f /etc/haproxy/haproxy.cfg
# 以daemon模式启动,以systemd管理的daemon模式启动
haproxy -D -f /etc/haproxy/haproxy.cfg [-p /var/run/haproxy.pid]
haproxy -Ds -f /etc/haproxy/haproxy.cfg [-p /var/run/haproxy.pid]
# 启动调试功能,将显示所有连接和处理信息在屏幕
haproxy -d -f /etc/haproxy/haproxy.cfg
# restart。需要使用st选项指定pid列表
haproxy -f /etc/haproxy.cfg [-p /var/run/haproxy.pid] -st `cat /var/run/haproxy.pid`
# graceful restart,即reload。需要使用sf选项指定pid列表
haproxy -f /etc/haproxy.cfg [-p /var/run/haproxy.pid] -sf `cat /var/run/haproxy.pid`
# 显示haproxy编译和启动信息
haproxy -vv
网友评论