介绍
HAProxy(高性能-代理)目前是一款使用广泛的软负载均衡器,它可以实现TCP/HTTP的负载均衡。
- 特性:
- 免费开源
- 最大并发量能达到5w
- 支持多种负载均衡算法,同时支持session保持
- 支持虚拟主机
- 拥有服务的监控页面,可以了解系统的实时运行状态
- 通常不会去做正向代理(squid)
- 通常会不会去做缓存服务(varnish)
- 不用于web服务器
- 不会改变请求和响应报文
- 不是基于数据包的负载均衡器,看不到ip数据包
- 参考文档:https://cbonte.github.io/haproxy-dconv/
- 安装
[root@node1 ~]# yum install haproxy ‐y/etc/haproxy/haproxy.cfg # 主配置文件/usr/lib/systemd/system/haproxy.service # 守护进程服务默认配置:[root@node1 ~]# cat /etc/haproxy/haproxy.cfg | grep ‐Ev "^#|^$"global# to have these messages end up in /var/log/haproxy.log you will# need to:## 1) configure syslog to accept network log events. This is done# by adding the '‐r' option to the SYSLOGD_OPTIONS in# /etc/sysconfig/syslog## 2) configure local2 events to go to the /var/log/haproxy.log# file. A line like the following can be added to# /etc/sysconfig/syslog## local2.* /var/log/haproxy.log#log 127.0.0.1 local2chroot /var/lib/haproxypidfile /var/run/haproxy.pidmaxconn 4000user haproxygroup haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/statsdefaultsmode httplog globaloption httplogoption dontlognulloption http‐server‐closeoption forwardfor except 127.0.0.0/8option redispatchretries 3timeout http‐request 10stimeout queue 1mtimeout connect 10stimeout client 1mtimeout server 1mtimeout http‐keep‐alive 10stimeout check 10smaxconn 3000frontend main *:5000acl url_static path_beg ‐i /static /images /javascript /stylesheetsacl url_static path_end ‐i .jpg .gif .png .css .jsuse_backend static if url_staticdefault_backend appbackend staticbalance roundrobin 定义后端算法server static 127.0.0.1:4331 check 定义后端serversbackend appbalance roundrobin #定义后端算法server app1 127.0.0.1:5001 check #定义后端serversserver app2 127.0.0.1:5002 checkserver app3 127.0.0.1:5003 checkserver app4 127.0.0.1:5004 checkglobal:全局配置项 default,frontend,backend,listen:代理相关配置项
- 全局配置
- log 定义全局的syslog服务器
- chroot 定义工作目录
- pidfile 指定PID
- maxconn 定义最大并发数
- user 用户名
- group 组名
- daemon 以守护进程方式工作于后台
- 默认配置
- mode 运行模式或协议
- log 定义每个实例启用事件和流量日志
- option httplog
- option dontlognull
- option http‐server‐close
- option forwardfor except 127.0.0.0/8
- option redispatch
- retries 3
- timeout http‐request 10s
- timeout queue 1m
- timeout connect 10s
- timeout client 1m
- timeout server 1m
- timeout http‐keep‐alive 10s
- timeout check 10s
- maxconn 定义最大并发数
- 监听配置:通过关联frontend和backend定义了一个完整的代理,通常只对tcp流量有限
实验
- 环境准备:
- web1 127.0.0.1:8081
- web2 127.0.0.1:8082
- HAProxy 192.168.10.10:8080
