haproxy是基于4层协议的转发负载工具,与nginx(主7层)一样,适合做tcp的负载均衡(eg.mysql),使用该功能 主要分3步。
1.确认linux当前系统支持tcp转发
2.安装haproxy
3.配置文件
确认认linux当前系统支持tcp转
vim /etc/sysctl.conf
vim /etc/sysctl.conf.d/xx.conf
检查文件中 是否有
net.ipv4.ip_nonlocal_bind=1
net.ipv4.ip_forward=1
没有则加上
然后 sysctl -p 启用
安装haproxy
yum install proxy
也可解压后install
systemctl start haproxy
然后
systemctl satus haproxy
查看是否正常
配置文件
vi /etc/haproxy/haproxy.cfg
#tcp转发
frontend in
mode tcp
bind *:9999
default_backend out
log global
option tcplog
option dontlognull
option nolinger
option forwardfor
backend out
#当第一个负载满之后,才请求到第2个tcp服务
balance first
server s1 localhost:9998 check port 9998 inter 1000 fall 1 on-marked-up shutdown-backup-sessions
#此处backup标记,代表非backup全挂之后走过来,当上线时把backup节点的tcp都踢掉
server backup localhost:9997 check port 9998 inter 1000 fall 1 backup
如以上配置文件 ,设置了 9999端口转发到9998 和9997 ,只有9998连接满了,才到9997
可以用 nc -l -p 9997 进行模拟,值得注意的是,当前这nc命令行只能连接一个tcp客户端,如果是自有程序就可以用多线程啥的。
cpu匹配,如有需要可用 cpu-map
日志采用rsyslog
global标签中配置:
log 127.0.0.1 local6(此处local6代表6等级,建议local6 info级别,还有local1-7)
然后 vim /etc/rsyslog.cnf
设置 local6 /var/log/haproxy.log
当tcp断开连接时,日志中会打印
最后:
监控页面配置
########统计页面配置########
listen admin_stats
bind yourip:9990 #监听端口
mode http #http的7层模式
option httplog #采用http日志格式
#log 127.0.0.1 local0 err
maxconn 10
stats refresh 30s #统计页面自动刷新时间
stats uri /
打开yourip:9990就可以看到监控了