目录
前言:本章实验的环境与上一篇一样。如果环境不知道的可以查看上一篇哦。
一、基于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