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

LVS 负载均衡

目录

LVS 体系结构

LVS 相关概念术语

 lvs 集群常见类型

实验一: 

LVS NAT模式

LVS NAT特性

实验二: 

LVS DR模式

 LVS DR特性


LVS是Linux virtual server的缩写,是一个高性能的、开源的负载均衡器,它运行于Linux操作系统之上,用于将网络请求分发给后端服务器集群中的服务器。

LVS简单工作原理为用户请求LVS VIP,LVS根据转发方式和算法,将请求转发给后端服务器,后端服务器接收到请求,返回给用户。

LVS 体系结构

LVS架构主要由三个部分组成:

1)负载均衡层:位于整个集群系统的最前端,由一台或多台负载调度器(Director Server)组成,LVS模块就安装在调度器上。

2)服务器群组层:由一组实际运行的应用服务器(Real Server)组成,可以是web服务器、mail服务器、DNS服务器、FTP服务器等。

3)数据共享存储层:为所有Real Server提供共享存储空间和内容一致性的存储区域,一般通过NFS网络文件系统或集群文件系统实现。

LVS 相关概念术语

  1. VS: Virtual Server。负责调度。
  2. RS:Real Server。后端真实的工作服务器,负责真正提供服务。
  3. DS(Director Server):指的是前端负载均衡器节点,调度服务器,将负载分发到Real Server的服务器上。
  4. VIP:Virtual IP。虚拟 IP,向外部直接面向用户请求,作为用户请求的目标的IP地址。[ VS外网的IP ]
  5. DIP:Director IP Address。Director连接到Real Server的IP地址。主要用于和内部主机通讯。[ VS内网的IP ]
  6. RIP:Real IP Address。真实IP地址,(后端服务器)集群节点上使用的IP地址。
  7. CIP:Client IP。客户端的IP地址。

访问流程:CIP VIP == DIP RIP  

 lvs 集群常见类型

按转发方式划分:

LVS-NAT(网络地址转换):LVS将请求报文中的目标地址和目标端口修改为选定到的真实服务器的IP和端口,从而实现报文的转发。

LVS-DR(直接路由):也称为Direct Routing,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。

LVS-TUN(隧道):不修改请求报文的IP首部,而在源IP报文之外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发往挑选出的目标Real Server,Real Server直接响应给客户端(源IP是VIP,目标IP是CIP)。

LVS-FULLNAT:通过同时修改请求报文的源IP地址和目标IP地址进行转发。


实验一: 

LVS NAT模式

NAT 模式双向流量都经过 LVS。 

LVS NAT特性
  • VIP和RIP不需要在同一个网段内;
  • NAT的包的进出都需要经过LVS,所以LVS可能会成为一个系统的瓶颈问题。

-----------------------------------------------------------

lvs:设置两个网卡:eth0  172.25.254.100/24  NAT    eth1  192.168.0.100/24  仅主机

webserver1: eth0  192.168.0.10/24   仅主机模式

webserver2 :eth0  192.168.0.20/24   仅主机模式

lvs:调度器

systemctl disable --now firewalld.service

vim /etc/sysctl.conf     ##配置内核参数:net.ipv4.ip_forward = 1  启用IP转发
sysctl -p   ##应用更改

yum install httpd -y

yum install ipvsadm -y   ##安装工具包

:ipvsadm 是一个用于管理 Linux 虚拟服务器(IPVS)的工具,它允许系统管理员设置和管理负载均衡器。

ipvsadm -A -t 172.25.254.100:80 -s rr   ##添加虚拟服务

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m   ##添加后端服务器

ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m

ipvsadm -Ln   ##列出 Linux 虚拟服务器(IPVS)表中当前配置

systemctl restart httpd

webserver1: #webserver2类似

systemctl disable --now firewalld

yum install httpd -y

echo webserver1-192.168.0.10 >/var/www/html/index.html  

systemctl restart httpd 

 在lvs上测试:

curl 192.168.0.10

curl 192.168.0.20

实验二: 

LVS DR模式

DR 模式 LVS 逻辑比较简单,数据包通过直接路由方式转发给后端服务器,而且响应数据包是由 RS 服务器直接发送给客户端,不经过 LVS。

 LVS DR特性
  • 前端路由将目标地址为VIP报文统统发给Director Server;
  • RS跟Director Server必须有一个网卡在同一个物理网络中;
  • 所有的请求报文经由Director Server,但响应报文必须不能进过Director Server;
  • 所有的real server机器上都有VIP地址。

-----------------------------------------------------------

router:路由器

NAT模式:172.25.254.100/24       仅主机模式:192.168.0100/24

systemctl disable --now firewalld.service

vim /etc/NetworkManager/system-connections/eth0.connection

vim /etc/NetworkManager/system-connections/eth1.connection

nmcli connection reload

nmcli connection up eth0

nmcli connection up eth1

vim /etc/sysctl.conf

sysctl -p

webserver1:web服务器1 

仅主机:ip:192.168.0.10;gateway:192.168.0.100

systemctl disable --now firewalld.service

vim /etc/NetworkManager/system-connections/eth0.connection

nmcli connection reload

nmcli connection up eth0

route -n

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

【arp_ignore 和 arp_announce 是与ARP(地址解析协议)相关的内核参数】

ip addr a 192.168.0.200/32 dev lo

nmcli connection reload

webserver1 和 webserver2 解决响应问题:

webserver2:web服务器2

仅主机:ip:192.168.0.20;gateway:192.168.0.100

systemctl disable --now firewalld.service

vim /etc/NetworkManager/system-connections/eth0.connection

nmcli connection reload

nmcli connection up eth0

route -n

##解决响应问题

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore 

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

ip addr a 192.168.0.200/32 dev lo   ##将IP地址添加到回环接口

nmcli connection reload

lvs:调度器

仅主机:ip:192.168.0.50/24;lo:192.168.0.200/32

systemctl disable --now firewalld.service

vim /etc/sysconfig/network-scripts/ifcfg-eth1  #lvs环境我用的RedHat7版本

nmcli connection reload

nmcli connection up eth1

ip addr a 192.168.0.200/32 dev lo

nmcli connection reload

ipvsadm -A -t 192.168.0.200:80 -s wrr

ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.20:80 -g -w 2

ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.10:80 -g -w 1

systemctl restart httpd

 client:测试主机

NAT:ip:172.25.254.200/24;gateway:172.25.254.100

systemctl disable --now firewalld.service

测试效果如下: 

 

 

http://www.lryc.cn/news/418440.html

相关文章:

  • 在Excel中启用宏 (~ ̄▽ ̄)~
  • 连接投影仪/显示器只能扩展不能复制的解决方案
  • 数据库基础知识
  • java JVM 锁消除
  • 基于 Java Supplier与Predicate 封装自动重试机制通用接口
  • Java面试题(基础篇)②
  • 【docker快捷部署系列二】用docker-compose快速配置多个容器,docker部署Springboot+Vue项目和mysql数据库
  • Java新手指南:从菜鸟到编程大师的趣味之路-类和对象
  • 计算机毕业设计选题推荐-房屋租赁系统-Java/Python项目实战
  • LeetCode 3131.找出与数组相加的整数 I:最小值之差(多语言一行版)
  • Win32注册表操作
  • 白骑士的PyCharm教学高级篇 3.3 Web开发支持
  • SpringAOP-底层实现源码解析
  • 【C语言初阶】C语言操作符全攻略:提升编程效率的关键步骤
  • 2007-2023年上市公司金融化程度测算数据(含原始数据+计算代码+计算结果)
  • 【时时三省】(C语言基础)操作符
  • 常用API(三)
  • 内存管理问题总结
  • 十七、Intellij IDEA2022.1.1下载、安装、激活
  • 【Material-UI】Button Group 中的 Disabled Elevation 功能
  • Java RESTful API 测试:使用 RestAssured
  • 将nestjs项目迁移到阿里云函数
  • 边缘计算×AI:绘制未来实时智能的宏伟蓝图
  • 实现关系运算符的重载
  • 【css】使用CSS绘制奥运五环--巴黎奥运
  • 【Python数据处理】MatplotlibNumpyPandas常用API整理
  • Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心
  • 条形码与二维码报表
  • 数据采集工具之Flume
  • 【24年最新】AI大模型零基础入门到精通学习资料大全,学完你就是LLM大师!