基于httpd和lvs的dr模式简单测试

lvs主机:192.168.50.154
httpd主机:192.168.50.157 192.168.50.156 (ip需要在同一网段)
虚拟ip:192.168.50.183
前提准备:

lvs安装:
yum install ipvsadm -y
lsmod|grep ip_vs
modprobe ip_vs
lsmod|grep ip_vshttpd:(使用yum安装,并且启动一个静态页面)
[root@rabbit4-64 httpd]# netstat -ntlp|grep 8222
tcp6       0      0 :::8222                 :::*                    LISTEN      30863/httpd
[root@three-3 html]# netstat -nltp|grep 8222
tcp6       0      0 :::8222                 :::*                    LISTEN      102136/httpd [root@three-3 html]# curl 192.168.50.157:8222
<h1> 192.168.50.157 test</h1>
[root@three-3 html]# curl 192.168.50.156:8222
<h1> 192.168.50.156 test </h1>

1.配置虚拟ip(lvs机器中)

ipvsadm --set 30 5 60
ipvsadm -A -t 192.168.50.183 -s wrr #添加一个虚拟服务,使用加权轮询(WRR)算法。
ipvsadm -a -t 192.168.50.183:8222 -r 192.168.50.157:8222 -g -w 1 #添加一台真实服务器到虚拟服务中。
ipvsadm -a -t 192.168.50.183:8222 -r 192.168.50.156:8222 -g -w 1 #添加一台真实服务器到虚拟服务中。
ifconfig ens192:183 192.168.50.183[root@first-1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.50.183:8222 wrr-> 192.168.50.156:8222          Route   1      0          0         -> 192.168.50.157:8222           Route   1      0          0         
[root@first-1 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000link/ether 00f3:d4 brd ff:ff:ff:ff:ff:ffinet 192.168.50.154/24 brd 192.168.50.255 scope global ens192valid_lft forever preferred_lft foreverinet 192.168.50.183/24 brd 192.168.50.255 scope global secondary ens192:183valid_lft forever preferred_lft foreverinet6 fe80::c142:751b:6435:68b4/64 scope link tentative dadfailed valid_lft forever preferred_lft foreverinet6 fe80a:cd2:ebda/64 scope link tentative dadfailed valid_lft forever preferred_lft foreverinet6 fe801:ecd9/64 scope link tentative dadfailed valid_lft forever preferred_lft forever
3: ens224: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000link/ether 00:50:56:84:95:0c brd ff:ff:ff:ff:ff:ff#尝试能不能ping通
[root@rabbit4-64 httpd]# ping 192.168.50.183
PING 192.168.50.183 (192.168.50.183) 56(84) bytes of data.
64 bytes from 192.168.50.183: icmp_seq=1 ttl=62 time=22.6 ms
64 bytes from 192.168.50.183: icmp_seq=2 ttl=62 time=22.2 ms#测试数据是否已经过去:选择一台没有用的机器
[root@four-4 ~]# telnet 192.168.50.183 8222 (多选几台机器执行)
Trying 192.168.50.183...# 在192.168.50.157 和 192.168.50.156 中进行抓包
tcpdump -i ens192 port 8222  #两台机器都执行
[root@three-3 html]# tcpdump -i ens192 port 8222
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
13:57:30.772510 IP 192.168.50.157.48650 > 192.168.50.183.8222: Flags [S], seq 43617727, win 29200, options [mss 1460,sackOK,TS val 182619098 ecr 0,nop,wscale 7], length
13:57:31.774161 IP 192.168.50.157.48650 > 192.168.50.183.8222: Flags [S], seq 43617727, win 29200, options [mss 1460,sackOK,TS val 182620100 ecr 0,nop,wscale 7], lengt[root@rabbit4-64 httpd]# tcpdump -i ens192 port 8222
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes
14:04:34.395304 IP 192.168.50.154.35818 > rabbit4-64.8222: Flags [S], seq 3231811907, win 29200, options [mss 1460,sackOK,TS val 183213407 ecr 0,nop,wscale 7], length 0
14:04:34.395452 IP rabbit4-64.8222 > 192.168.50.154.35818: Flags [S.], seq 2724865354, ack 3231811908, win 28960, options [mss 1460,sackOK,TS val 2606830328 ecr 183213407,nop,wscale 7], length 0
14:04:34.417852 IP 192.168.50.154.35818 > rabbit4-64.8222: Flags [.], ack 1, win 229, options [nop,nop,TS val 183213430 ecr 2606830328], length 0
14:04:35.648993 IP 192.168.50.154.35818 > rabbit4-64.8222: Flags [P.], seq 1:6, ack 1, win 229, options [nop,nop,TS val 183214661 ecr 2606830328], length 5
14:04:35.649098 IP rabbit4-64.8222 > 192.168.50.154.35818: Flags [.], ack 6, win 227, options [nop,nop,TS val 2606831582 ecr 183214661], length 0
# 从 tcpdump 输出中可以看到,只有 SYN(同步)标志,没有后续的 ACK(确认)标志,这意味着连接尝试没有成功建立,需要进行arp抑制

dr模式arp抑制过程:
客户端发送请求:
请求首先到达部署了LVS的负载均衡器。
负载均衡器根据负载均衡策略选择目标服务器来处理请求。在DR模式中,负载均衡器会选择一个真实服务器来处理请求,并且它会修改请求的目标MAC地址为所选真实服务器的MAC地址。
负载均衡器将请求转发给所选的真实服务器。在DR模式中,它会将请求的目标IP地址修改为所选真实服务器的IP地址,并将目标MAC地址修改为所选真实服务器的MAC地址。
真实服务器接收到请求,并根据请求的目标IP地址进行处理。由于请求的目标IP地址被修改为真实服务器的IP地址,因此它将直接响应客户端,但响应的目标MAC地址是虚拟服务器的MAC地址。
真实服务器处理请求并生成响应,然后将响应发送回客户端。响应的目标IP地址是客户端的IP地址,而目标MAC地址是虚拟服务器的MAC地址。
当客户端收到响应后,它会尝试更新自己的ARP缓存,将虚拟服务器的IP地址映射到虚拟服务器的MAC地址。由于进行了ARP抑制,负载均衡器不会响应ARP请求,因此客户端无法获取真实服务器的MAC地址。
在后续的请求中,客户端会继续发送请求到虚拟服务器的IP地址,但由于ARP缓存中已经存在虚拟服务器的MAC地址,因此请求会直接发送到负载均衡器,绕过了真实服务器。

arp抑制:

ifconfig lo:183 192.168.50.183/32 up 
route add -host 192.168.50.183 dev lo 
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

测试结果:

[root@second-2 ~]# curl 192.168.50.183:8222
<h1> 192.168.50.157</h1>
[root@second-2 ~]# curl 192.168.50.183:8222
<h1> 192.168.50.156 test </h1>
[root@second-2 ~]# curl 192.168.50.183:8222
<h1> 192.168.50.157</h1>
[root@second-2 ~]# curl 192.168.50.183:8222
<h1> 192.168.50.156 test </h1>

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

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

相关文章

一堆喷儿香喷儿香的工具网站-已经收藏-搜嗖工具箱!

文心一言 https://yiyan.baidu.com/ ​ ChatGpt横空出世的横空出世好像一把钥匙&#xff0c;开启了大模型时代&#xff0c;国内也有不错的产品&#xff0c;比如百度的文心一言&#xff0c;从3.5到4.0看得见的成长&#xff0c;现在的文心一言是我们工作中不可缺少的好帮手&am…

javaEE初阶——多线程(五)

T04BF &#x1f44b;专栏: 算法|JAVA|MySQL|C语言 &#x1faf5; 小比特 大梦想 此篇文章与大家分享关于多线程的文章第五篇关于 多线程代码案例二 阻塞队列 如果有不足的或者错误的请您指出! 目录 2.阻塞队列2.1常见队列2.2 生产者消费者模型有利于进行解耦合程序进行削峰填谷…

OEEL图表——进行直方图绘制histogram函数的使用

简介 本文将使用histogram函数来进行数据分析。 直方图是一种用于可视化数据分布的图表。它可以帮助我们理解数据的集中程度、偏移程度和分散程度。以下是直方图的一些主要作用: 1. 展示数据分布:直方图可以将数据按照不同区间进行分组,并以柱状图的形式呈现。通过观察直…

走近网络安全公司:F5探索应用安全至简之道

伴随企业加速数字化转型工作、扩展到新的基础设施环境并采用微服务架构&#xff0c;企业正在拥抱混合和多云基础设施所带来的灵活性。现在跨越四种环境部署应用的企业&#xff0c;其平均需要管理和保护的应用数据路径比应用仅限本地部署时多10倍&#xff0c;复杂性呈指数级增加…

【JAVA基础篇】泛型详解版

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.泛型的认识 2.泛型类 3.泛型方法 4.泛型接口 5.特别强调 6.类型通配符 简单化知识点&#xff0c;让你彻底了解泛型 1.泛型的认识 Java泛型是一种在Java编程语言…

Ubuntu系统安装配置笔记

最近装了台Ubuntu系统用于日常工作&#xff0c;过程中搜索了很多资料或找ChatGPT解答疑问&#xff0c;已有的资料都比较详细了&#xff0c;因此这篇笔记主要是列举大纲和参考网站&#xff0c;并记录中间踩坑耗时较多的问题。 一&#xff0c;系统安装 1&#xff0c;镜像下载 …

2024数学建模时间汇总与竞赛攻略

目录 2024数学建模汇总&#xff08;时间、报名费、获奖率、竞赛级别、是否可跨校&#xff09; 中国高校大数据挑战赛 “华数杯”国际大学生数学建模竞赛 美国大学生数学建模竞赛&#xff08;美赛&#xff09; 数学中国&#xff08;认证杯&#xff09;数学建模网络挑战赛 …

盲盒一番赏小程序:打开未知的惊喜之旅

在快节奏的生活中&#xff0c;人们总是渴望寻找一份属于自己的小确幸。盲盒一番赏小程序&#xff0c;正是这样一个为你带来无尽惊喜与乐趣的平台。我们精心打造这一小程序&#xff0c;让每一次点击都成为一次全新的探索&#xff0c;让每一次选择都充满无限可能。 盲盒一番赏小…

dns高防和ip高防的区别是什么?

在面对日益增长的网络安全威胁时&#xff0c;DNS高防和IP高防作为防御策略发挥着重要的作用。虽然两者都旨在保护网络资源免受攻击&#xff0c;但它们在操作方式和防护重点上有着本质的不同。 DNS高防&#xff1a;保护域名解析服务DNS高防&#xff0c;全称是高防御的域名解析服…

JavaWeb--05Vue项目简介

Vue项目简介 1 创建vue项目2 Vue项目目录结构3 运行Vue项目3 Vue项目开发流程 1 创建vue项目 环境准备好了&#xff0c;接下来我们需要通过Vue-cli创建一个vue项目&#xff0c;然后再学习一下vue项目的目录结构。Vue-cli提供了如下2种方式创建vue项目: 命令行&#xff1a;直接…

应用编程之线程(二-同步篇)

线程的主要优势在于&#xff0c;资源的共享性&#xff0c;譬如通过全局变量来实现信息共享&#xff0c;不过这种便捷的共享是有代价的&#xff0c;那就是多个线程并发访问共享数据所导致的数据不一 致的问题。 一、为什么需要线程同步 线程同步是为了对共享资源的访问进行保护…

用Cmake编译程序时,链接到FFmpeg库

用Cmake编译程序时&#xff0c;链接到FFmpeg库 一、前言 可喜可贺&#xff0c;折腾了一晚上终于把这个勾八链接成功了&#xff0c;已经要吐了。看到下面控制台的输出&#xff0c;吾心甚慰呀&#x1f62d; [100%] Linking CXX executable rknn_yolov5_demo [100%] Built targe…

SpringBoot 操作 Redis

导入对应版本的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency>修改配置文件中的信息 spring:redis:host: 127.0.0.1port: 8888注意: 我这里 xsh…

【python】深度解剖!一文搞懂字符串常用功能

【python】深度解剖!一文搞懂字符串常用功能 【先赞后看养成习惯】求点赞+关注+收藏😀 目录 【python】深度解剖!一文搞懂字符串常用功能字符串的创建:字符串的格式化——占位符.format方法字符串的分割字符串的连接字符串的重复字符串的大小写转换字符串的判断字符串的…

sherpa + ncnn 离线语音识别

目录结构 前言音视频格式转为wavsherpa-ncnn编译LinuxWindowswindows编译中遇到的问题问题“nmake -? failed with: no such file or directory”编译失败原因 成功编译截图 可执行程序说明模型下载语言识别测试LinuxWindows 参考文献 前言 小编需要实现离线音视频语言部分识…

C++ 程序的内存分配

C 程序的内存分配 C 程序的内存分配栈堆数据区程序代码区参考 C 程序的内存分配 一个 C 编译的程序占用内存分为以下几个部分&#xff08;从高地址到低地址&#xff09;&#xff1a; 内核空间&#xff1a;由操作系统创建并控制&#xff0c;用户代码不能读写。栈&#xff1a;由…

mysql 日环比 统计

接到一个任务&#xff0c;要计算日环比的情况。 16、查询销售额日环比情况 日环比&#xff1a; &#xff08;今日-昨日&#xff09;/ 昨日 的一个比率情况。 1&#xff0c;建表 DROP TABLE IF EXISTS sale; create table sale(id int not null AUTO_INCREMENT,record_date da…

IDEA插件:CodeGeex

前言 CodeGeeX是由清华大学和智谱AI联合开发的多语言代码生成模型。CodeGeeX是一款AI编程助手&#xff0c;其功能类似于Github Copilot、Codeium、CodeWhisperer、Bito等智能编程助手。CodeGeeX支持Python、C、Java、JavaScript、Go等10多种主流编程语言。它可以帮助程…

windows驱动开发-WDM框架(一)

在前面的文章中解释过&#xff0c;NT5.0之后windows确定了新的架构Windows Driver Model (WDM)&#xff0c;在Vista之后又推出了Windows Driver Framework(WDF)&#xff0c;这两个都属于驱动程序框架&#xff0c;那么它们的之间的关系是怎样的&#xff1f; WDF是对WDM进行的封…

天线基本原理;光纤传播信号原理;光纤怎么表示0,1的

目录 天线基本原理 电话,收音机,4G,5G 三大运营商频段划分 光纤传播信号原理