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

lvs介绍与应用

LVS介绍

LVS(Linux Virtual Server)是一种基于Linux操作系统的虚拟服务器技术,主要用于实现负载均衡和高可用性。它通过将客户端请求分发到多台后端服务器上,从而提高整体服务的处理能力和可靠性。lvs是基于集群的方式实现

集群和分布式

集群:多个相同的应用,部署在不同的服务器上,提供统一的服务,以及同样的功能,机器的性能大致相同
分布式:把不同的组件部署在不同的服务器上,组件之间(应用)依靠网络进行通信,实现定制化的功能

系统性能的扩展方式
系统性能的扩展方式:
1、垂直扩展,向上扩展,提升计算机的性能(硬件性能)。性能提升是有瓶颈。
2、水平扩展,向外扩展,增加设备的方式提供性能。


集群的类型:

1、负载均衡:LB(load balancing)
2、HA:high Availiablity 高可用,负载均衡的高可用,主备高可用(keepalive用的就是vrrp协议)

系统的可靠性指标
系统的可靠性指标:值范围:0-1
MTBF:平均无故障时间
MTTR:平均恢复时间
A=MTBF/(MTBF+MTTR)*100%
得出的结果A无限接近于1,才好
停机时间分为计划内停机时间和计划外的停机时间
计划内停机时间:这个是不算在故障时间内的
计划外的停机时间:这算在故障时间内

LVS集群的术语

VS:virtual server lvs的逻辑名字,外部访问lvs的ip地址和端口
DS:director server lvs集群当中的主服务器,调度器,是整个集群的核心,接受客户端的请求然后根据负载均衡的算法转发到后端的RS
RS:real server lvs集群中的真实服务器,也就是后端服务器,接受调度器转发过来的请求
CIP:client ip 客户端的ip地址
VIP:virtual ip 集群对外提供好的虚拟ip地址
DIP:调度器的ip地址
RIP:后端服务器的ip地址

LVS的负载均衡的方式
NAT模式:NAT方式是最常用的负载均衡方式之一
DR模式:直连路由模式,性能最高
TUN:隧道模式

NAT模式

NAT模式:NAT方式是最常用的负载均衡方式之一
NAT的性能较差,第一要进行转换,第二要进行数据包的路由
NAT模式的后端真实服务器10-30台之间
lvs的nat:调度器的压力很大,地址转换,负载均衡算法,数据包转发,响应,非常影响性能
工具:ipvsadm 管理和配置lvs集群的工具,集成在linux系统的内核当中

ipvsadm的操作命令

命令	含义
-E	修改
-A	添加虚拟服务器
-D	删除整个虚拟服务器,虚拟服务器对应的就是后台的真实服务器
-s	指定负载均衡的算法,加载时必须要声明算法,rr (轮询),wrr (加权轮询) ,lc (最小连接数),wlc(加权最小连接数)
-a	添加真实服务器
-m	表示集群使用nat模式
-g	表示使用DR模式
-i	表示使用tun模式
-w	设置权重
-l	列表形式
-n	数字化的显示ip和端口
-t	指定调度器的vip地址的ip和端口
-r	指定RIP的ip和端口

在虚拟机上实现nat模式

配置:

apt -y install ipvsadm
modprobe ip_vs #加载模块
添加一个网卡
vim /etc/netplan/01-network-manager-all.yaml
	ens37:
	  ipv4:no
	  addresses;【12.0.0.10/24】
systemctl restart ipvsadm
systemctl status ipvsadm
ipvsadm -C#清空所有ipvsadm的策略
ipvsadm  -A -t 12.0.0.10:80 -s rr #添加虚拟服务器
ipvsadm -a -t 12.0.0.10:80 -r 192.168.42.30:80 -m  
ipvsadm -a -t 12.0.0.10:80 -r 192.168.42.40:80 -m 
#当访问12.0.0.10时,数据包可以转发到的真实服务器之一,-m 使用nat模式
vim  /etc/sysctl.conf
	第28行去掉注释
	net.ipv4.ip_forward=1
iptables -t nat -A POSTPOUTING -s 192.168.42.0/24 -o ens37 -j SNAT -- to 12.0.0.10

nginx2和nginx3
vim /etc/netplan/01-network-manager-all.yaml
	gateway4: 192.168.42.20
netplan apply
systemctl restart nginx

客户端 12.0.0.11
vim /etc/netplan/01-network-manager-all.yaml
	ens33:
	  ipv4:no
	  addresses;【12.0.0.10/24】
	  gateway4: 192.168.42.20
netplan apply

DR模式:

DR模式:直连路由模式
DR模式虚拟出一个ip,这个虚拟访问用来访问的,客户端都是访问虚拟的ip地址。
虚拟IP地址也是在调度器上,调度器根据负载均衡算法选择一条RS,RS处理完请求之后直接响应给客户端,不是由调度器再来响应客户端
1、直接路由模式就是二层转发
调度器的ip和真实服务器的ip必须在同一网段,同一网段才能进行二层转发。
根据内核进行判断,数据包判断目标是本机的VIP,ipvs对数据包的请求进行分析,是否在集群的服务范围之内。
是的话,对数据包进行重新封装,源mac地址是vip地址,目标mac地址是真实服务器的地址。
源ip和目的ip地址都没有发生变化。

DR模式的特点

1、调度器和真实服务器必须在同一网段
2、真实服务器的地址可以是内网也是公网,如果RIP是公网可以直接(没有人做公网)
3、vip地址在调度器上有,在真实服务器也需要配置
ARP根据mac地址,找到对应的ip地址,如果不配置调度服务器和真实服务器之间无法通信
修改内核的方式,让真实的物理地址来响应请求
4、所有真实服务器的网关不能指向到调度器的ip地址。真实服务器的服务器的数据不通过调度器进行转发

DR模式的配置

真实网卡
调度器和nginx2,nginx3
vim /etc/netplan/01-network-manager-all.yaml
	ens38
	dhcp:no
	addresses: [192.168.233.100/24]
netplan apply

调度器
vim /etc/sysctl.conf
	net.ipv4.conf.all.send_redirects=0
	net.ipv4.conf.default.send_redirects=0
	net.ipv4.conf.ens37.send_redirects=0
sysctl -p
route add -host 192.168.42.100 dev ens38
ipvsadm -A -t 192.168.233.100:80 -s wrr
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.11:80 -g -w 3
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.12:80 -g -w 8
 
nginx2和nginx3
vim /etc/sysctl.conf
	net.ipv4.conf.ens38.arp_ignore = 1
	net.ipv4.conf.ens38.arp_announce = 2
	net.ipv4.conf.ens38.arp_ignore = 1
	net.ipv4.conf.ens38.arp_announce = 2
sysctl -p
route add -host 192.168.233.100 dev ens38
systemctl restart nginx

http://www.kler.cn/a/446563.html

相关文章:

  • 鸿蒙开发(18)arkTS类型
  • 【开源免费】基于SpringBoot+Vue.JS房屋租赁管理系统(JAVA毕业设计)
  • Go vendor
  • 时间序列预测论文阅读和相关代码库
  • 【Jenkins】pipeline 的基础语法以及快速构建一个 jenkinsfile
  • 从源码分析swift GCD_DispatchGroup
  • 提示词工程-Prompt Engineering
  • 关于小程序内嵌h5打开新的小程序
  • Spring Boot 核心技术解析与应用实践
  • 【深度学习量化交易10】miniQMT快速上手教程案例集——使用xtQuant获取板块及成分股数据篇
  • IIS漏洞复现
  • 如何进行JS框架搭建
  • 一二三物联网 | 工业技改盛事,共绘产业升级新篇章
  • 递归实现指数型枚举(递归)
  • pydantic BaseModel
  • C++点云大文件读取
  • BenchmarkSQL使用教程
  • object-c 2.0入门笔记
  • srping2.0+升级到spring3.0+遇到的问题,es部分记录一下
  • 详解Linux防火墙-Firewalld原理与实战操作
  • 常用的消息中间件(ActiveMQ、RabbitMQ、RocketMQ、Kafka)面试精华
  • Git(10)之忽略指定文件改动
  • iOS 多个输入框弹出键盘处理
  • 我在华为的安全日常
  • 嵌入式硬件面试题
  • Pycharm和Jupyter Notebook的比较【笔记】