介绍
TCP/HTTP反向代理,四层负载均衡,适合高可用环境。Linux6.4版本后haproxy已随base仓库收录进来。根据官方数据,其最高极限支持10G的并发;
HAproxy文档地址
- 主程序:/usr/sbin/haproxy
- 主配置文件:/etc/haproxy/haproxy.cfg
- 启动文件:/usr/lib/systemd/system/haproxy.service
- 安装:yum -y install haproxy调度器实现一个负载均衡,两台客户端安装httpd/nginx(实验环境注意关闭iptables/firewalld和selinux),并建议时间全部同步(chrony服务或直接ntpdate 172.18.0.1/172.16.0.1)
- **配置haproxy配置文件,vim /etc/haproxy/haproxy.cfg (配置之前好习惯把配置文件备份),定义frontend前端和backend后端两个字段 **:
frontend myweb *:80 (frontend后名字要唯一,绑定的地址和要监听的端口)
default_backend realserver
backend realserver (backend后端服务器名字也要唯一,并要和上面default_backend定义相同)
balance roundrobin (调度算法,默认轮询)
server web1 172.18.250.238:80 check (负载均衡web1,健康检查)
server web2 172.18.251.93:80 check (负载均衡web2,健康检查)
随后启动haproxy服务,可用ss -tnlp查看80端口是否监听,然后访问调度器IP测试轮询后台web页面效果。
- 而且haproxy还有相关的统计接口(统计页):
backend realserver
balance roundrobin
server apache 172.18.250.238:80 check weight 2
server nginx 172.18.251.93:80 check weight 1
stats enable (启用统计页;基于默认的参数启用页面信息,通过访问此页面能显示华丽的web状态界面,uri:调度器IP/haproxy?stats),如:http://172.18.251.139/haproxy?stats
stats uri /du'web (上述毕竟是默认uri页面信息,不安全,可以自己定义页面的uri)
测试图:
stats realm "Laoduweb" (定义认证时弹出对话框的说明信息)
stats auth wo:123 (定义web认证时用户名和密码)
stats admin if TRUE (启用stats page中的管理功能,即可对后端web软控制)
stats hide-version (隐藏页面版本信息)
前面提到定义frontend前端和backend后端两个字段,也可使用listen参数:前端fronted调用后端backend,后端也只供前端调用,一对一关系,例调度后台ssh服务端:
listen ssh
bind :22022 (自己定义端口)
balance leastconn(调度算法为长连接)
mode tcp (工作模式:tcp/http/healthy)
server ssh1 172.18.250.238:22 check
server ssh2 172.18.251.93:22 check
测试图:
用其他PC测试:ssh -p 22022 root@172.18.251.139(这为调度器IP),并根据调度算法为最少链接(使用在具有较长会话的场景);调度mysql时与上述ssh类似。