代理相关配置:
- frontend 用于定义一系列监听的端口,这些端口可接受客户端请求并与之建立连接
- backend 用于定义一系列后端服务器,代理将会将对应客户端的请求转发至这些服务器
- listen 通过关联前端和后端定义一个完整的代理
frontend
1.1 mode 参数
mode概念: 设置haproxy实例运行的协议
mode语法: mode {tcp|http}
- tcp 实例运行与tcp模式,不对7层报文做任何检查,通常用于SSL SSH MYSQL等应用
- http 实例运行于http模式,客户端请求服务端,服务端重新封装请求报文,请求后端真实节点
frontend web
mode http
bind *:80
default_backend webservers
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check
server web02 192.168.1.254:81 check
1.2 bind 参数
- bind概念 设置haproxy实例运行的端口
- bind语法 bind
:<port_range> interface - address 可选选项 其可以为主机名 ipv4 ipv6地址或者,将其指定为或者0.0.0.0时,将监听当前系统的所有ipv4地址;
- port_range 可以是一个特定的TCP端口 也可以是一个端口范围 如 8080-9090;
- interfack 指定物理接口名称,仅能在linux系统上使用 其不使用接口别名 只有管理有权限指定绑定的物理接口
bind实例:
#----------------
# listen 中定义 bind
#-----------------
listen proxy.yangyijing.cn
bind *:80
mode tcp
server web1 192.168.1.254:80
#-----------------
# frontend中定义的bind
#-----------------
frontend proxy.yangyijing.cn
bind *:8899-9090
mode http
use_backend webcluster
1.3 macconn参数
- maxconn概念: 设定一个前端的最大并发连接数,对于大型站点尽可能提高此值,从而避免haproxy无法应答用户请求,此值在此的定义不能高出global段中的定义
- maxconn注意: haproxy会为每个连接维持两个缓冲,每个缓冲大小为8kb,加上其他的数据。每个连接大约占用17kb的RAM空间,这意味着经过适当优化后,1GB的可用RAM空间将能维护40000-50000并发连接
- maxconn语法: maxconn
global
maxconn 5000
defaults
maxconn 4000
frontend web
mode http
bind *:80
maxconn 3000
default_backend webservers
1.4 server参数
- 为后端声明一个server 节点信息 因此不能由于default和frontend区段
- server语法: server
: [param]
1.name 为此服务器指定表示名称,会出现在日志文件中
2.address 服务器的ip地址 也支持可解析的主机名称
3.port 指定将连接所发送节点的目标端口 如未设定,则使用客户端请求的端口
4.param 为此服务器设定的一系列参数
1.4.1 backup
- backup设定为备用服务器
- 在负载均衡场景中,所有的正常server均不可用时,此backup节点会顶替提供服务
1.4.2 check
对此server进行tcp的健康状态检查
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check
server web02 192.168.1.254:81 check
server web03 192.168.1.254:82 check backup
1.4.3 inter
设定健康检查的间隔时间 单位为毫秒 默认为2000毫秒 2s
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check inter 3000
server web02 192.168.1.254:81 check inter 3000
server web03 192.168.1.254:82 check inter 3000
1.4.4 rise
设置离线状态转至成功状态需要成功检查的次数
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check inter 3000 rise 2
server web02 192.168.1.254:81 check inter 3000 rise 2
server web03 192.168.1.254:82 check inter 3000 rise 2
1.4.5 fall
设置正常状态转换为不可用状态,需要检查的次数
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check inter 3000 rise 2 fall 3
server web02 192.168.1.254:81 check inter 3000 rise 2 fall 3
server web03 192.168.1.254:82 check inter 3000 rise 2 fall 3
1.4.6 maxconn
- 指定此服务器接收的最大并发连接数
- 如果发此服务器的连接数高于指定的值 多余的请求将放置队列
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check inter 3000 rise 2 fall 3 maxconn 3000
server web02 192.168.1.254:81 check inter 3000 rise 2 fall 3 maxconn 3000
1.4.7 maxqueue
- 设置请求队列的最大长度
- 当请求超过maxconn设定的数值,剩余请求进入排队状态,排队的最大长度有maxqueue决定
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check inter 3000 rise 2 fall 3 maxconn 3000 maxqueue 200
server web02 192.168.1.254:81 check inter 3000 rise 2 fall 3 maxconn 3000 maxqueue 200
1.4.8 wight
权重
backend webservers
balance roundrobin
server web01 192.168.1.254:80 check inter 3000 rise 2 fall 3 maxconn 3000 maxqueue 200 weight 1
server web02 192.168.1.254:81 check inter 3000 rise 2 fall 3 maxconn 3000 maxqueue 200 weight 8
for i in {1..10};do curl http://192.168.1.137;done
254-81
254-81
254-81
254-82
254-81
254-81
254-81
254-81
254
254-81