LVS负载均衡集群-NAT模式部署
集群
集群:将多台主机作为一个整体,然后对外提供相同的服务
集群使用场景:高并发的场景
集群的分类
1.负载均衡器集群
减少响应延迟,提高并发处理的能力
2,高可用集群
增强系统的稳定性可靠性,减少服务器的中断时间,减少损失
3,高性能集群
高性能的运算能力,做分布式提高CPU的运算速度,做并发处理
负载均衡集群架构
第一层:负载调度器
通过调度算法以及RIP发送
第二层:服务池
所有服务器使用的资源
第二层:共享存储
提供网站,存储资源
负载均衡器的群集工作模式
NAT模式(地址转换)
调度器作为网关,是访问请求的入口,同样是响应请求的出口,可以提高安全性但是在高并发场景下负载压力很高
TUN模式(IP隧道)
访问请求的入口,响应不经过调度器,但是需要大量的公网IP。还需要建立专用的IP隧道,成本太高,数据的转发受IP隧道的额外影响DR模式(直接路由)
仅是访问请求的入口,响应数据不经过调度器,但是节点服务器和调度器在一个物理网络中,数据进行转发不受额外的影响
LVS虚拟服务器
确认是否支持LVS------modprobe ip_vs
LVS负载均衡集群架构
LVS的基本概念
LVS(Linux Virtual Server)集群架构是一种基于Linux操作系统的负载均衡解决方案。它通过将负载均衡功能实现在操作系统内核层面,将客户端请求分发到后端服务器集群,以提高系统的性能、可靠性和可扩展性。
LVS集群架构具有高性能、高可靠性和可扩展性的特点,可以通过增加后端服务器来扩展系统的处理能力。此外,LVS还支持会话保持、健康检查、故障切换等功能,以提供更好的用户体验和系统可用性。
LVS集群架构的组件
-
负载均衡器(Load Balancer):负载均衡器是LVS集群的核心组件,它接收来自客户端的请求,并根据预定义的负载均衡算法将请求转发给后端服务器。负载均衡器可以是一台物理服务器或者一组虚拟服务器。
-
调度器(Scheduler):调度器是负载均衡器的一部分,负责根据负载均衡算法选择合适的后端服务器来处理客户端请求。常见的调度算法包括轮询、加权轮询、最小连接数等。
-
后端服务器(Real Server):后端服务器是实际处理客户端请求的服务器。它们可以是一组物理服务器或者虚拟服务器,通过负载均衡器接收请求并返回响应。
-
网络设备:LVS集群架构通常还涉及网络设备,如交换机、路由器等,用于连接负载均衡器和后端服务器,以及处理网络流量。

LVS集群架构的工作流程
-
客户端发送请求到负载均衡器。
-
负载均衡器接收到请求后,通过调度器选择一个后端服务器。
-
负载均衡器将请求转发给选定的后端服务器。
-
后端服务器处理请求并生成响应。
-
后端服务器将响应发送回负载均衡器。
-
负载均衡器将响应返回给客户端。
LVS的作用
-
主要用于多服务器的负载均衡
-
工作在网络层,可实现高性能,高可用的服务集群技术
-
廉价, 可以把许多低性能服务器组合在一起形成一个超级服务器
-
易用,配置简单,有多种负载均衡的方式
-
稳定可靠,即使在集群的服务器中某台服务器无法正常工作也不会影响整体效果
-
可扩展性好
LVS负载均衡器的调度算法
轮询
平等的对待每一台服务器
加权轮询
根据调度器设置的权重值来分发请求,权重值越高,被分发的请求越多,主要是为了保证性能比较强的服务器接受的请求最多
最少连接
根据服务器的已建立的连接数确定分发,收到的请求分发给连接数少的节点
加权最少连接
在服务器节点性能有差异时,性能较高的节点承担更多比例的请求
LVS基于内核态的netfilter框架实现的IPVS功能,工作在内核态用户配置vip等相关信息并且传递
IPVS,就需要用到IPVSadm工具
ipvsadm: IPVSadm是lvs用户态的配套的工具,可以实现VIP和RS 增删改查
ipvsadm工具
工具选项
-A:添加虚拟服务器
-D:删除整个虚拟fuwq
-s:指定负载调度算法(轮询,加权轮询,最少连接,加权最少连接,wlc)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定VIP地址及TCP端口
-r:指定RIP地址及TCP端口
-m:表示使用NAT群集模式
-g:表示使用DR模式
-i:表示使用TUN模式
-w:设置权重(权重为0时表示暂停节点)
-p60:表示保持长连接60秒
-l:列表查看LVS虚拟服务器(默认为查看所有)
-n:以数字形式显示地址,端口等信息,常与“-l”选项组合使用
LVS-NAT部署实战
创建虚拟服务器
添加删除服务器节点
查看集群节点情况
保存负载分配策略

LVS负载调度器:ens33:20.0.0.50 ens37:10.0.0.1(vmnet3)(添加一个新的网卡进行配置)
Web1 节点服务器1:20.0.0.60
Web2 节点服务器2:20.0.0.70
NFS服务器:20.0.0.80
客户端(win10):10.0.0.12 (Vmnet3)
注意:① win10虚拟机(客户端)网关设置为10.0.0.1
② web服务器 网关设置为 20.0.0.50
部署共享存储(NFS服务器:20.0.0.80)
#关闭安全机制
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0#安装服务
yum install -y nfs-utils rpcbindsystemctl start nfs.service
systemctl start rpcbind.service
systemctl enable nfs.service
systemctl enable rpcbind.service#创建共享目录
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benetvim /etc/exports
/usr/share *(ro,sync)
# 这一行指定了 /usr/share 目录的共享设置。* 表示允许任何客户端访问,(ro,sync) 表示只读权限,并且同步写入/opt/kgc 20.0.0.0/24(rw,sync)
/opt/benet 20.0.0.0/24(rw,sync)
# 指定了 /opt/benet 目录的共享设置,只允许 20.0.0.0/24 网段的客户端访问,具有读写和同步写入。#发布共享
exportfs -rv
showmount -e
配置节点服务器(后端服务器)
20.0.0.60 20.0.0.70
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0#修改网卡网关为LVS服务器
需要将两个节点服务器60和70的网关设置为调度器的地址20.0.0.50
20.0.0.60
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.60
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart network20.0.0.70
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=static
IPADDR=20.0.0.70
NETMASK=255.255.255.0
GATEWAY=20.0.0.50
#DNS1=114.114.114.114
systemctl restart networkyum install -y httpd
systemctl start httpd.service
systemctl enable httpd.serviceyum install -y nfs-utils rpcbindsystemctl start rpcbind.service
systemctl enable rpcbind.serviceshowmount -e 20.0.0.80#web1:20.0.0.60
mount.nfs 20.0.0.80:/opt/kgc /var/www/html/
#用于将远程的NFS共享目录挂载到本地目录echo 'this is kgc' > /var/www/html/index.html#永久配置方法
vim /etc/fstab
20.0.0.80:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a#web2:20.0.0.70
mount.nfs 20.0.0.80:/opt/benet /var/www/html/echo 'this is benet' > /var/www/html/index.html#永久挂载
vim /etc/fstab
20.0.0.80:/opt/benet /var/www/html nfs defaults,_netdev 0 0mount -a
配置负载调度器LVS
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0------(1)、配置SNAT转发规则-------
vim /etc/sysctl.conf
net.ipv4.ip_forward=1sysctl -p
或者:echo '1' > /proc/sys/net/ipv4/ip_forwardiptables -t nat -F
iptables -F
iptables -t nat -nLiptables -t nat -A POSTROUTING -s 20.0.0.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
#将源IP地址为20.0.0.0/24的数据包的源地址转换为10.0.0.1 指定接口为ens37转发-------(2)、加载LVS内核模块-------------
modprobe ip_vs #手动加载ip_vs模块
cat /proc/net/ip_vs #查看ip_vs版本信息-------(3)、安装ipvsadm管理工具-------------
yum install -y ipvsadm#注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadmsystemctl start ipvsadm.service------(4)、配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)-------------
ipvsadm -C #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.60:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.70:80 -m -w 1
#添加一个虚拟服务器的转发规则
#将来自10.0.0.1:80的请求转发到20.0.0.60:80的实际服务器上,并使用NAT模式进行转发。同时,使用权重1来进行负载均衡ipvsadm #启动策略ipvsadm -ln #查看节点状态,Masq代表 NAT模式
ipvsadm-save > /etc/sysconfig/ipvsadm #保存策略
相关文章:
LVS负载均衡集群-NAT模式部署
集群 集群:将多台主机作为一个整体,然后对外提供相同的服务 集群使用场景:高并发的场景 集群的分类 1.负载均衡器集群 减少响应延迟,提高并发处理的能力 2,高可用集群 增强系统的稳定性可靠性&…...
C++学习笔记总结练习:effective 学习日志
准则 1.少使用define define所定义的常量会在预处理的时候被替代,出错编译器不容易找到错误。而且还没有作用范围限制,推荐使用constdefine宏定义的函数,容易出错,而且参数需要加上小括号,推荐使用inline有的类中例如…...
Vue教程(五):样式绑定——class和style
1、样式代码准备 样式提前准备 <style>.basic{width: 400px;height: 100px;border: 1px solid black;}.happy{border: 4px solid red;background-color: rgba(255, 255, 0, 0.644);background: linear-gradient(30deg, yellow, pink, orange, yellow);}.sad{border: 4px …...
开放网关架构演进
作者:庄文弘(弘智) 淘宝开放平台是阿里与外部生态互联互通的重要开放途径,通过开放的产品技术把阿里经济体一系列基础服务,像水、电、煤一样输送给我们的商家、开发者、社区媒体以及其他合作伙伴,推动行业的…...
torch一些操作
Pytorch文档 Pytorch 官方文档 https://pytorch.org/docs/stable/index.html pytorch 里的一些基础tensor操作讲的不错 https://blog.csdn.net/abc13526222160/category_8614343.html 关于pytorch的Broadcast,合并与分割,数学运算,属性统计以及高阶操作 https://blog.csd…...
ICCV23 | Ada3D:利用动态推理挖掘3D感知任务中数据冗余性
论文地址:https://arxiv.org/abs/2307.08209 项目主页:https://a-suozhang.xyz/ada3d.github.io/ 01. 背景与动因 3D检测(3D Detection)任务是自动驾驶任务中的重要任务。由于自动驾驶任务的安全性至关重要(safety-critic),对感知算法的延…...
软件工程模型-架构师之路(四)
软件工程模型 敏捷开发: 个体和交互 胜过 过程和工具、可以工作的软件 胜过 面面俱到的文件、客户合作胜过合同谈判、响应变化 胜过 循序计划。(适应需求变化,积极响应) 敏捷开发与其他结构化方法区别特点:面向人的…...
ubuntu20.04共享文件夹—— /mnt/hgfs里没有共享文件夹
参考文章:https://blog.csdn.net/Edwinwzy/article/details/129580636 虚拟机启用共享文件夹后,/mnt/hgfs下面为空,使用 vmware-hgfsclient 查看设置的共享文件夹名字也是为空。 解决方法: 1. 重新安装vmware tools. 在菜单…...
Redis中的有序集合及其底层跳表
前言 本文着重介绍Redis中的有序集合的底层实现中的跳表 有序集合 Sorted Set Redis中的Sorted Set 是一个有序的无重复值的集合,他底层是使用压缩列表和跳表实现的,和Java中的HashMap底层数据结构(1.8)链表红黑树异曲同工之妙…...
js 小程序限流函数 return闭包函数执行不了
问题: 调用限流 ,没走闭包的函数: checkBalanceReq() loadsh.js // 限流 const throttle (fn, context, interval) > {console.log(">>>>cmm throttle", context, interval)let canRun…...
【数据结构】堆的初始化——如何初始化一个大根堆?
文章目录 源码是如何插入的?扩容向上调整实现大根堆代码: 源码是如何插入的? 扩容 在扩容的时候,如果容量小于64,那就2倍多2的扩容;如果大于64,那就1.5倍扩容。 还会进行溢出的判断,…...
【韩顺平 零基础30天学会Java】程序流程控制(2days)
day1 程序流程控制:顺序控制、分支控制、循环控制 顺序控制:从上到下逐行地执行,中间没有任何判断和跳转。 Java中定义变量时要采用合法的前向引用。 分支控制if-else:单分支、双分支和多分支。 单分支 import java.util.Scann…...
从入门到精通Python隧道代理的使用与优化
哈喽,Python爬虫小伙伴们!今天我们来聊聊如何从入门到精通地使用和优化Python隧道代理,让我们的爬虫程序更加稳定、高效!今天我们将对使用和优化进行一个简单的梳理,并且会提供相应的代码示例。 1. 什么是隧道代理&…...
19万字智慧城市总体规划与设计方案WORD
导读:原文《19万字智慧城市总体规划与设计方案WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 感知基础设施 感知基础设施架构由感知范围、感知手…...
[赛博昆仑] 腾讯QQ_PC端,逻辑漏洞导致RCE漏洞
简介 !! 内容仅供学习,请不要进行非法网络活动,网络不是法外之地!! 赛博昆仑是国内一家较为知名的网络安全公司,该公司今日报告称 Windows 版腾讯 QQ 桌面客户端出现高危安全漏洞,据称“黑客利用难度极低、危害较大”,腾讯刚刚已经紧急发布…...
python Requests
Requests概述 官方文档:http://cn.python-requests.org/zh_CN/latest/,Requests是python的HTTP的库,我们可以安全的使用 Requests安装 pip install Requests -i https://pypi.tuna.tsinghua.edu.cn/simple Requests的使用 Respose的属性 属性说明url响…...
【深入解析:数据结构栈的魅力与应用】
本章重点 栈的概念及结构 栈的实现方式 数组实现栈接口 栈面试题目 概念选择题 一、栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。栈中的数…...
安卓机显示屏的硬件结构
显示屏的硬件结构 显示屏的硬件结构主要由背光源、液晶面板和驱动电路构成。可以将液晶面板看成一个三明治的结构,即在两片偏振方向互相垂直的偏光片系统中夹着一层液晶层。自然光源通过起偏器(偏光片之一)后,变成了垂直方向的偏…...
基于swing的超市管理系统java仓库库存进销存jsp源代码mysql
本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 基于swing的超市管理系统 系统有3权限:管…...
常用系统命令
重定向 cat aa.txt > bbb.txt 将输出定向到bbb.txt cat aaa.txt >> bbb.txt 输出并追加查看进程 ps ps -ef 显示所有进程 例⼦:ps -ef | grep mysql |:管道符 kill pid 结束进程, 如 kill 3732;根据进程名结束进程可以先…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
