环境
CentOS Linux release 7.9.2009 (Core)
HAProxy version 2.3.6-7851701, released 2021/03/03
IP: 192.168.0.1
Docker 安装
建立haproxy配置文件
# 新建目录
mkdir -p /etc/haproxy
# 备份配置文件
cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.`date +%Y%m%d_%H%M%S`
# 写入配置文件
cat << \EOF > /etc/haproxy/haproxy.cfg
global # 全局参数配置
daemon # 后台运行
nbthread 16 # 线程数,新版本已抛弃nbproc参数
log 127.0.0.1 local3 info # 定义日志分别输出到local3、4
log 127.0.0.1 local4 warning # 日志级别不同
defaults # 默认参数配置
mode tcp # 代理模式tcp、http
retries 3 # 检测次数
maxconn 32768 # 每一个代理的最大连接数
timeout connect 5s # 成功连接到一台服务器的最长等待时间
timeout client 5s # 连接客户端发送数据时的成功连接最长等待时间
timeout server 5s # 服务器端回应客户度数据发送的最长等待时间
listen proxy01 # 代理01,名字自定义
bind *:5000 # 侦听IP和端口,单一IP或多个,0.0.0.0:5000 | 192.168.0.1:5000
mode http # 代理模式,覆盖了上面默认配置
balance roundrobin # 负载均衡方式,轮询
option httplog # 日志记录HTTP请求
option dontlognull # 日志中将不会记录空连接
option forwardfor # 启用X-Forwarded-For,在requests头部插入客户端IP发送给后端的server,使后端server获取到客户端的真实IP
http-request set-header Host www.examplesite.com # 设定头,有时候后端服务器需要,不需要可不设置
# HAProxy持久连接方式,最后说明
option http-server-close
option http-pretend-keepalive
# 日志格式
#log-format %ci:%cp\ %si:%sp\ %B\ %U\ %ST\ %r\ %b\ %f\ %bi\ %hrl\ %hsl\
log-format {
"haproxy_clientIP":"%ci","haproxy_clientPort":"%cp","haproxy_dateTime":"%t","haproxy_frontendNameTransport":"%ft","haproxy_backend":"%b","haproxy_serverName":"%s","haproxy_Tw":"%Tw","haproxy_Tc":"%Tc","haproxy_Tt":"%Tt","haproxy_bytesRead":"%B","haproxy_terminationState"