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集群架构的组件

  1. 负载均衡器(Load Balancer):负载均衡器是LVS集群的核心组件,它接收来自客户端的请求,并根据预定义的负载均衡算法将请求转发给后端服务器。负载均衡器可以是一台物理服务器或者一组虚拟服务器。

  2. 调度器(Scheduler):调度器是负载均衡器的一部分,负责根据负载均衡算法选择合适的后端服务器来处理客户端请求。常见的调度算法包括轮询、加权轮询、最小连接数等。

  3. 后端服务器(Real Server):后端服务器是实际处理客户端请求的服务器。它们可以是一组物理服务器或者虚拟服务器,通过负载均衡器接收请求并返回响应。

  4. 网络设备:LVS集群架构通常还涉及网络设备,如交换机、路由器等,用于连接负载均衡器和后端服务器,以及处理网络流量。

LVS集群架构的工作流程

  1. 客户端发送请求到负载均衡器。

  2. 负载均衡器接收到请求后,通过调度器选择一个后端服务器。

  3. 负载均衡器将请求转发给选定的后端服务器。

  4. 后端服务器处理请求并生成响应。

  5. 后端服务器将响应发送回负载均衡器。

  6. 负载均衡器将响应返回给客户端。

LVS的作用

  1. 主要用于多服务器的负载均衡

  2. 工作在网络层,可实现高性能,高可用的服务集群技术

  3. 廉价, 可以把许多低性能服务器组合在一起形成一个超级服务器

  4. 易用,配置简单,有多种负载均衡的方式

  5. 稳定可靠,即使在集群的服务器中某台服务器无法正常工作也不会影响整体效果

  6. 可扩展性好

 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    #保存策略

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python机器学习】实验15 将Lenet5应用于Cifar10数据集(PyTorch实现)

文章目录 CIFAR10数据集介绍1. 数据的下载2.修改模型与前面的参数设置保持一致3. 新建模型4. 从数据集中分批量读取数据5. 定义损失函数6. 定义优化器7. 开始训练8.测试模型 9. 手写体图片的可视化10. 多幅图片的可视化 思考题11. 读取测试集的图片预测值(神经网络的…

BDA初级分析——SQL清洗和整理数据

一、数据处理 数据处理之类型转换 字符格式与数值格式存储的数据,同样是进行大小排序, 会有什么区别? 以rev为例,看看字符格式与数值格式存储时,排序会有什么区别? 用cast as转换为字符后进行排序 SEL…

陕西科技大学改考408!附考情分析

改考信息 8月14日,陕西科技大学公布了2024年硕士研究生招生目录(初稿),其中不难发现083500软件工程初试专业课由819数据结构改为408计算机学科专业基础 图片:陕西科技大学24专业目录-软件工程学硕 https://yjszs.sus…

Docker容器:Docker-Compose

Docker容器:Docker-Compose 一.Docker-Compose概念 1.Docker-Compose使用场景 一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。服务编排有很多种技术方案,今天是介绍 Docker 官方产品 Docker Com…

Redis 5环境搭建

一、环境搭建 如果是Centos8,yum 仓库中默认的 Redis版本就是5,直接yum install即可。如果是Centos7,yum 仓库中默认的 Redis版本是3系列,比较老~ 为了我们能在 Centos7中下载到 Redis5 首先要安装额外的软件源 sudo yum insta…

Python爬取斗罗大陆全集

打开网址http://www.luoxu.cc/dmplay/C888H-1-265.html F12打开Fetch/XHR,看到m3u8,ts,一眼顶真,打开index.m3u8 由第一个包含第二个index.m3u8的地址,ctrlf在源代码中一查index,果然有,不过/…

用加持了大模型的 Byzer-Notebook 做数据分析是什么体验

Byzer-Notebook 是专门为 SQL 而研发的一款 Web Notebook。他的第一公民是 SQL,而 Jupyter 则是是以 Python 为第一公民的。 随着 Byzer 引擎对大模型能力的支持日渐完善, Byzer-Notebook 也在不自觉中变得更加强大。我和小伙伴在聊天的过程中才发现他已…

负载均衡下的webshell

文章目录 1.场景描述2.在蚁剑里添加 Shell3.因为负载均衡而出现的问题4.问题解决方案4.1 方案14.2 方案24.3 方案3 1.场景描述 当前手里有一个以docker部署的Tomcat负载均衡环境。主机对外ip和端口为192.168.100.130:18080 我们假设其为一个真实的业务系统,存在一…

Ubuntu20.04安装SNMP服务

在线安装snmp 1.安装snmp服务 sudo apt-get install updatesudo apt-get install snmp snmpd snmp-mibs-downloader2.重启SNMP服务 sudo /etc/init.d/snmpd restart3.查看snmp配置 sudo grep -Ev ^$|^# /etc/snmp/snmpd.conf 离线安装SNMP (重要) 我…

WPF入门到精通:1.新建项目及项目结构

WPF(Windows Presentation Foundation)是一种用于创建 Windows 应用程序的技术,它可以通过 XAML(Extensible Application Markup Language)和 C# 或其他 .NET 语言来实现。WPF 提供了许多强大的 UI 控件和样式&#xf…

【数学建模】清风数模中正课4 拟合算法

拟合算法 在插值算法中,我们得到的曲线一定是要经过所有的函数点的;而用拟合所得到的曲线则不一样,拟合问题中,不需要得到的曲线一定经过给定的点。 拟合的目的是寻求一个函数曲线,使得该曲线在某种准则下与所有的数…

MyBaits注解开发

1、注解开发介绍 在过去使用框架开发项目,基本都采用xml作为框架的核心配置文件存在,但是这种方式开发效率还是比较地下、不灵活。 现在企业开发为了能够更快的提高开发效率,必然会使用企业级框架进行项目开发,而现在主流的框架…

钉钉公布AI版本商业定价,调用一次大模型不到5分钱

8月22日,在2023年钉钉生态大会上,钉钉总裁叶军公布了钉钉全面智能化的最新进展:已有17条产品线、55个场景全面接入大模型,完成智能化再造;钉钉同时面向生态伙伴和客户开放智能化底座AI PaaS,表示将用大模型…

学习设计模式之观察者模式,但是宝可梦

前言 作者在准备秋招中,学习设计模式,做点小笔记,用宝可梦为场景举例,有错误欢迎指出。 观察者模式 观察者模式定义了一种一对多的依赖关系,一个对象的状态改变,其他所有依赖者都会接收相应的通知。 所…

Windows 11 + Ubuntu20.04 双系统 坑里爬起来

ThinkPad x390 安装双系统,原有的磁盘太小,扩充了磁盘重新装系统,出现的问题,加以记录。 1. windows和ubuntu谁先安装,两个都可以,一般建议先安装windows,后安装ubuntu 2. 安装windows后&…

数据库系统课设——基于python+pyqt5+mysql的酒店管理系统(可直接运行)--GUI编程

几个月之前写的一个项目,通过这个项目,你能学到关于数据库的触发器知识,python的基本语法,python一些第三方库的使用,包括python如何将前后端连接起来(界面和数据),还有界面的设计等…

3、Spring_容器执行

容器执行点 1.整合 druid 连接池 添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version> </dependency>1.硬编码方式整合 新建德鲁伊配置 <?xml version"1.…

Unity 之 ScreenPointToRay() (将点转换成射线的方法)

文章目录 ScreenPointToRay() ScreenPointToRay() ScreenPointToRay() 是Unity中Camera类的一个方法&#xff0c;用于将屏幕上的一个点转换为一条射线。这条射线的起点是摄像机在屏幕上对应的点&#xff0c;方向是从摄像机出发指向那个点。这在进行射线命中检测时非常有用&…

CTFhub-sql-整数注入

常用函数&#xff1a;version()、database()、user() 判断存在 sqli 注入 1 1 and 11 1 and 12 因为 11 为真&#xff0c;12 为假&#xff0c;且 11 与 1 显示的数据一样&#xff0c;那么就存在 sqli 注入 查询该数据表的字段数量 一、 2 3 1,2成功带出数据&#xff0c;3没…

el-button实现按钮,鼠标移入显示,移出隐藏

2023.8.18今天我学习了 如何实现鼠标移入显示按钮&#xff0c;鼠标移出隐藏按钮。 效果如图&#xff1a; 鼠标移入时&#xff1a; 鼠标移出时&#xff1a; mouseover //鼠标移入事件 mouseleave //鼠标移出事件 原本我是想直接在el-button写入这两个方法&#xff0c;但是elem…