HAproxy代理概念及理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gyshun/article/details/85558142

1. Haproxy概念

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这个功能。

2. Haproxy安装

直接通过yum进行安装,安装命令:yum -y install haproxy

3. Haproxy配置

在这里插入图片描述
在这里插入图片描述
实例:
在这里插入图片描述
其中
Check就是执行心跳检查
path_beg:是路径的前缀是什么
path_end:是路径的后缀是什么
注意:
一个Listen是由Frontend和Backend这两个绑定在一起使用的。
配置说明:
在这里插入图片描述
说明:

  1. haproxy的日志设置也可以发送到某一个机器单独保存
  2. 默认使用ulimit-n,这个很重要,一般情况不需要单独定义
    在这里插入图片描述
    说明:
  3. ulimit-n 是根据maxconn、maxpipes两个设置进行自动计算
    配置实例:
    在这里插入图片描述
    HAProxy日志记录设置:
    有两种方式:
    1.采用日志服务记录(通过rsyslog来执行)日志,需要在日志服务中设置
    第一步:去/etc/rsyslog.conf中启动UDP和TCP日志,如图:
    在这里插入图片描述
    第二步:增加相关的日志设置
    在这里插入图片描述
    第三步:重启rsyslog服务,命令:systemctl restart rsyslog
    第四步:设置/etc/haproxy/haporxy.cfg文件,如图:
    在这里插入图片描述
    这样交给rsyslog管理日志的设置就完成了。
    2.自己直接设置日志
    启用日志:
    在这里插入图片描述
    把上面的注释取消掉就OK。
    日志记录事例:
    在这里插入图片描述

4 Haproxy 代理配置

对Haproxy代理配置,包括四大块:Default、frontend、backend、listen,

4.1 bind

在这里插入图片描述
注意:

  1. 可以监听一个范围的端口
  2. 可以监听多个端口,以逗号隔开

4.2 balance

在这里插入图片描述
注意:

  1. balance是负载均衡的策略,很重要
  2. roundrobin与static-rr区别:对于新增加的服务,roundrobin是动态增加进来,而static-rr就是增加进来,也不会使用,除非重启
  3. roundrobin是根据权重进行轮询的,对于权重也可以动态进行调整,动态生效
  4. static-rr:是根据权重进行轮询的,是静态的,调整了权重,需要重启服务
  5. leastconn:使用连接数最小的服务,主要长连接的协议中,如:LDAP、SQL等
  6. uri:广泛用于后端服务器是缓存服务器,能够提高缓存利用率(它是通过哈希和取模计算,能够保证每一个连接落在同一服务器上)
  7. source与uri基本是一样的,都是通过哈希算法选择服务,而source哈希的是IP,uri哈希的是URL

其中URL格式如下:
在这里插入图片描述

4.3 mode

mode是用来指定haproxy的工作模式。
Haproxy有两种工作模式:

  1. http:http协议模式对应用程序进行深度分析,支持7层的过滤、处理和转换等机制。
  2. tcp:是haproxy在客户端和服务端之间建立一个全双工的连接,不会对应用层协议做任何检查,对于SSL、Mysql等都应使用此模式。
    使用mode指定Haproxy模式,如图:
    在这里插入图片描述

4.4 server

server是为listen和backend定义各个服务器,格式如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其中param参数说明:
在这里插入图片描述

4.5 use_backend

use_backend就是指定使用哪一个后端,格式如下:
在这里插入图片描述

4.6 stats

stats是用来查看Haproxy状态的,通过地址:http://114.67.234.74:7080/haproxy?stats 可以进行查看,需要进行设置,如下图:
在这里插入图片描述
stats不能用在前端,可以用在default、Listen、backend中,一般通过stats auth来增加权限,如上图。
stats uri 是用来改变访问状态的地址,默认是/haproxy?stats,可以通过stats uri进行设置
也可以访问状态的地址的端口进行设定,如下图:
在这里插入图片描述
stats hide_version 用来隐藏版本。
stats admin 是具有管理功能的,具体功能如下:
在这里插入图片描述
下面是Stats对应的参数设置:
在这里插入图片描述
总结统计页面输出命令有如下:

  1. stats enable
  2. stats uri
  3. stats realm
  4. stats auth
  5. stats admin
    使用单独端口的配置如下:
    listen statspage
    bind:*:80
    stats enable
    stats auth admin:admin
    stats admin if true
    stats uri /admin?stats

4.7 自定义错误页面

Haproxy自定义错误页面主要有以下几个配置项:
errorfile
errorloc
errorloc302
其中errorfile格式 如下:
在这里插入图片描述

实例如下:
在这里插入图片描述

4.8 访问控制(http-request)

haproxy有两种访问机制:

  1. block
  2. http-request
    这两个访问机制都依赖ACL
    在这里插入图片描述

4.9 http-server-close

在这里插入图片描述

4.10 httpclose

在这里插入图片描述
option httpclose 就判断每一个连接中是否有Connection:close,如果没有,会自动增加,这样每一个连接就不是长连接。

4.11 redispatch

在这里插入图片描述

4.12 通过acl 进行重定向 redirect example

在这里插入图片描述
说明:
acl:用来定义具体的变量
redirect:根据变量来判断重定向,比如:redirect prefix https://mage.com.cn if login_page !secure
就是说如果进入的是登陆界面但是不是使用8080端口登陆的,就直接重定向到首页。

4.13 timeout connect

在这里插入图片描述
说明:设置连接超时时间

4.14 timeout client

在这里插入图片描述
说明:客户端非活动时间的设置,超过设置自动断开连接,和Web中的setion设置差不多。

4.15 timeout server

在这里插入图片描述
与客户端连接超时设置一样的

4.16 timeout http-keep-alive

在这里插入图片描述

4.17 timeout check

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/gyshun/article/details/85558142
今日推荐