LVS-DR模式

简介

LVS-DR模式,也是最常用的Ivs负载方式,DR DIRECT ROUTING 直接路由模式

数据流向

负载均衡lvs调度器,只负责请求和转发到后端的真实服务器,响应结果由后端服务器直接转发给客户端,不需要经过调度器的处理。减轻了LVS的负担,提高性能和稳定性。

LVS-DR模式的工作原理:

1、客户端发送请求到vip
2、LVS的调度器接受请求之后,根据算法选择一台后端真实的服务器,请求转发到后端的RS,请求报文的目的MAC地址,修改成后端真实服务器的MAC地址。转发
3、后端真实服务器接受请求,处理完成之后,由于后端服务器直接把响应结果转发给客户端,响应报文中的目的的MAC地址修改成客户端的MAC地址。直接把响应报文转发到客户端。
4、调度器,后端真实服务器都有vip地址,调度的地址和后端真实服务器在同一网段。

LVS-DR模式的特点

1、调度器的ip和真实服务器的ip必须在同一物理网络中
2、真实服务器的ip地址可以是私有地址,也可以是公网地址。如果配置的是公网,通过互联网可以直接访问RIP
3、调度器只做入口,但是不做网关。要把服务器的转发功能关闭
4、后端真实服务器的网关也不能指向调度器,真实服务器的数据包不允许经过调度器
5、后端真实服务器上,基于LO接口配置VIP的ip地址

ARP协议:网络层协议,将IP地址解析为物理MAC地址
ARP请求:主机A和主机B
ARP 解决局域网内部的通信。 ip地址和MAC地址映射
DR模式的调度器和后端服务器都在一个网段中,通过ARP请求实现局域网内部通信。

问题一:
由于调度器和后端真实服务器的都有相同的VIP地址,导致响应冲突,ARP通信紊乱???

对后端的真实服务器进行处理,真实服务器不响应针对VIP地址的arp请求
VIP地址使用LO的虚拟地址:arp_ignore
后端真实服务器只响应目的ip为本地IP,也就是RIP。后端服务器的真正IP地址。ens33网卡提供的地址。

问题二:
返回报文使用的源地址还是VIP地址,调度器也是VIP,怎么把响应返回到客户端不经过调度器呢???

后端真实服务器做一个内核参数的优化:arp_announce=2 系统不使用ip数据包的源地址,来设置ARO的请求。真实的物理网卡的地址。

调度器的内核优化

复制代码
1、关闭服务器作为网关的转发功能
net.ipv4.ip_forward = 0


2、控制是否发送ICMP的重定向消息,禁止重定向
net.ipv4.conf.all.send_redirects = 0 


3、禁止默认网络接口,就是调度网卡,发送icmp的重定向消息
net.ipv4.conf.default.send_redirects = 0

 
4、指明网卡设备,ens33不发送重定向消息
net.ipv4.conf.ens33.send_redirects = 0


5、把vip的地址绑定到lo:0,作为LVS的vip地址。标识。告诉调度器,进行转发请求的ip地址寻址。
route add -host 192.168.233.100 dev lo:0

web内核优化

复制代码
web内核优化

1、#设置lo接口忽略来自任何接口的ARP请求
net.ipv4.conf.lo.arp_ignore = 1

2、全部忽略设置lo接口仅会响应本地的IP地址,其他的接口ARP请求
net.ipv4.conf.lo.arp_announce = 2

3、所有接口忽略来自任务接口的ARP请求
net.ipv4.conf.all.arp_ignore = 1

4、所有接口仅会响应本地的IP地址的ARP请求,其他的接口的ARP请求全部忽略
net.ipv4.conf.all.arp_announce = 2

负载均衡算法设置

复制代码
修改VIP的调度算法:
ipvsadm -E -t 192.168.233.100:80 -s wrr

修改加权的轮询权重
ipvsadm -e -t 192.168.233.100:80 -r 192.168.233.20:80 -w 3

ipvsadm -ln 显示内容

LVS的负载均衡的工作方式:

复制代码
三种方式:NAT DR(用的最多) TUN(付费)

NAT:
·优点:配置简单
·缺点:性能瓶颈
真实服务器:any
支持的网络:私网
后端服务数量:low(10-20)

DR
·优点:性能最好
·缺点:调度服务器和后端服务器真实服务器不能跨网段
真实服务器:NO-ARP (请求只能到真实服务器)
支持的网络:后端服务器即可是内网也可以是公网
真实服务器数量: 100台

TUN 公司不用

实验需求

复制代码
setenforce 0
systemctl stop firewalld.service

test1 192.168.233.10 调度器
test2 192.168.233.20 web集群1
test3 192.168.233.30 web集群2
VIP地址:192.168.10.99
客户端: 随机选择。

test1 192.168.233.10 调度器

复制代码
1、创建虚拟网卡
ifconfig ens33:0 192.168.10.99/24

2、调度器内核优化
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

3、添加虚拟ip服务器 vip 及算法
ipvsadm -A -t 192.168.10.99:80 -s rr

4、在虚拟ip服务器 添加后端真实的ip 及
ipvsadm -a -t 192.168.10.99:80 -r 192.168.10.20:80 -g

5、把规则保存到
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service


删除虚拟ip服务器
ipvsadm -D -t x.x.x.x:80

修改算法
ipvsadm -E -t 192.168.10.99:80 -s dh

test2 192.168.233.20 web集群1
test3 192.168.233.30 web集群2

复制代码
1、cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
..........
DEVICE=lo:0
IPADDR=192.168.10.99
NETMASK=255.255.255.255
ONBOOT=yes
..........

2、重启网卡
ifup ifcfg-lo:0

3、把vip绑定到lo:0循环网卡上,作为LVS的vip地址。标识。告诉调度器,进行转发请求的ip地址寻址。
route add -host 192.168.10.99 dev lo:0

4、vim /etc/sysctl.conf
..........
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
..........

5、立即生效
sysctl -p

编译安装路径
cd /usr/local/nginx/html/
vim index.html 
.........

192.168.10.20
设置其ip地址

.........


或


yum安装
vim /usr/share/nginx/html
.........

nginx-----1

.........

客户端: 随机选择。

相关推荐
醉城夜风~8 分钟前
CSS元素显示模式(display)
前端·css
AI大模型-小华1 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
2601_965798472 小时前
Is Hygia Good for Maid & Janitorial Sites? Technical Audit
服务器·网络·数据库
蚰蜒螟3 小时前
从内核源码看Linux启动:chroot、execve与MS_MOVE的协奏曲
linux·服务器·网络
做前端的娜娜子3 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅3 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni4 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
来者皆善4 小时前
ZYNQ linux上使用 USB CDC ACM
linux·运维·服务器
缓慢更新5 小时前
企业档案管理系统迁移实录:从文件服务器到智能检索引擎
运维·服务器