标签:cat 延迟 bug format 控制 alt ip地址 lis 开端口
基本内容简介:官网:
http://www.haproxy.org
http://www.haproxy.com
文档:
https://cbonte.github.io/haproxy-dconv/
功能:
1 提供cookie的持久性,支持基于cookie进行调度
2 实现基于内容的交换,过载保护的高级流量管制
3 自动故障切换
4 以正则表达式为基础的控制运行时间
5 基于web页面的报表及高级日志记录
6 支持http反向代理|动态程序反向代理|数据库反向代理
安装:
yum install -y haproxy
配置文件解析:
主配置文件:
/etc/haproxy/haproxy.cfg
相关应用程序:
/usr/bin/halog
/usr/bin/iprange
主程序:
/usr/sbin/haproxy
服务server:
/usr/lib/systemd/system/haproxy.service
配置文件解析:global
global --全局配置
进程及安全配置相关的参数
性能调整相关参数
Debug参数
进程及安全管理:
chroot --禁锢haproxy进程在固定目录,降低安全风险
deamon --后台运行
user --用户
group --组
uid
gid
nbproc [n] 要启动的haproxy的进程数量,系统默认单进程,要求使用daemon模式
默认开启单进程
建议配置的数量小于等于cpu数量!
ulimit-n [n] 每个haproxy进程可打开的最大文件数,系统会自动指定
不建议手动设置!
daemon 后端方式运行,建议使用!
-db --禁用
如何使用前台模式:docker专用
/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -db
log 定义全局的syslog服务器,最多可定义两个
如何定义:
第一步:
在rsyslog配置文件中加入:
local2.* /var/log/haproxy.log
第二步:开启网络日志功能
$ModLoad imudp
$UDPServerRun 514
日志功能其它设置:
log <address> [len [n]]
address ---rsyslog服务器地址
len --记录日志长度 默认1024
max level --记录最大级别
facility --记录设施
min level --最小级别
log-format <格式定义> --参考官方文档
日志管理---捕获信息
捕获请求和相应报文中的cookie并记录日志
capture cookie <name> len <n>
捕获请求报文中指定的首部并记录日志
capture request header <name> len <n>
示例:
capture request header X-Forwarded-For len 15
捕获响应报文中指定的首部并记录日志
capture response header <name> len <n>
例子:
capture response header Content-length len 9
capture response header Location len 10
性能调整参数:
maxconn <n> -- 设置每个进程所能接受的最大并发连接
默认是--4000
maxconnrate <n> --设置每个进程每秒钟所能建立的最大连接数
--属于传输层
--一个连接可以发起多个会话
maxse***ate <n> --设置每个进程每秒钟所能建立的最大会话数量
--属于应用层
maxsslconn <n> --每进程支持ssl的最大连接数
spread-checks <0..50,in percent> --健康检测延迟时长百分比,建议2-5之间
配置文件解析:proxies
defaults --为frontend,backend,listen提供默认配置
backend --后端--相当于nginx中的upstream {}
--指定将连接请求转发至后端服务器的相关设置
frontend --前端 --相当于nginx中的server()
--指定接收客户端连接监听套接字设置
相关配置参数:
bind --指定一个或多个前端监听地址和端口
使用格式:frontend|listen
1 bind *:80,*:443 --*可以省略
2 172.20.23.36:80,172.20.23.36:443
3 /run/ssl-frontend.sock user root mode 600 accept-proxy
listen --同时拥有前端和后端-适用于一对一环境
--指定完整的前后端设置
proxy [名称]:使用字母 数字- _ .:并区分字符大小写
mode --默认模式---http
效果展示:
格式:
frontend [名称]
bind *:80 --指定打开端口/IP
default_backend websrvs ---把服务反向代理到后端backend
backend [名称]
balance roundrobin
server [后端服务器名称] 192.168.23.41:80 check --后端主机
server [后端服务器名称] 192.168.23.40:80 check
[后端服务器名称] --可随意自定义
具体使用:简单配置
frontend web
bind *:80
default_backend httpd
backend httpd
balance roundrobin
server srv1 192.168.23.41:80 check
server srv2 192.168.23.40:80 check
[root@www13:37:55~]#for i in {1..10000};do curl 172.20.23.38; sleep 1; done
<h1>test RS2 server</h1>
<h1>test RS1 server</h1>
仅仅有一组时可以使用listen
使用格式:
listen httpd
bind 172.20.23.36:80
balance roundrobin
server srv1 192.168.23.41:80 check
server srv2 192.168.23.40:80 check
其它参数:
default_backend <backend> --用于frontend中
没有use_backend匹配时,使用默认的backend,用于frontend中
default-server [param*]
为backend中的各server设定默认选项
用于[defaults|listen|backend]
官网案例:
default-server inter 1000 weight 13
inter 1000 --设置多长时间健康检测-单位毫秒
weight 13 --权重
server段配置:
server <name> <address>:<port> [参数]
相关参数:
weight [n] --权重默认为1
maxconn [n] --当前后端server的最大并发连接数
backlog [n] --当server的连接数达到上限后的排队等待队列长度
backup --设定当前server为准备服务器sorry server
具体设置:
frontend web
bind 172.20.23.36:80
default_backend httpd
backend httpd
balance roundrobin
server srv1 192.168.23.41:80 check
server srv2 192.168.23.40:80 check
server sorryserver 127.0.0.1:8080 check backup --道歉服务器
道歉服务:
server sorryserver 127.0.0.1 check backup
check:对当前server做健康状态检测,只用于四层检测
addr:检测时使用IP地址
port:针对此端口进行检测
inter <n>:检测之间的时间间隔 默认为2000毫秒
rise <n>:连续多少次检测结果为成功才标记位可用-默认为2次
fall <n>:连续多少次检测结果为失败才标记不可用-默认为3次
tcp检测--传输层
ping检测--网络层
url检测--应用层
定义应用层检测方法:
httpchk|smtpchk|mysql-check|ssl-hello-chk|pgsql-check
disabled:标记为不可用
on-error--后端服务器故障时行动策略
-fastinter --加速检测速率
-fail-check --连续做健康检测
-sudden-death
-mark-down --直接标记为down
redir <prefix> 将发往此server的所有GET和HEAD类的请求重定向至
指定URL
具体用法:
frontend web
bind 172.20.23.36:80
default_backend httpd
backend httpd
balance roundrobin
server srv1 192.168.23.41:80 check
server srv2 192.168.23.40:80 check redir http://172.20.23.36:8080
测试需要:
for i in {1..1000};do curl -L http://172.20.23.36 ; sleep 0.5 ; done
基于cookie会话绑定:
cookie <value> 为当前server指定cookie值 实现基于cookie的会话黏性
首次请求后,服务器会在响应报文中添加cookie给客户端
再次请求时,客户端的请求报文会带有cookie
<name>:cookie名称 用于实现持久连接
rewrite --重写
insert --插入
prefix --前缀
nocache --当客户端和haproxy之间有缓存时 不缓存cookie
indirect
格式:
cookie <name> [rewrite|insert|prefix] [indirect] [nocache] [postonly]
[preserve] [httponly] [secure] [domain <domain>]* [maxidle <idle>] [maxlife <life>]
具体实现:
frontend web
bind 172.20.23.36:80
default_backend httpd
backend httpd
cookie web insert nocache
server srv1 192.168.23.41:80 check cookie rs1
server srv2 192.168.23.40:80 check cookie rs2
server sorryserver 127.0.0.1:8080 check backup
在curl命令中添加cookie值
curl -b web=rs1 172.20.23.36
haproxy统计接口启用相关的参数:web页面
启用统计页 基于默认的参数启动 stats page
stats enable
隐藏版本
stats hide-version
设置自动刷新时间间隔:
stats refresh <n>
自定义stats page uri 默认值/haproxy?stats
stats uri <xxx>
认证时的realm 示例 stats realm HAProxy\ Statistics
stats realm <xx>
认证时的账号和密码-可使用多次 默认-no authenticcation
stats auth <user>:<passwd>
启用stats page中的管理功能
stats admin {if|unless} <cond>
具体用法1:
stats admin if TRUE|LOCALHOST
具体管理指令:
Set state to MAINT --维护模式
Set state to DRAIN --逐渐排干净用户
Set state to READY --恢复正常
kill Session --杀死所有会话
页面基本介绍:
Hide ‘DOWN‘ servers --隐藏宕机后端主机
Refresh now --刷新
综合应用:
listen status
bind 192.168.23.36:80 --绑定内网网卡
stats enable --启用统计页
stats hide-version --隐藏版本
stats refresh 30 --刷新时间间隔
stats uri /test --自定义访问uri
stats realm please\ show\ your\ password --提示语句
stats auth tom:[密码] --账号密码
stats admin if TRUE --页面启用管理功能
Queue--队列
Cur--当前
Max-曾经最大峰值
Limit--限制值
Session rate--会话速率
Session--会话数量
Bytes--接收发送量
Denied--拒绝访问
Errors--错误访问
Warning ---警告信息
Server--后端服务器相关信息
工作模式:mode
工作模式:mode
模式类型:
tcp --基于layer4实现代理-可代理mysql|pgsql|ssl等协议
https时使用此模式--默认模式
具体实现:
listen ssh
bind :22222
balance roundrobin
mode tcp
server ssh1 192.168.23.40:22 check
server ssh2 192.168.23.41:22 check
http --仅当代理协议为http时使用--centos中haproxt实际的模式模式
health --工作为健康状态检查的响应模式-当连接请求到达时回应"OK"
后即断开连接--较少使用!
基于四层调度mariadb
listen mysql
bind *:3306
balance roundrobin
mode tcp
server ssh1 192.168.23.36:3306 check
server ssh2 192.168.23.37:3306 check
标签:cat 延迟 bug format 控制 alt ip地址 lis 开端口
原文地址:http://blog.51cto.com/13878078/2327454