一、haproxy简介
软件:haproxy---主要是做负载均衡的七层,也可以做四层负载均衡。
负载均衡是通过OSI协议对应的。
7层负载均衡:用的是7层http协议;
4层负载均衡:用的是tcp协议加端口号做的负载均衡。
ha-proxy概述
ha-proxy是一款高性能的负载均衡软件。因为其专注于负载均衡这一些事情,因此与nginx比起来在负载均衡这件事情上做更好,更专业。
ha-proxy的特点
ha-proxy 作为目前流行的负载均衡软件,必须有其出色的一面。下面介绍一下ha-proxy相对LVS,Nginx等负载均衡软件的优点。
•支持tcp / http 两种协议层的负载均衡,使得其负载均衡功能非常丰富。
•支持8种左右的负载均衡算法,尤其是在http模式时,有许多非常实在的负载均衡算法,适用各种需求。
•性能非常优秀,基于事件驱动的链接处理模式及单进程处理模式(和Nginx类似)让其性能卓越。
•拥有一个功能出色的监控页面,实时了解系统的当前状况。
•功能强大的ACL支持,给用户极大的方便。
haproxy官方文档网址:
https://cbonte.github.io/haproxy-dconv/
二、Haproxy配置文件
global //全局配置
log 127.0.0.1 local3 info //日志配置
maxconn 4096 //最大连接限制(优先级低)
user nobody
group nobody
daemon //守护进程运行
nbproc 1 //haproxy进程数
defaults //针对(listen和backend块进行设置如果块中没设置,则使用默认设置)默认配置
log global //日志使用全局配置
mode http //模式7层LB
maxconn 2048 //最大连接数(优先级中)
retries 3 //健康检查。3次连接失败就认为服务不可用
option redispatch //服务不可用后的操作,重定向到其他健康服务器
stats uri /haproxy //web页面状态模块功能开启
stats auth qianfeng:123 //状态模块认证(用户名qianfeng密码123)
contimeout 5000 //定义haproxy将客户端!!!请求!!!转发至后端服务器,所等待的超时时长
clitimeout 50000 //haproxy作为客户,和后端服务器之间!!!空闲连接!!!的超时时间,到时候发送fin指令
srvtimeout 50000 //haproxy作为服务器,和用户之间空闲连接的超时时间,到时候发送fin指令
#timeout connect 5000
#timeout client 50000
#timeout server 50000
frontend http-in //前端配置块。面对用户侧
bind 0.0.0.0:80 //面对用户监听地址和端口
mode http //http模式的LB
log global //日志使用全局配置
option httplog //默认日志格式非常简陋,仅包括源地址、目标地址和实例名称,而“option httplog参数将会使得日志格式变得丰富许多,其通常包括但不限于HTTP请求、连接计时器、会话状态、连接数、捕获的首部及cookie、“frontend”、“backend”及服务器名称,当然也包括源地址和端口号等。
option httpclose // 每次请求完毕后,关闭http通道
acl html url_reg -i \.html$ //1. 访问控制列表名称html。规则要求访问以html结尾的url时
use_backend html-server if html //2.如果满足acl html规则,则推送给后端服务器 html-server
default_backend html-server // 3:默认的后端服务器是 html-server
backend html-server //后端服务器名称为 html-server
mode http //模式为7层代理
balance roundrobin //轮循(rr)
option httpchk GET /index.html //允许用http协议检查server 的健康
cookie SERVERID insert indirect nocache //轮询的同时,根据插入的cookie SERVERID 的值来做会话保