LVS--DR模式

news2024/11/23 15:50:49

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何用数字便签管理工作任务?

在快节奏的工作环境中,我们每天都需要处理大量的工作任务。如果仅仅依靠个人的记忆力和精力,很容易导致任务遗漏或者延误。随着数字化技术的发展,选择一款功能强大的数字便签软件已经成为我们管理工作任务的更好选择。 在众多的数字便签软件…

Java零基础之多线程篇:讲解并发集合

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

c语言11天笔记

函数的概述 函数:实现一定功能的,独立的代码模块。我们的函数一定是先定义,后使用。 使用函数的优势: 1. 我们可以通过函数提供功能给别人使用。当然我们也可以使用别人提供的函数,减少代码量。 2. 借助函数可以减…

4.6.长短期记忆网络(LSTM)

长短期记忆网络(LSTM) ​ 长短期记忆网络的设计灵感来自于计算机的逻辑门。 长短期记忆网络引入了记忆元(memory cell),或简称为单元(cell)。 有些文献认为记忆元是隐状态的一种特殊类型, 它们与隐状态具有…

萱仔求职系列——1.1 机器学习基础知识复习

由于我最近拿到offer还是想再找找更好的机会,目前有很多的面试,面试的时候很多面试官会问一些机器学习的基础知识,由于我上一段实习的时候主要是机器学习和部分深度学习的内容,为了避免在面试的时候想不起来自己学习的内容&#x…

MPU6050的STM32数据读取

目录 1. 概述2. STM32G030对MPU6050的读取3. STM32F1xx对MPU6050的读取 1. 概述 项目中,往往需要根据不同的环境使用不同的芯片处理某些数据,当使用不同的芯片对六轴陀螺仪芯片MPU6050进行数据处理中,硬件的连接、I/O口的设置往往需要根据相…

【HarmonyOS NEXT星河版开发学习】小型测试案例05-得物列表项

个人主页→VON 收录专栏→鸿蒙开发小型案例总结​​​​​ 基础语法部分会发布于github 和 gitee上面(暂未发布) 前言 鸿蒙操作系统通过其先进的分布式架构和开发工具,以及灵活的界面布局和样式控制,为开发者提供了丰富的开发资源…

设计模式- 数据源架构模式

活动记录(Active Record) 一个对象,它包装数据库表或视图中的某一行,封装数据库访问,并在这些数据上增加了领域逻辑 对象中既有数据又有行为。这些数据大多是持久数据、并且需要保存到数据库。 运行机制 活动记录的…

Iris for mac 好用的录屏软件

Iris 是一款高性能屏幕录像机,可录制到 h.264。Iris 在可用时利用板载 GPU 加速。它可以选择包括来自摄像头和最多两个麦克风的视频。 兼容性 所有功能在macOS 11.0-14上完全支持,包括macOS Sonoma。 简单编码 直接录制为h.264、h.265、ProRes或Motion…

WPF学习(10)-Label标签+TextBlock文字块+TextBox文本框+RichTextBox富文本框

Label标签 Label控件继承于ContentControl控件,它是一个文本标签,如果您想修改它的标签内容,请设置Content属性。我们曾提过ContentControl的Content属性是object类型,意味着Label的Content也是可以设置为任意的引用类型的。 案…

游戏ID统一管理器DEMO

一般游戏的角色ID、名字,工会ID、名字,等最好统一创建,方便合服处理,可以以此基础,动态配置生成ID 这个也可以用openresty 作个,可能更专业点, 1:go1.20 最后一版支持win7的 mongod…

微信小程序乡村医疗系统,源码、部署+讲解

目录 摘 要 Abstract 1 绪论 1.1 研究背景及意义 1.2 研究现状 1.3 研究内容 2 相关技术介绍 2.1 Java 语言 2.2 MySQL 数据库 2.3 Spring Boot 框架 2.4 B/S 结构 2.5 微信小程序 3 系统分析 3.1 可行性分析 3.1.1 经济可行性 3.1.2 技术可行性…

4.MySQL数据类型

目录 数据类型 ​编辑数值类型 tinyint类型 bit类型 float类型 decimal类型 字符串类型 char类型 varchar varchar和char的区别 日期和时间类型 数据类型 数值类型 说明一下:MySQL本身是不支持bool类型的,当把一个数据设置成bool类型时&#x…

【ThreadLocal总结】

文章目录 为什么使用ThreadLocalThreadLocal核心ThreadLocal内部结构ThreadLocal内存泄漏解决内存泄漏 为什么使用ThreadLocal 在并发编程中,多个线程同时访问和修改共享变量是一个常见的场景。这种情况下,可能会出现线程安全问题,即多个线程…

AWS生成式AI项目的全生命周期管理

随着人工智能技术的迅速发展,生成式 AI 已成为当今最具创新性和影响力的领域之一。生成式 AI 能够创建新的内容,如文本、图像、音频等,具有广泛的应用前景,如自然语言处理、计算机视觉、创意设计等。然而,构建一个成功…

【Python】pandas:计算,统计,比较

pandas是Python的扩展库(第三方库),为Python编程语言提供 高性能、易于使用的数据结构和数据分析工具。 pandas官方文档:User Guide — pandas 2.2.2 documentation 帮助:可使用help(...)查看函数说明文档&#xff0…

文本编辑器小型架构

C字体库开发之字体列表设计七-CSDN博客 创作不易,小小的支持一下吧!

odoo from样式更新

.xodoo_form {.o_form_sheet {padding-bottom: 0 !important;border-style: solid !important;border-color: white;}.o_inner_group {/* 线框的样式 *//*--line-box-border: 1px solid #666;*//*box-shadow: 0 1px 0 #e6e6e6;*/margin: 0;}.grid {display: grid;gap: 0;}.row …

【数据结构】排序 —— 归并排序(mergeSort)、计数排序、基数排序

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构、LeetCode专栏 📚本系…

【数据结构】哈希应用-STL-位图

目录 1、位图的概念 2、位图的设计与实现 2.1 set 2.2 reset 2.3 test 3、C库中的位图 4、位图的优缺点 5、位图相关题目 1、位图的概念 面试题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这4…