LVS实战演练

news2024/12/24 9:01:34

一.LVS简介

        LVS(Linux Virtual Server)是Linux虚拟服务器的简称,是一种基于Linux内核的开源负载均衡技术。

<1>.工作原理

        LVS(Linux Virtual Server)的工作原理可以概括为通过负载均衡技术将客户端的请求分发到多个后端服务器上,以实现高可用性、高性能和可伸缩性。

<2>.相关术语

VS: Virtual Server,负责调度

RS: RealServer,负责真正提供服务

CIP: Client IP

VIP: Virtual serve IP  VS外网的IP

DIP: Director IP  VS内网的IP

RIP: Real server  IP

访问流程: CIP <--> VIP == DIP <--> RIP

<3>.lvs集群的常用转发类型

  • LVS-NAT(Network Address Translation)修改请求报文的目标IP地址,实现多目标IP的DNAT(Destination Network Address Translation)。
  • LVS-DR(Direct Routing)通过为请求报文重新封装一个MAC首部进行转发,源IP/PORT以及目标IP/PORT均保持不变,是LVS的默认模式,应用最广泛。
  • LVS-TUN(Tunneling)在原请求IP报文之外新加一个IP首部,实现两级IP的隧道逻辑转发。
  • LVS-FULLNAT通过同时修改请求报文的源IP地址和目标IP地址进行转发,类似于LVS-NAT的增强版。

1. LVS-NAT

       LVS-NAT是LVS集群中一种基于网络地址转换技术的负载均衡模式。它通过修改请求报文的目标IP地址和端口,将请求转发到后端真实服务器,并将响应报文中的源IP地址修改为虚拟服务器的IP地址,实现客户端和真实服务器之间的无缝通信。然而,由于所有请求和响应都必须经过LVS调度器,可能导致调度器成为系统瓶颈。

2. LVS-DR

       LVS-DR模式是一种高效的负载均衡方式,它允许客户端直接与后端真实服务器通信,而不需要经过LVS调度器转发响应数据。在这种模式下,LVS调度器只负责接收客户端的请求,并根据负载均衡算法选择一个合适的真实服务器,然后将请求转发给该服务器。真实服务器处理请求后,直接将响应返回给客户端,而不需要经过LVS调度器。

3. LVS-TUN

       LVS-TUN模式通过在网络层之上增加一个IP隧道,将客户端的请求封装在一个新的IP包中,然后转发给后端真实服务器。真实服务器处理完请求后,直接将响应返回给客户端,而不经过LVS调度器。这种方式使得LVS调度器成为无状态的,只需要处理请求的分发,而不必关心响应的返回,从而提高了系统的可扩展性和性能。

4. LVS-FULLNAT

       LVS-FULLNAT模式与NAT模式类似,但它在处理请求和响应报文时都进行了源地址和目标地址的转换。在NAT模式下,只有请求报文的目标地址被转换为RS的地址,而响应报文则直接返回给客户端,无需再次转换。但在FULLNAT模式下,请求报文的源地址和目标地址都会被转换,响应报文在返回给客户端之前,其源地址和目标地址也会进行相应的转换。

二.部署NAT模式集群实验

<1>.实验环境

一台客户机、一台调度器、两台真实服务器

VMVare网络设置NAT模式子网IP为172.25.254.0,仅主机模式子网IP为192.168.0.0

1.调度器

VMVare设置eth0网卡为NAT模式,eth1为仅主机模式

[root@LVS ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=172.25.254.100/24,172.25.254.2
method=manual
dns=114.114.114.114;

[root@LVS ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection 
[connection]
id=eth1
type=ethernet
interface-namw=eth1

[ipv4]
address1=192.168.0.100/24
method=manual

2.真实服务器

VMVare设置eth0网卡为仅主机模式

[root@webserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual
[root@webserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=192.168.0.20/24,192.168.0.100
method=manual

3.客户端

VMVare设置eth0网卡为NAT模式

[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=172.25.254.200/24,172.25.254.2
method=manual
dns=114.114.114.114;

<2>.实验配置

1.VS中启用内核路由器功能

[root@LVS boot]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf
[root@LVS boot]# sysctl -p
net.ipv4.ip_forward = 1

2.RS装上http服务

[root@LVS ~]# yum install httpd -y

3.VS安装ipvsadm软件

[root@LVS boot]# dnf install ipvsadm -y

4.在RS上输入测试内容

[root@webserver1 ~]# echo webserver1 - 192.168.0.10 > /var/www/html/index.html
[root@webserver1 ~]# systemctl enable --now httpd
[root@webserver2 ~]# echo webserver2 - 192.168.0.20 > /var/www/html/index.html
[root@webserver2 ~]# systemctl enable --now httpd

5.在VS进行测试

[root@LVS boot]# curl 192.168.0.10
webserver1 - 192.168.0.10
[root@LVS boot]# curl 192.168.0.20
webserver2 - 192.168.0.20

6.在VS中添加调度策略

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

[root@LVS boot]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@LVS boot]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
[root@LVS boot]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

[root@LVS boot]# 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.100:80 rr
  -> 192.168.0.10:80              Masq    1      0          0         
  -> 192.168.0.20:80              Masq    1      0          0   

<3>.客户端测试

[root@client ~]# for i in {1..10}
> do
> curl 172.25.254.100
> done
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10

三.部署DR模式集群实验

<1>.实验环境

一台客户端、一台路由器、一台调度器、两台真实服务器

VMVare网络设置NAT模式子网IP为172.25.254.0,仅主机模式子网IP为192.168.0.0

1.路由器

VMVare设置eth0网卡为NAT模式,eth1为仅主机模式

[root@router ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=172.25.254.100/24,172.25.254.2
method=manual
dns=114.114.114.114;

[root@router ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection 
[connection]
id=eth1
type=ethernet
interface-namw=eth1

[ipv4]
address1=192.168.0.100/24
method=manual

2.调度器

VMVare设置eth1网卡为仅主机模式

[root@LVS ~]# cat /etc/NetworkManager/system-connections/eth1.nmconnection 
[connection]
id=eth1
type=ethernet
interface-namw=eth1

[ipv4]
address1=192.168.0.50/24,192.168.0.100
method=manual

3.真实服务器

VMVare设置eth0网卡为仅主机模式

[root@webserver1 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=192.168.0.10/24,192.168.0.100
method=manual
[root@webserver2 ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=192.168.0.20/24,192.168.0.100
method=manual

4.客户端

VMVare设置eth0网卡为仅主机模式

[root@client ~]# curl 192.168.0.200
webserver2 - 192.168.0.20
[root@client ~]# cat /etc/NetworkManager/system-connections/eth0.nmconnection 
[connection]
id=eth0
type=ethernet
interface-namw=eth0

[ipv4]
address1=172.25.254.200/24,172.25.254.100
method=manual

<2>.实验配置

1.路由器中启用内核路由器功能

[root@router ~]# echo "net.ipv4.ip_forward=1" > /etc/sysctl.conf
[root@router ~]# sysctl -a | grep ip_forward
net.ipv4.ip_forward = 1
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0

2.RS主机中使vip不对外响应

[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore      
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@webserver1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@webserver1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore      
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@webserver2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@webserver2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 

3.在VS主机和RS主机添加vip(临时添加,关机重启后需要重新添加)

[root@LVS ~]# ip a a 192.168.0.200/32 dev lo
[root@webserver1 ~]# ip a a 192.168.0.200/32 dev lo
[root@webserver2 ~]# ip a a 192.168.0.200/32 dev lo

4.在VS中添加调度策略

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

[root@LVS ~]# ipvsadm -A -t 192.168.0.200:80 -s wrr
[root@LVS ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1
[root@LVS ~]# ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2

[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  192.168.0.200:80 wrr
  -> 192.168.0.10:80              Route   1      0          0         
  -> 192.168.0.20:80  

<3>.测试

根据DR模式的工作原理,用wearshark抓包能明显看到实验结果,便于理解

[root@client ~]# for i in {1..10}
> do
> curl 192.168.0.200
> done
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20
webserver1 - 192.168.0.10
webserver2 - 192.168.0.20
webserver2 - 192.168.0.20

三.防火墙标签解决轮询错误 

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

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

相关文章

论文解读 | ACL 2024:自我蒸馏在语言模型微调中架起分布差异的桥梁

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 杨兆瑞 浙江大学CAD&CG全国重点实验室博士生 导师为陈为教授 概述 大型语言模型&#xff08;LLMs&#xff09;的兴起彻底改变了自然语言处理领域&#xff0c;但对它们进行特定任务的微调常常面临在平衡性能…

MySQL数据分析进阶(九)触发器

※食用指南&#xff1a;文章内容为‘CodeWithMosh’SQL进阶教程系列学习笔记&#xff0c;笔记整理比较粗糙&#xff0c;主要目的自存为主&#xff0c;记录完整的学习过程。&#xff08;图片超级多&#xff0c;慎看&#xff01;&#xff09; 【中字】SQL进阶教程 | 史上最易懂S…

Oracle: oracle大小写敏感问题

oracle大小写敏感含义&#xff1a;比如创建表A和a&#xff0c;A和a是两个不同的表&#xff08;表名不同&#xff09;。 oracle大小写不敏感含义&#xff1a;比如创建了A表就不能创建a表&#xff0c;将A和a看成是相同的表&#xff08;表名相同&#xff09;。 1、查询用户是否存…

嵌入式人工智能(47-Pycharm通过SSH远程连接调试树莓派4B服务器)

用过Pycharm的同学都知道&#xff0c;这个IDE非常强大&#xff0c;强大到写个Helloworld都不值当运行它&#xff0c;等我打开的功夫&#xff0c;sublime都运行结束了。但是往往写大项目&#xff0c;尤其是web前后端的程序用Pycharm非常爽了&#xff0c;多标签页&#xff0c;前后…

AI Agent Market: Soverin - 引领未来的AI工具中心

随着人工智能技术的快速发展,AI代理正在成为企业不可或缺的新入口。最近,扎克伯格和黄仁勋的对话强调了AI代理的重要性,将其视为继电子邮件、网站和社交媒体之后的第四大企业必备工具。在这个背景下,Soverin作为一个成熟的AI应用和代理市场平台,正引领着AI工具市场的未来趋…

Android平台RTMP直播推送模块技术接入说明

技术背景 大牛直播SDK跨平台RTMP直播推送模块&#xff0c;始于2015年&#xff0c;支持Windows、Linux&#xff08;x64_64架构|aarch64&#xff09;、Android、iOS平台&#xff0c;支持采集推送摄像头、屏幕、麦克风、扬声器、编码前、编码后数据对接&#xff0c;功能强大&…

XCode15.4真机运行调试

更新Xcode后&#xff0c;没有模拟器内容&#xff0c;而且真机也不显示&#xff0c;编译按钮无法点击&#xff0c;设备在管理运行目标中可见&#xff0c;但无法选中 解决方案&#xff1a;下载iOS17.5模拟器&#xff0c;但最坑的是直接点击“Get”下载总是中断&#xff0c;且无…

mysql幻读现象及其避免策略

mysql幻读现象及其避免策略 1、幻读是什么&#xff1f;2、快照读与当前读3、如何避免幻读&#xff1f;3.1 快照读3.2 当前读 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、幻读是什么&#xff1f; 幻读是事务中第二次查询返回了之前不…

Spring Boot 3.x gradle脚手架工程build.gradle详解

为了让读者轻松掌握gradle项目构建脚本中各种配置&#xff0c;我们将从0开始一点点启用配置&#xff0c;以做实验的尝试方式&#xff0c;让大家对各种配置的作用有比较深的印象。如果觉得对你有帮助&#xff0c;记得点赞收藏&#xff0c;关注小卷&#xff0c;后续更精彩&#x…

2024视频编辑网站微服务

文章目录 项目描述流量数据算法主站服务AIGC功能服务视频剪辑服务任务调度服务算法部署服务 项目描述 一款海外视频编辑工具&#xff0c;提供视频编辑、多媒体资源的AI处理、AIGC生成素材等功能。 流量数据 数据: 月活MAU(过去30天活跃用户数)为500万&#xff0c;20%的用户每…

跳蚤市场小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;管理员管理&#xff0c;商品信息管理&#xff0c;论坛管理&#xff0c;收货地址管理&#xff0c;基础数据管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页&a…

windows 达梦到ORACLE dblink

达梦通过DBLINK访问Oracle数据库有两种: 方式一&#xff1a;通过Oracle oci接口; 方式二&#xff1a;一种是通过ODBC数据源的方式。 本案例选择使用Oralce OCI的方式去访问Oracle数据库。 配置Oracle OCI客户端 下载地址&#xff1a;https://www.oracle.com/database/techno…

提升人事工作效率,打造智慧校园人事管理系统

智慧校园人事管理系统中的“人事工作”功能是为了提高校园内人力资源管理的效率和规范化水平&#xff0c;确保教职工队伍的健康发展。这一功能涵盖了从面试管理、职工培训、职工考核、职工体检、职称评定到职工关怀等多个方面&#xff0c;旨在全方位支持教职工的职业发展和个人…

没有mac电脑ios上架截屏截图的最新方法

很多人使用uniapp或其他跨平台框架开发ios的app&#xff0c;上架的时候都会遇到一个问题&#xff0c;上架的时候需要各种尺寸的设备来做ios截屏&#xff0c;比如目前最新的要求是&#xff0c;需要对6.7寸、6.5寸和5.5寸的iphone进行截屏&#xff0c;假如支持ipad则还需要对ipad…

MySQL多表查询练习(53题)

MySQL多表查询练习 学生表、教师表、课程表、分数表 1、查询语文比数学成绩高的学生的信息以及课程分数 2、查询语文比数学成绩低的学生的信息以及课程分数 3、查询语文等于数学成绩的学生的信息以及课程分数 4、查询平均成绩大于等于60分的同学的学生编号&#xff0c;学生姓名…

C语言:求阶乘倒数之和

&#xff08;1&#xff09;题目&#xff1a;求Sn11/21/3...1/n&#xff0c;保留4位小数。 &#xff08;2&#xff09;代码&#xff1a; #include "stdio.h" int main() {int n; // 整数ndouble sum 0.0; // 倒数之和printf("请输入一个整数&#xff1a;"…

探索AI与社交的交汇点:看Facebook如何引领智能化革命

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正成为各大科技公司变革的重要驱动力。作为全球领先的社交媒体平台&#xff0c;Facebook&#xff08;现Meta Platforms&#xff09;正处于这一智能化革命的前沿。通过不断创新和应用AI技术&#xff0c;Facebook…

气膜建筑的抗风与防火性能:保障仓储的安全—轻空间

气膜建筑以其独特的结构和材料优势&#xff0c;为仓储设施提供了可靠的安全保障。在应对自然灾害特别是强风和火灾时&#xff0c;气膜建筑展示了优异的抗风和防火性能。轻空间将详细探讨这些性能及其在实际应用中的表现。 气膜建筑的抗风能力源于其特殊的结构设计和高性能材料。…

【算法】普里姆算法解决修路问题

应用场景——修路问题 1.某地有 7 个村庄&#xff08;A&#xff0c;B&#xff0c;C&#xff0c;D&#xff0c;E&#xff0c;F&#xff0c;G&#xff09;&#xff0c;现在需要修路把 7 个村庄连通 2.各个村庄的距离用边线表示&#xff08;权&#xff09;&#xff0c;比如 A - …

学习日志8.7--防火墙安全策略

安全区域之间的数据流动方向&#xff0c;是根据安全级别的优先级来定义的&#xff0c;如果是从优先级高的地方到优先级低的地方&#xff0c;比如说从Local&#xff08;100&#xff09;发送到Trust&#xff08;85&#xff09;是outbound&#xff0c;如果是从优先级低的地方到优先…