haproxy实现负载均衡详解 之 (高级功能配置)

目录

一、基于cookie的会话保持

1.1语法

 1.2 配置

 二、haproxy 状态页

2.1 状态页配置项

2.2 配置

三、IP透传

3.1 七层透传

 3.1.1 web1上利用httpd进行IP透传

​3.2 四层透传

3.2.1 在web2上利用nginx进行IP透传

四、ACL---访问控制列表

 4.1 ACL配置选项

 4.1.1ACL-Name名称

4.1.2ACL-criterion匹配规范:判断条件

4.1.3 ACL-flags 匹配模式

4.1.4 ACL-operator 具体操作符

4.1.5 ACL-value 操作对象

4.1.6 多个ACL的组合调用方式

4.2 示例

4.2.1 hdr_dom 请求的host名称

 4.2.2 hdr_beg

4.2.3 基于IP 

 4.2.4 拒绝访问

4.2.5 基于浏览器 

4.2.6 基于使用php------后缀名动静分离 

 4.2.7 访问路径名实现动静分离

 五、自定义错误页面

在haproxy上面编写定义错误页面

然后在配置文件中添加错误页面配置。

六、haproxy 四层负载

修改数据库id:

修改haproxy配置文件

  最后我们要放行用户权限

 七、haproxy的https实现

在haproxy上配置证书密钥

 修改haproxy配置文件:


前言:本章实验的环境与上一篇一样。如果环境不知道的可以查看上一篇哦。

一、基于cookie的会话保持

cookie value :为当前 server 指定 cookie 值,实现基于 cookie 的会话黏性,相对于基于 source 地址hash 调度算法对客户端的粒度更精准,但同时也加大了 haproxy 负载,目前此模式使用较少, 已经被session 共享服务器代替。
注意:不支持 tcp mode ,使用 http mode

1.1语法

语法:

cookie name [ rewrite | insert | prefix ][ indirect ] [ nocache ][ postonly ] [
preserve ][ httponly ] [ secure ][ domain ]* [ maxidle <idle> ][ maxlife ]
name:        #cookie 的 key名称,用于实现持久连接
insert:      #插入新的cookie,默认不插入cookie
indirect:    #如果客户端已经有cookie,则不会再发送cookie信息
nocache:     #当client和hapoxy之间有缓存服务器(如:CDN)时,不允许中间缓存器缓存cookie,
              #因为这会导致很多经过同一个CDN的请求都发送到同一台后端服务器

 1.2 配置

在配置文件/etc/haproxy/haproxy.cfg中配置下面的标红地方:

然后我们可以指定cookie值进行访问看是否实现负载均衡。结果如下所示

 还可以在浏览器中查看,就可以查看到cookie值。

 二、haproxy 状态页

 通过web界面,显示当前HAProxy的运行状态。

2.1 状态页配置项

stats enable #基于默认的参数启用stats page
stats hide-version #将状态页中haproxy版本隐藏
stats refresh <delay> #设定自动刷新时间间隔,默认不自动刷新
stats uri <prefix> #自定义stats page uri,默认值:/haproxy?stats
stats auth <user>:<passwd> #认证时的账号和密码,可定义多个用户,每行指定一个用户
#默认:no authentication
stats admin { if | unless } <cond> #启用stats page中的管理功能

2.2 配置

在配置文件添加配置页:

listen stats
    mode http
    bind *:9999
    stats enable
    stats refresh 3
    stats uri /status
    stats auth lee:lee

 测试:

 我们设置了刷新之就可以自动刷新。

 

三、IP透传

3.1 七层透传

web 服务器中需要记录客户端的真实 IP 地址,用于做访问统计、安全防护、行为分析、区域排行等场景。
在全局中通过option forward for  实现IP透传

 3.1.1 web1上利用httpd进行IP透传

然后我们利用 在web1上面配置httpd服务查看测试:

#先停止nginx
[root@web1 ~]# systemctl disable nginx
[root@web1 ~]# systemctl stop nginx
#下载httpd
[root@web1 ~]# dnf install httpd -y
[root@web1 ~]# echo webserver1 - 172.25.254.10 > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd

在没有设置前通过curl712.25.254.100测试,再其其日志里默认是看不到IP的。

然后我们通过在httpd的配置文件中日志那一部分添加内容来进行IP透传 

再来测试通过curl712.25.254.100完再查看日志:就出现了IP,这个就是httpd的七层IP透传

 3.2 四层透传

3.2.1 在web2上利用nginx进行IP透传

修改配置文件:

然后修改nginx配置文件来实现透窗,添加如下标红圈起的地方

再来测试通过curl712.25.254.100完再查看日志:相比之前就出现了IP

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左水水%

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值