目录
1. DR模式的工作原理
在一台主机上面搭建lvs服务器,设置lvs的工作模式是DR模式,lvs仅仅是一个调度器,它会把客户端的请求转发给后备服务器
DR模式直接由后备服务器把数据返回给客户端,不需要逆向发送数据包,此时lvs只有一个职责就是专注做调度,效率很高,此时lvs调度器叫做DS调度器(director server),RS是真正的后端web服务(realserver)
过程的数据流向:
客户端(client)发送请求给lvs调度器(DS),DS调度器先把请求发往prerouting链(内核空间kernalspace),确定请求的是不是VIP(虚拟ip)
到了INPUT链之后,
如果请求的是集群服务,会在这里修改MAC地址,把源MAC地址改为DS的MAC地址,把目的MAC地址改为RS的MAC地址
此时IP仍然不变,处理完成后把请求发往postrouting链,检测请求的是否为RS(会检测请求的MAC地址)
如果是,接受请求,把请求通过回环接口发送到出口的网卡,再发回给客户端,数据在系统内的交流用的是回环接口,与外部的交流用的是网卡ens33
DR模式高效的原因就是RS服务器会直接响应客户端的请求,发送的请求一直往前发送数据包,不会再返回数据包给调度器
prerouting,input,postrouting都是iptables防火墙里面的链
流程:
Client发送请求 --> DS(调度器) --> prerouting --> INPUT --> postrouting --> RS(真正的服务器)–> lo回环接口 --> 网卡eth0 --> Client
2. DR模式中的名词解释
DS | 调度器,lvs的前端设备 |
---|---|
RS | 真正提供服务的后端服务器 |
RIP | 后端服务器的ip地址 |
DIP | 调度器和后端服务器通信的ip |
源IP CIP | 客户端的IP |
目的IP VIP | (设置的统一入口),对外公布的ip,客户请求进来的ip |
源MAC地址 | DS调度器的MAC地址 |
目的MAC地址 | RS真正服务器的MAC地址 |
3. DR模式下的健康检测原因
- lvs的DR模式和TUN模式都是后端服务器是正常工作
- 当lvs集群中的一台后备服务器挂了之后,为了不影响客户的正常访问,应该将它从集群当中踢出去,让客户不再轮询访问
- 调度器只把客户端的请求转发给状态好的那台web服务器,否则客户端是一会可以访问,一会不能访问,会影响访问效果
- 一个集群的web服务器上面的资源一模一样,访问哪个客户根本感觉不到。
开启apache又再次回复正常
4. 在lvs的DR模式下实现健康检测
4.1 搭建DR模式
在lvs调度器上面:(注:列出的ip和使用的ip有些差别,只是方便查看)
ipvsadm -C清除之前的隧道策略
modprobe -r ipip删除隧道模块
ipvsadm -A -t 172.25.254.100:80 -s rr
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.12:80 -g
ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.13:80 -g
systemctl restart ipvsadm.service
cat /etc/sysconfig/ipvsadm
ipvsadm -ln
ip addr add 172.25.254.100/24 dev eth33
ip a
- 后端两台服务器(server3/2)都要卸载ipip模块并且添加ip
4.2 使用ldirectord插件解决此问题,使客户可以稳定访问
- 在真机(客户端)搭建共享yum源
- lvs调度器使用yum源
- 安装ld插件
rpm -qc ld
rpm -qpl ld
cp 配置文件 /etc/ha.d/
vim /etc/ha.d/ldirectord.cf编辑设置信息
fallback 表示调度器自己的回环接口,两台RS都挂了就访问这个
4.3 自动实现健康检测的测试
systemctl restart httpd (server3恢复后)