LVS简介及LVS-NAT负载均衡群集的搭建

news2024/11/23 13:39:54

目录

 

一、LVS群集简介

1.群集的含义和应用场景

2.性能扩展方式

3.群集的分类

负载均衡(LB)

高可用(HA)

高性能运算(HPC)

二、LVS负载均衡群集简介及搭建

1.负载均衡群集架构

2.三种工作模式

3.启用LVS虚拟服务

4.LVS调度算法

(1)固定调度算法

(2)动态调度算法

5.使用ipvsadm管理工具

6.部署实例

(1)配置nfs共享存储器

(2)配置节点服务器

(3)配置负载调度服务器

 

一、LVS群集简介

1.群集的含义和应用场景

        群集是为解决某个特定问题将多台计算机组合起来形成的单个系统,由多台主机构成,但对外只表现为一个整体,相当于一台大型计算机提供服务。

        互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求,所有产生了LVS群集技术提供稳定高效服务。

2.性能扩展方式

  • 纵向扩展——对服务器的CPU、内存、硬盘等硬件进行升级或者扩容来实现,但存在性能上限会有瓶颈,成本昂贵,收效比不高等问题。
  • 横向扩展——通过增加服务器主机数量来应该高并发的场景。

3.群集的分类

负载均衡(LB)

        提高应用系统的响应效率,处理更多的访问请求,减少延迟,提高并发和负载能力

        LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如“DNS轮询”,“反向代理”等。

高可用(HA)

        提高应用系统的可靠性,减少服务中断时间,确保服务的连续性

        HA的工作方式包括双工主从两种模式,双工即所有节点同时在线,主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如“故障切换”,“双机热备”等。

高性能运算(HPC)

        以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力。

        高性能依赖于“分布式运算”、“并行计算”,通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,“云计算”,“网格计算”等。

二、LVS负载均衡群集简介及搭建

负载均衡群集是目前企业中用的最多的群集类型

1.负载均衡群集架构

第一层,负载调度器(Load Balancer或Director)

        访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。

第二层,服务器池(Server Pool)

        群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。

第三层,共享存储(Share Storage)

        为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性。共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

2.三种工作模式

NAT(地址转换)

        调度器作为所有节点服务器的网关,既作客户端的访问入口,也作节点服务器响应的访问出口,也就意味着调度器将成为整个集群系统的瓶颈

        由于再转发过程中做了地址转发,对于节点服务器的安全性比其它模式较好。

        调度器至少要有2个网卡,一个承载VIP用于接收客户端的请求,另一个用于使用私有IP在同一个局域网中与节点服务器相互通信。

DR(直接路由)

        调度器只负责接收客户端的请求,并根据调度算法转发给节点服务器;节点服务器在处理完请求后是直接响应返回给客户端,响应的数据包不经过调度器。
        性能比NAT模式高。
        调度器和节点服务器使用私有IP在同一个局域网中与节点服务器相互通信。

TUN(IP隧道)

        架构与DR相类似,但是节点服务器分散在互联网各个位置,都具有独立的公网IP,通过专用IP隧道与调度器相互通信。

3.启用LVS虚拟服务

        LVS现在已成为Linux内核的一部分,默认编译为ip_vs模块,必要时能够自动调用。在CentOS 7系统中,以下操作可以手动加载ip_vs模块,并查看当前系统中ip_vs模块的版本信息。

4.LVS调度算法

(1)固定调度算法

轮询调度(rr):将请求依次分配给不同的RS节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。

加权轮询调度(wrr):依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。

目的地址哈希调度(dh):以目的地址为关键字查找一个静态hash表来获得所需RS。

源地址哈希调度(sh):以源地址为关键字查找一个静态hash表来获得需要的RS。

(2)动态调度算法

最小连接数调度(lc):IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。

加权最小连接数调度(wlc):假设各台RS的权值依次为x,当前tcp连接数依次为y,依次去y/x为最小的RS作为下一个分配的RS。

基于地址的最小连接数调度(lblc):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下次分配的首先考虑。

5.使用ipvsadm管理工具

ipvsadm [选项] 

常用选项

-A添加虚拟服务器
-D删除整个虚拟服务器
-s指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a表示添加真实服务器(节点服务器)
-d删除某一个节点
-t指定 VIP地址及 TCP端口
-r指定 RIP地址及 TCP端口
-m表示使用 NAT群集模式
-g表示使用 DR模式

-i

表示使用 TUN模式

-w

设置权重(权重为 0 时表示暂停节点)
-p 60表示保持长连接60秒(默认关闭连接保持)
-l列表查看 LVS 虚拟服务器(默认为查看所有)

-n

以数字形式显示地址、端口等信息,常与" -l " 选项组合使用。ipvsadm -ln

6.部署实例

实验准备

负载调度器:内网关 ens33:192.168.116.1,外网关 ens36:12.0.0.1
Web节点服务器1:192.168.116.10
Web节点服务器2:192.168.116.20
NFS服务器:192.168.116.50
客户端:12.0.0.12

(1)配置nfs共享存储器

#关闭防火墙和selinux
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

#下载nfs服务
yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service
systemctl enable nfs.service
systemctl enable rpcbind.service

#创建两个共享目录
cd /opt/
mkdir abc def
chmod 777 abc/ def/
echo 'welcome to abc.com!' > abc/index.html
echo 'welcome to def.com!' > def/index.html

#修改nfs发布策略
vim /etc/exports
/usr/share *(ro,sync)
/opt/abc 192.168.116.0/24(rw,sync)
/opt/def 192.168.116.0/24(rw,sync)

#在线发布
exportfs -rv

(2)配置节点服务器

首先需要节点服务器提供web服务(apache、nginx等都可以) 

将网页根目录挂载到共享存储服务器

web服务器1(nginx)

#启动nfs服务并共享
systemctl start rpcbind nfs
mount 192.168.116.50:/opt/abc /usr/local/nginx/html/

web服务器2(apache)

#启动nfs服务并共享
systemctl start rpcbind nfs
mount 192.168.116.50:/opt/def /var/www/html/

(3)配置负载调度服务器

配置网卡

#关闭防火墙和selinux
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0

#添加ip转发功能
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

#设置SNAT地址转发
iptables -F
iptables -t nat -F
iptables -t nat -A POSTROUTING -s 192.168.116.0/24 -o ens33 -j SNAT --to-source 12.0.0.1

#下载ipvsdam并加载ip_vs通用模块
yum -y install ipvsadm
modprobe ip_vs

#添加并启动ipvsadm
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
systemctl enable ipvsadm.service

#添加lvs策略
ipvsadm -A -t 12.0.0.1:80 -s rr -p 5
ipvsadm -a -t 12.0.0.1:80 -r 192.168.116.10:80 -m -w 1
ipvsadm -a -t 12.0.0.1:80 -r 192.168.116.20:80 -m -w 1

#启用策略
ipvsadm

#保存策略(恢复可使用 ipvsadm-restore < /etc/sysconfig/ipvsadm)
ipvsadm-save > /etc/sysconfig/ipvsadm

使用外网客户端访问测试(等待连接保持失效后刷新,都能访问到则实现负载均衡)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于servlet的简单登录界面

前端登录发起请求 1.安装axios axios 是一个 HTTP 的网络请求库 安装 npm install axios &#xff08;脚手架中&#xff09; 在 main.js 中配置 axios //导入网络请求库 import axios from axios; //设置访问后台服务器地址&#xff1a;ip&#xff0c;端口和项目名字&#xff0…

基于Python Django实现KNN协同电影推荐系统

系统说明 基于Python Django实现KNN协同电影推荐系统&#xff0c;有用户端和管理后端&#xff0c;完整可在任何环境运行。 KNN&#xff08;K-Nearest Neighbor&#xff09;算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类&#xff0c;也能用于回归。KNN通过测量…

使用前端JS上传文件到阿里云的OSS服务器,PHP生成STS临时访问凭证

官方教程地址&#xff1a;https://help.aliyun.com/document_detail/383950.html?spma2c4g.383952.0.0 这篇文章主要是指出官方教程没有说明的地方 后端代码 并非是完全完全不需要后端的参与。需要后端生成凭证&#xff0c;防止秘钥泄露 这里是官方的说明文档&#xff1a;使…

obj文件解析及用meshlab查看

举例 它以txt打开后如下所示 v -0.3 0 0.3 v 0.4 0 0 v -0.2 0.3 -0.1 v 0 0.4 0 # 4 verticesg head s 1 f 1/1/1 2/1/1 4/1/1 f 1/1/1 2/1/1 3/1/1 f 2/1/1 4/1/1 3/1/1 f 1/1/1 4/1/1 3/1/1一般而言obj文件以txt格式打开后包含如下片段 v -0.3 0 0.3 vt 0.625 0.458 0.00…

FPGA纯verilog实现UDP协议栈,GMII接口驱动88E1111,提供工程源码和技术支持

目录 1、前言2、我这里已有的UDP方案3、该UDP协议栈性能4、详细设计方案网络PHYGMII AXIS接口模块AXIS FIFOUDP协议栈 5、vivado工程1-->B50610 工程6、上板调试验证并演示准备工作查看ARPUDP数据回环测试 7、福利&#xff1a;工程代码的获取 1、前言 目前网上的fpga实现ud…

密码学学习笔记(七):Modular arithmetic - 模算数

简介 模算术是整数的一种算术结构&#xff0c;其中数字在达到特定值时“环绕”。模运算使我们能够简单地生成群、环和域&#xff0c;这是大多数现代公钥密码系统的基本构造部分。其中数字超过一定值后&#xff08;称为模&#xff09;后会“卷回”到较小的数值。 模算数常见的…

5.2ORB-SLAM3之回环矫正

1.简介 在上一章《回环检测之检测是否存共视区域》已经介绍了检测共视区域的部分&#xff0c;接下来就是对共视区域进行回环矫正或者地图融合。 回环矫正和之前的ORBSLAM系列一致&#xff0c;就是消除因为长时间运动产生的位姿累计误差和尺度漂移。在ORBSLAM3中新增了多地图系…

idea集成maven-mvnd

maven-mvnd是什么&#xff1f; 参考文档&#xff1a; Maven加强版 — mvnd的使用测试 - 知乎 1.下载mvnd安装包 Releases apache/maven-mvnd GitHub 2.修改配置文件&#xff1a;安装包中的conf目录下的mvnd.properties文件 配置maven settings的地址&#xff1a; 注意&am…

MySQL配置主从备份

文章目录 1.什么是主从备份2. 原理3.配置主服务器4.配置从服务器4.1进入数据库&#xff0c;准备建立连接4.2开启 slave 连接&#xff0c;主备机连接成功&#xff0c;数据开始同步4.3查看有关从属服务器线程的关键参数的信息 1.什么是主从备份 主从复制简单来说就是主库把增删改…

环境搭载vscode

Windows 10 下 VS Code 配置 C 开发环境&#xff08;MinGW&#xff09; 读书读傻了哟 配置 C/C 环境   主要是配置launch.json、tasks.json这两个文件&#xff08;当然&#xff0c;还有别的.json文件&#xff0c;可有可无&#xff09;。这两个文件位于.vscode文件夹下&#…

mysql--第一天基础操作

1.创建数据库 2.查询创建数据的语句 3.使用数据库&#xff0c;查询当前默认的数据库以及使用的编码方式校验规则 4.删除数据库 5.在一张表中定义多个字段&#xff0c;要使用今天提到的所有的数据类型&#xff08;数字&#xff0c;文本&#xff0c;日期&#xff09; 查看表结构

产品方案设计高效的4大注意事项

做产品方案时&#xff0c;我们容易遭遇&#xff1a;未澄清需求、未梳理业务方案、缺少思考过程以及缺少对比方案等误区&#xff0c;往往会造成产品方案并不能完全解决用户问题&#xff0c;项目后期容易遇到需求变更等风险。 因此如何如何高效设计产品方案&#xff1f;就显得尤为…

SpringCloud入门实战(十二)-Sleuth+Zipkin分布式请求链路跟踪详解

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

Django的数据库配置、生成(创建)过程、写入数据、查看数据的学习过程记录

目录 01-配置数据库信息02-安装Python的MySQL数据库驱动程序 mysqlclient03-安装Mysql&#xff0c;并启动Mysql04-定义Django的数据库模型(定义数据表-编写models.py文件)05-按照数据的配置生成数据库(执行迁移命令)05-01-生成迁移执行文件05-02-执行数据库模型迁移 06-查看数据…

Vue.js Js引入相关

Vue.js vue.js 新增了一些语法,有一些旧的模组并没有使用"先进"的export和import语法 即 es语法进行模块化。 <script></script>但 editor.md 真的很好用. 但很抱歉,它在vue中无法使用 es6 进行导入。 所以需要使用传统的方式进行导入。 很多人会把js…

【ARM Coresight 系列文章 2.1 - ARM Coresight 组件介绍】

文章目录 1.1 Coresight 组件介绍1.1.1 Trace sources1.1.2 Trace Sinks1.1.2 Trace links 1.1 Coresight 组件介绍 图 1-1 1.1.1 Trace sources 什么是 Trace source? 在ARM Coresight技术中&#xff0c;Trace Source是指处理器中的一个组件&#xff0c;用于产生和发送跟踪数…

全球十大看黄金走势免费app软件最新名单推荐(综合版)

选择黄金走势免费app软件时&#xff0c;有几个关键因素需要考虑。首先&#xff0c;要选择可靠的软件平台&#xff0c;确保其在金融市场上拥有良好的声誉和高度的信任度。此外&#xff0c;软件应提供及时准确的市场数据&#xff0c;包括实时行情、交易量和技术指标等&#xff0c…

高速PCB布局布线规范

目录 一、容抗/感抗 1.容抗 2.感抗 二、寄生电容/分布电容/杂散电容 1.寄生电容 2.分布电容 3.杂散电容 4.寄生电容/分布电容/杂散电容对信号的影响 5.怎么减小分布电容&#xff1f; 三.寄生电感 1.什么是寄生电感&#xff1f; 2.怎么减小寄生电感&#xff1f; 四.…

ROS:节点名称重名

目录 一、前言二、rosrun设置命名空间与重映射2.1设置命名空间2.2rosrun名称重映射2.3rosrun命名空间与名称重映射叠加 三、launch文件设置命名空间与重映射四、编码设置命名空间与重映射4.1C 实现:重映射4.2C 实现:命名空间4.3Python 实现:重映射 一、前言 ROS 中创建的节点是…

Python3在Windows上设置环境变量方法

Python3在Windows上设置环境变量方法&#xff0c;在环境变量中添加Python目录&#xff1a; 在命令提示框中(cmd) : 输入 path%path%;C:\Python 按下"Enter"。 注意: C:\Python 是Python的安装目录。 也可以通过以下方式设置&#xff1a; 右键点击"计算机&q…