LVS负载均衡

news2024/12/25 0:47:48

文章目录

  • 前言
  • 一、LVS模式-DR
  • 二、ipvsadm配置参数
  • 三、DR模式的部署
    • server1:调度器(VS)
    • server2:真实服务器(RS)
    • server3:真实服务器(RS)
    • 真实服务器(server2和server3)屏蔽客户端
    • 测试:
    • 纯代码步骤演示


前言


一、LVS模式-DR

工作原理:
客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP
负载均衡器接收到报文后,发现请求的是在ipvs规则中存在的地址和端口,那么它将客户端请求报文的源MAC地址改为自己的MAC地址,目标MAC改为了Real Server的MAC地址,并将此包发送给Real Server
Real Server发现请求报文中的目标MAC地址是自己,就会把此报文接受下来,处理完请求报文后,将响应报文通过lo接口送给eth0网卡,直接发送给客户端。
VIP地址为调度器和服务器组共享,调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP 的网络请求。
在这里插入图片描述在这里插入图片描述

二、ipvsadm配置参数

参数解释
-A --add-service添加一条新的虚拟服务
-E --edit-service编辑虚拟服务
-D --delete-service删除虚拟服务
-C --clear清除所有的虚拟服务规则
-R --restore恢复虚拟服务规则
-a --add-server在一个虚拟服务中添加一个新的真实服务器
-e --edit-server编辑某个真实服务器
-d --delete-server删除某个真实服务器
-L / -l --list显示内核中的虚拟服务规则
-n --numeric以数字形式显示IP端口
-c --connection显示ipvs中目前存在的连接,也可以用于分析调度情况
-Z --zero将转发消息的统计清零
-p --persistent配置持久化时间
–set tcp tcpfin udp配置三个超时时间(tcp/tcpfin/udp)
-t /-uTCP/UDP协议的虚拟服务
-g /-m / -iLVS模式为:DR / NAT / TUN
-w配置真实服务器的权重
-s配置负载均衡算法,如:rr轮训, wrr, lc等
–timeout显示配置的tcp/tcpfin/udp超时时间
–stats显示历史转发消息统计(累加值)
–rate显示转发速率信息(瞬时值)

三、DR模式的部署

主机名	       ip	             vip	       角色
server1	  192.168.175.11	   192.168.56.100	 调度器(VS)
server2	  192.168.175.12	   192.168.56.100	 真实服务器(RS)
server3	  192.168.175.13	   192.168.56.100	 真实服务器(RS)
server4	  192.168.175.14		                 测试机

实验时:server1-4NAT网络模式,并且在分配的同一个vlan中;只有VS的客户端对外响应;
ARP协议在第二层,不需要网络,经过转发请求,通过VS主机中目的MAC地址修改,客户端可以访问服务机
整个过程中,源地址和目标地址是没有变化的,所以服务器不需要回传,直接把数据传给客户端
NAT:原路径返回,性能较低;若VS和RS不在同一个网段,NAT可以进行转换;
LVS-TUN
LVS-FULLNAT
LVS-DR:传输走2层数据链路层,性能最快
现实中:调度器和真实服务器可能不在同一地点,必须使用互联网,可以使用隧道模式(支持广域网)

server1:调度器(VS)

yum install -y ipvsadm
在这里插入图片描述
在这里插入图片描述

server2:真实服务器(RS)

yum install -y httpd在这里插入图片描述
在这里插入图片描述

server3:真实服务器(RS)

yum install -y httpd在这里插入图片描述
在这里插入图片描述

注意:完成上述操作后,到此步骤功能都可以实现了,但是此时是随机访问的,调度器五反应,因为192.168.175.88在server1-3均有,server1,2,3都有可能被访问,我上面的情况是随机访问到server3(真实服务器),显然在企业中是不可能的,客户端不能访问到真实服务器,所以我们要让真实服务器屏蔽客户端,即客户端就访问不到server2和server3,只能访问到调度器(server1)

在这里插入图片描述

真实服务器(server2和server3)屏蔽客户端

yum install arptables
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

测试:

在这里插入图片描述
在这里插入图片描述

纯代码步骤演示

调度器配置
[root@server1 ~]# yum install -y ipvsadm

[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

添加vip
[root@server1 ~]# ip addr add 192.168.56.100/24 dev eth0

添加lvs策略
[root@server1 ~]# ipvsadm -A -t 192.168.56.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 192.168.56.100:80 -r 192.168.56.12:80 -g
[root@server1 ~]# ipvsadm -a -t 192.168.56.100:80 -r 192.168.56.13:80 -g

[root@server1 ~]# 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.56.100:80 rr
  -> 192.168.56.12:80             Route   1      0          0
  -> 192.168.56.13:80             Route   1      0          0

真实服务器配置
server2:
安装测试服务
[root@server2 ~]# yum install -y httpd

[root@server2 ~]# systemctl  start httpd
[root@server2 ~]# echo server2 > /var/www/html/index.html
[root@server2 ~]# systemctl  enable httpd

rs也需要添加vip
[root@server2 ~]# ip a a 192.168.56.100/24 dev eth0

禁用arp
[root@server2 ~]# yum install arptables

[root@server2 ~]# arptables -A INPUT -d 192.168.56.100 -j DROP
[root@server2 ~]# arptables -A OUTPUT -s 192.168.56.100 -j mangle --mangle-ip-s 192.168.56.12

[root@server2 ~]# arptables-save  > /etc/sysconfig/arptables


server3:
安装测试服务
[root@server3 ~]# yum install -y httpd

[root@server3 ~]# systemctl  enable --now httpd
[root@server3 ~]# echo server2 > /var/www/html/index.html

rs也需要添加vip
[root@server3 ~]# ip a a 192.168.56.100/24 dev eth0

禁用arp
[root@server3 ~]# yum install arptables

[root@server3 ~]# arptables -A INPUT -d 192.168.56.100 -j DROP
[root@server3 ~]# arptables -A OUTPUT -s 192.168.56.100 -j mangle --mangle-ip-s 192.168.56.13

[root@server3 ~]# arptables-save  > /etc/sysconfig/arptables
测试
[root@server4 ~]# for i in {1..10}; do curl 192.168.56.100 ;done
server3
server2
server3
server2
server3
server2
server3
server2
server3
server2


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

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

相关文章

SpringCloud保姆级搭建教程六---ElasticSearch

es下载地址:https://www.elastic.co/cn/downloads/elasticsearch 最新版本或者 https://github.com/elastic/elasticsearch 7.17.9kibana下载地址:https://github.com/elastic/kibana 各个版本jdk8 对应的es应该是7.*版本,最新的es应该对应的…

【论文及代码详解】BEIT: BERT Pre-Training of Image Transformers

记录下论文《BEIT: BERT Pre-Training of Image Transformers》,这是一篇将Transformer应用于图像领域,并使用自监督方法进行参数初始化的文章。 论文链接 整体概要 由于网络整体流程图没有标注好模型的运行过程,结合论文的描述&#xff1a…

收藏,核心期刊的投稿、审稿、出刊流程详解

学术期刊论文(核心和普刊)的发表流程总的来说其实是一样的,整个流程包括:1写作-2选择刊物-3投稿-4审稿-5返修或拒稿-6录用-7出刊-8上网检索。 其中1和2其实顺序是可以调换的,可以选择好刊物再写作,根据刊物…

麦克风阵列波束基本概念理解

波束形成 本质上是设计合适的滤波器,对于一类固定滤波器系数的阵列来说,无论输入信号或者噪声信号的统计特征如何,其滤波器系数固定不变,此类波束形成叫Fixed Beamforming,固定波束形成好比传统数字信号处理里面的经典…

TCP并发服务器(多进程与多线程)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 TCP并发服务器(多进程与多线程)1. 多进程并发服务器(1)…

NPDP认证|2023年,0基础转行产品经理可以吗?

2023年,告别了疫情,各个行业正在快速回暖,很多企业都在高薪招聘产品经理岗位,这让很多其他岗位的朋友也想转行做产品经理,那没有基础,没有经验能转行做产品经理吗? 0基础转行产品经理是可能的&a…

Redis 删除策略

过期数据Redis中的数据特征 Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态XX :具有时效性的数据-1 :永久有效的数据-2 :已经过期的数据 或 被删除的数据 或 未定义的数据数…

Windows出现0xc00d36e5错误怎么办?

当我们使用Windows Media Player来播放视频文件时,可能会出现无法播放,并显示0xc00d36e5错误代码。该错误可能是因为Windows Media Player不支持视频格式、注册表项损坏、系统配置问题、第三方应用程序冲突等。下面将开始介绍0xc00d36e5错误的解决方法&a…

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示

K_A12_014 基于STM32等单片机驱动S12SD紫外线传感器模块 串口与OLED0.96双显示一、资源说明二、基本参数参数引脚说明三、驱动说明IIC地址/采集通道选择/时序对应程序:数据对比:四、部分代码说明1、接线引脚定义1.1、STC89C52RCS12SD紫外线传感器模块1.2、STM32F103…

【数据结构】P0 三要素与五个特征

三要素与五个特征什么是数据结构数据结构的三要素逻辑结构存储结构数据的运算算法的五个特征时间复杂度什么是数据结构 数据元素之间存在着一种或者多种关系,这种关系称为结构。 数据结构的三要素 数据结构的三要素:逻辑结构、存储结构、数据的运算。 …

【面试题】手写防抖和节流

1. 手写防抖 debounce 首先介绍一个防抖的应用场景。假如需要监听一个输入框在输入文字后触发的change事件,那么通过keyup事件,每次输入文字后都会触发change事件,频繁触发的情况会影响系统的性能。因此可以使用防抖来降低触发频率&#xff…

flutter系列之:在flutter中使用导航Navigator

文章目录简介flutter中的NavigatorNavigator的使用总结简介 一个APP如果没有页面跳转那么是没有灵魂的,页面跳转的一个常用说法就是Navigator,flutter作为一个最为优秀的前端框架,Navigator肯定是必不可少的,那么在flutter中如何使用Navigat…

自建Git服务器

Gitea - Git with a cup of tea是一个国外团队基于国内一位大牛写的gogs开源项目(Go语言开发)二次开发的轻量Git社区,其稳定性非常好,而且是非常轻量级在个人亲测在1核1G的centos7主机上1个月不重启依然稳定运行,引用g…

chatgpt怎么去玩?解析各种用途和强大的功能

关于chatgpt怎么玩?他的一些原理以及玩法,相信大家都是挺好奇的吧,毕竟这个新的人工智能和以往我们玩过的,是完全不一样的,它具备更多的可玩性,而且具备有一定的学习能力,这就造就了它的强大&am…

记一次IDE的Docker插件实战(Dockfile篇)

IDEA下使用Docker插件制作镜像、推送及运行 前言 本部分主要根据IDEA的Docker插件实战(Dockerfile篇)_程序员欣宸的博客-CSDN博客_idea编写dockerfile一文所述内容进行实践,并对其中遇到的问题进行解答,从而串接多个知识点。 如何编写Dockfile 在Int…

【elasticsearch】elasticsearch es读写原理

一、前言: 今天来学习下 es 的写入原理。 Elasticsearch底层使用Lucene来实现doc的读写操作: Luence 存在的问题: 没有并发设计 lucene只是一个搜索引擎库,并没有涉及到分布式相关的设计,因此要想使用Lucene来处理海量…

「可信计算」与软件行为学

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

亮个相吧小宝贝儿,五款压箱底的软件

今天要给大家推荐5款压箱底的宝贝软件了,百度搜索一下就能找到下载链接了。 1.开源浏览器——Firefox Firefox是一个自由的,开放源码的浏览器,适用于 Windows, Linux 和 MacOS X平台,Mozilla Firefox官方版体积小速度快&#xf…

【项目】Vue3+TS CMS 登录模块搭建

💭💭 ✨:Vue3 TS   💟:东非不开森的主页   💜: keep going💜💜   🌸: 如有错误或不足之处,希望可以指正,非常感谢😉   Vue3TS一、…

微服务面试题:熔断和降级有什么区别?

文章目录引言1.概念不同1.1 熔断概念1.2 降级概念2.熔断器模型3.种状态之间的转换关系4.熔断策略5.熔断和降级的关系6.降级方式6.1、熔断降级(不可用)6.2、超时降级6.3、限流降级7.题外话8.总结引言 熔断和降级都是系统自我保护的一种机制,但…