下面介绍的是HAProxy。

一、proxy基础
对于负载均衡集群来说,可以使用lvs、nginx、haproxy等来进行网络层反代。对于应用层的反代,没有使用lvs进行反代,但是可以使用apache(httpd)进行反代。

二、haproxy
1、haproxy的程序环境
主程序:/usr/sbin/haproxy
配置文件:/etc/haproxy/haproxy.cfg
unit文件:/usr/lib/systemd/system/haproxy.service

2、/etc/sbin/haproxy
global段:只需修改maxconn。
log:定义syslog服务器
nbproc:进程数量
ulimit-n:文件数(类似线程数量)
maxconn:并发连接数
maxconnrate:新连接数
maxse***ate:会话请求数
spread-check:健康检测时间比例

proxies配置段:
defaults:各种默认
frontend:处理前端请求
backend:处理后端请求
listen:用于网络层反代

3、haproxy的配置参数 ----------------proxies配置段
bind:端口绑定
例:listen http_proxy
bind :80,:443
bind 10.0.0.1:10080,10.0.0.1:10443
bind /var/run/ssl-frontend.sock user root mode 600 accept-proxy

balance:负载均衡算法
roundrobin:轮询,后端最多4095个主机
static-rr:静态轮询,后端主机数无限制
leastconn:长连接使用
first:自上而下
source:取余,然后使用一致性hash
uri:uri左边hash,然后取余
url_param:uri后半部分hash,然后取余
hdr:查http首部做hash,然后取余,否则轮询
rdp-cookie:据cookie值

hash-type:
map-based:映射表hash
consistent:一致性hash

4、后端server健康状态检查 -----------proxies配置段
健康状态检查参数:
server{....}
check:
addr:检测server时使用的IP地址
port:检测时使用的端口
inter:检测的时间间隔,单位毫秒
rise:达到指定次数,则server可用,默2
fall:达到指定次数,则server不可用,默3

cookie:(session管理)
  rewrite:重写cookie
  insert:后面插入
  prefix:前面插入
  indirect:间接插入
  nocache:不做缓存

5、haproxy的工作模式
tcp:网络层反代
http:应用层反代,仅代理http协议
health:健康状态检测的响应模式

6、统计接口的params -----------proxies配置段
stats enable:统计页,默认开启
stats uri:访问接口的uri
stats realm:统计接口认证范围
stats auth:账户和密码
stats hide-version:掩藏版本信息
stats admin:利用条件开启接口

7、haproxy首部 ------------proxies配置段
option forwardfor
默认添加"X-Forwarded-For"首部;
expect:指定的网络地址除外
header:指定首部,不采用默认
例:
option forwardfor except 127.0.0.1
option forwardfor header X-Client

8、haproxy的error返回值 -----proxies配置段
errorfile
errorloc

9、动静分离
use_backend:对于前端匹配acl的请求,转到backend。

三、acl
1、acl格式
acl [flags] [operator] []

criterion:
dst:目的地址
dst_port:目的端口
src:源地址
src_port:目的地址

flag:
-i:忽略大小写
-m:匹配模式

value:布尔值、整数、字符串、正则表达式、16进制数。