当前位置: 首页 > news >正文

LVS--DR模式

目录

1 DR模式原理

2 DR模式请求回复过程

3 实验环境

4 开始实验

4.1 配置实验环境

4.2 Router 配置路由转发

4.3  LVS 设置转发规则

4.4 解决vip响应问题

4.5 Web1配置

4.6 Web2配置

5 测试效果


1 DR模式原理

  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间

  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链

  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP地址及端口,并将新的数据包发往POSTROUTING链

  4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将数据包最终发送给后端的服务器

2 DR模式请求回复过程

1、客户端向目标VIP发送请求:客户端发起HTTP/HTTPS等协议的请求,目标地址为虚拟IP(VIP)。

2、负载均衡器接收并处理请求:负载均衡器接收到请求后,会根据预设的负载均衡策略(如轮询、权重、最少连接数等),选择一个合适的后端服务器进行转发。

3、数据包转发至后端服务器:负载均衡器不会更改IP报文的内容,而是将数据包的目的MAC地址更改为所选后端服务器的MAC地址,然后将数据包发送到后端服务器所在的网络。

4、后端服务器处理请求和返回响应:后端服务器接收到数据包后,检查其目的IP地址是否与自己绑定的VIP相同,如果是,则处理该请求。将响应报文通过lo接口传送给物理网卡然后向外发出。处理完成后,后端服务器将响应数据包直接发回给客户端

5、客户端将收到回复报文。客户端认为得到正常的服务,而不会知道是哪一台服务器处理的

3 实验环境

序号                        源                                目的
1

192.168.239.200/24

mac:client

172.25.254.200/24

mac:Router-eth0

2

192.168.239.200/24

mac:Router-eth1

172.25.254.200/24

mac:LVS

3

192.168.239.200/24

mac:LVS

172.25.254.200/24

mac:web1

4

172.25.254.200/24

mac:web1-eth0

172.25.254.100/24

mac:Router-eth1

5

172.25.254.200/24

mac:Router-eth0

172.25.254.100/24

mac:client

4 开始实验

4.1 配置实验环境

# Client
[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
address1=192.168.239.200/24,192.168.239.100
method=manual# Router
[root@router ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
address1=192.168.239.100/24
method=manual
[root@router ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection 
[connection]
id=eth1
type=ethernet
interface-name=eth1[ipv4]
address1=172.25.254.100/24
method=manual# LVS 配置
[root@LVS ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
address1=172.25.254.50/24,172.25.254.100
method=manual# web1
[root@web1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
address1=172.25.254.10/24,172.25.254.100
method=manual# web2
[root@web2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
address1=172.25.254.20/24,172.25.254.100
method=manual

4.2 Router 配置路由转发

# 虚拟机本身是不开启路由功能的,要想开启请在内核中开启路由转发功能[root@mysql-03 test]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0[root@mysql-03 test]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
[root@router ~]# sysctl -p
net.ipv4.ip_forward = 1

4.3  LVS 设置转发规则

# 给环回接口填上
[root@LVS test]# ip addr add 172.25.254.200/32 dev lo# 设置转发规则
[root@LVS test]# ipvsadm -A -t 172.25.254.200:80 -s wrr
[root@LVS test]# ipvsadm -a -t 172.25.254.200:80 -r 172.25.254.10 -w 1 -g
[root@LVS test]# ipvsadm -a -t 172.25.254.200:80 -r 172.25.254.20 -w 1 -g# 查看规则
[root@LVS ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.200:80 wrr-> 172.25.254.10:80             Route   1      0          5         -> 172.25.254.20:80             Route   1      0          6 

4.4 解决vip响应问题

DR 模型中各主机上均需要配置 VIP ,解决地址冲突的方式有三种:
  • (1)在前端网关做静态绑定
  • (2)在各RS使用arptables
  • (3)在各RS修改内核参数,来限制arp响应和通告的级别
限制响应级别 :arp_ignore
  • 0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
  • 1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
限制通告级别 :arp_announce
  • 0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
  • 1:尽量避免将接口信息向非直接连接网络进行通告
  • 2:必须避免将接口信息向非本网络进行通告

4.5 Web1配置

# 增加VIP
[root@web1 test]# ip addr add 172.25.254.200/32 dev lo# 查看网关是否指向路由器
[root@web1 test]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.254.100  0.0.0.0         UG    100    0        0 eth0
172.25.254.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0[root@web1 test]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web1 test]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@web1 test]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web1 test]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

4.6 Web2配置

# 增加VIP
[root@web2 test]# ip addr add 172.25.254.200/32 dev lo# 查看网关是否指向路由器
[root@web2 test]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.254.100  0.0.0.0         UG    100    0        0 eth0
172.25.254.0    0.0.0.0         255.255.255.0   U     100    0        0 eth0[root@web2 test]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@web2 test]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@web2 test]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@web2 test]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore


5 测试效果

[root@client ~]# for i in {1..10}
> do
> curl 172.25.254.200
> done
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2
this is web1
this is web2

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 游戏盾是什么,如何保护网络游戏的安全
  • 大模型日报 2024-08-07
  • 用录制好的视频文件模拟PC电脑摄像头进行无人值守直播/抖音直播/视频号直播/快手直播
  • 将本地微服务发布到docker镜像二:
  • Linux下安装Go语言环境的详细指南
  • 给本地设备搭建一个云端语音助手
  • Rider中修改默认文件关联,自定义打开方式
  • opencascade TopoDS_Builder 源码学习
  • Apache Doris + Iceberg 快速搭建指南|Lakehouse 使用手册(三)
  • Openwrt常用说明
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • 【Linux】:环境变量
  • 收银机打印机相关知识 windows7 查看打印机名称--未来之窗智慧经营收银系统百科
  • Linux OS:线程封装 | RAII封装锁 | 随机数运算任务封装
  • 华为校招机试 - 电影知识图谱和查询系统(20240605)
  • Apache的80端口被占用以及访问时报错403
  • JavaScript函数式编程(一)
  • Service Worker
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Twitter赢在开放,三年创造奇迹
  • ViewService——一种保证客户端与服务端同步的方法
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 前端相关框架总和
  • 微信公众号开发小记——5.python微信红包
  • 一天一个设计模式之JS实现——适配器模式
  • No resource identifier found for attribute,RxJava之zip操作符
  • 阿里云ACE认证之理解CDN技术
  • 国内开源镜像站点
  • $ git push -u origin master 推送到远程库出错
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (03)光刻——半导体电路的绘制
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (1)SpringCloud 整合Python
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (分布式缓存)Redis持久化
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (三)docker:Dockerfile构建容器运行jar包
  • (十)T检验-第一部分
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)大道至简,职场上做人做事做管理
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)使用VMware vSphere标准交换机设置网络连接
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .NET文档生成工具ADB使用图文教程
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • :“Failed to access IIS metabase”解决方法
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • @vue/cli脚手架
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [18] Opencv_CUDA应用之 基于颜色的对象检测与跟踪
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [BZOJ4010]菜肴制作
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)