HAPROXY代理MYSQL(TCP)、Redis(TCP)、HTTP
TIPS
- mysql、redis代理中timeout connect、timeout client是关键
- 编辑系统日志文件配置 vim /etc/rsyslog.conf
在文件末尾追加:local0.* /var/log/haproxy/haproxy.log
haproxy.cfg
global
maxconn 40000
ulimit-n 50000
log 127.0.0.1 local0 err
uid 200
gid 200
chroot /usr/local/haproxy
daemon
pidfile /usr/local/haproxy/logs/haproxy.pid
defaults
log global
# 所处理的类别[7层:http;4层:tcp]
mode http
# 3次连接失败就认为服务不可用
retries 3
# 日志类别http日志格式
option httplog
# 不记录健康检查的日志信息
option dontlognull
# serverid对应服务器宕掉后,强制定向到其他健康的服务器
option redispatch
#当服务器负载很高的话,自动结束到当前处理比较久的连接
option abortonclose
# 最大连接数
maxconn 8192
# 连接超时
timeout connect 120s
# 客户端连接超时
timeout client 120s
# 心跳检测超时
timeout server 5s
# 监控页面
listen admin_stats
bind 0.0.0.0:81
mode http
option httplog
maxconn 100
stats refresh 30s
stats uri /stats
stats realm Crushlinux\ Haproxy
stats auth admin:admin
stats hide-version
stats admin if TRUE
# mysql代理
listen mysql_proxy
bind 0.0.0.0:30365
# 监听4层 模式
mode tcp
option tcplog
# 负载均衡方式为轮询
balance roundrobin
# 保持探测数据包
option tcpka
# 连接超时
timeout connect 8h
# 客户端连接超时
timeout client 8h
# 中间件ip地址和端口,权重
server mysql01 127.0.0.1:3306 check inter 3000 fall 3 rise 5
# redis代理
listen redis_proxy
bind 0.0.0.0:16379
# 监听4层 模式
mode tcp
option tcplog
# 负载均衡方式为轮询
balance roundrobin
# 保持探测数据包
option tcpka
# 连接超时
timeout connect 300s
# 客户端连接超时
timeout client 300s
# 中间件ip地址和端口,权重
server redis01 127.0.0.1:6379 check inter 3000 fall 3 rise 5
# zookeeper代理
listen zookeeper_proxy
bind 0.0.0.0:12181
# 监听4层 模式
mode tcp
option tcplog
# 负载均衡方式为轮询
balance roundrobin
# 保持探测数据包
option tcpka
# 中间件ip地址和端口,权重
server zookeeper01 127.0.0.1:2181 check inter 3000 fall 3 rise 5
# 相关应用代理
frontend equipment_proxy
bind 0.0.0.0:80
log 127.0.0.1 local0 err
mode http
option httplog
# 前缀匹配
acl equipment_path path_beg -i /equipment-management /fweb-security-server /static /fileservice
use_backend equipment_server if equipment_path
acl equipment_wechat_path path_beg -i /equipment-wechat
use_backend equipment_wechat_server if equipment_wechat_path
backend equipment_server
server equipment_server01 127.0.0.1:80 check inter 3000 fall 3 rise 5
backend equipment_wechat_server
server equipment_wechat_server01 127.0.0.1:80 check inter 3000 fall 3 rise 5