lvs介绍与应用

embedded/2024/12/23 11:16:20/

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.yamlens37:ipv4:noaddresses;【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.10nginx2和nginx3
vim /etc/netplan/01-network-manager-all.yamlgateway4: 192.168.42.20
netplan apply
systemctl restart nginx客户端 12.0.0.11
vim /etc/netplan/01-network-manager-all.yamlens33:ipv4:noaddresses;【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.yamlens38dhcp:noaddresses: [192.168.233.100/24]
netplan apply调度器
vim /etc/sysctl.confnet.ipv4.conf.all.send_redirects=0net.ipv4.conf.default.send_redirects=0net.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 8nginx2和nginx3
vim /etc/sysctl.confnet.ipv4.conf.ens38.arp_ignore = 1net.ipv4.conf.ens38.arp_announce = 2net.ipv4.conf.ens38.arp_ignore = 1net.ipv4.conf.ens38.arp_announce = 2
sysctl -p
route add -host 192.168.233.100 dev ens38
systemctl restart nginx

http://www.ppmy.cn/embedded/148048.html

相关文章

frameworks 之 日志打印

frameworks 之 日志打印 1. 常见日志类型2. 动态日志ProtoLog 讲解 anddroid 日志打印类型。 1. 常见日志类型 android 日志类型分为 6 类 分别为 main,system, radio, events, crash, kernel 查看帮助指令 adb shell logcat --helpmain: 用于存储大多数应用和系统…

mysql免安装版配置教程

一、将压缩包解压至你想要放置的文件夹中,注意:绝对路径中要避免出现中文 二、在解压目录下新建my.ini文件,已经有的就直接覆盖 my.ini文件内容 [mysqld] # 设置3306端口 port3306 # 设置mysql的安装目录 basedirD:\\tools\\mysql-8.1.0-win…

汽车电子零部件(15):AVM全景影像系统

概述: 使用ADAS全景监控(AVM)精确停车和操纵。这项先进技术采用多个摄像头,提供车辆周围环境的鸟瞰图。 360度全景监控系统: 360 AVM系统可以帮助驾驶员360度查看车辆周围的情况,避免发生碰撞。360 AVM系统由一个电子控制单元(ECU)和四个摄像头组成。ECU将处理四个摄…

【附源码】Electron Windows桌面壁纸开发中的 CommonJS 和 ES Module 引入问题以及 Webpack 如何处理这种兼容

背景 在尝试让 ChatGPT 自动开发一个桌面壁纸更改的功能时,发现引入了一个 wallpaper 库,这个库的入口文件是 index.js,但是 package.json 文件下的 type:"module",这样造成了无论你使用 import from 还是 require&…

【新教程】非root用户给Ubuntu server设置开机自启服务-root用户给Ubuntu server设置开机自启服务

1 思路 使用systemd用户服务 2 过程 1、创建用户服务文件: mkdir -p ~/.config/systemd/user vim ~/.config/systemd/user/my_app.service用户服务文件模板: [Unit] DescriptionSSH_ct Afterdefault.target[Service] ExecStart/home/wlg/Softwares/wyc/wyc_lin…

Vue3之性能优化

Vue3作为Vue框架的最新版本,在性能上进行了大量的优化,使得其在处理大型应用和复杂界面时表现更加出色。本文将详细介绍Vue3的性能提升、优化策略以及性能提升的实例,并结合具体代码和性能测试数据,展示Vue3在实际应用中的性能优势…

键盘常见键的keyCode和对应的键名

常见键的keyCode和对应的键名 键名keyCode描述Enter13回车键Escape27Esc键Backspace8退格键Tab9Tab键Space32空格键Arrow Up38向上箭头Arrow Down40向下箭头Arrow Left37向左箭头Arrow Right39向右箭头Shift16Shift键Control17Ctrl键Alt18Alt键Caps Lock20大写锁定键F1112F1键F…

【蓝桥杯每日一题】扫描游戏——线段树

扫描游戏 蓝桥杯每日一题 2024-12-13 扫描游戏 线段树 模拟 题目大意 有一根围绕原点 O 顺时针旋转的棒 O A OA OA ,初始时指向正上方 (Y 轴正向)。 在平面中有若干物件, 第 i 个物件的坐标为 ( x i , y i ) (x_i,y_i) (xi​,yi​), 价值为 z i z_i zi​ 。当棒扫到某个 物件…