负载均衡的作用、负载均衡常用处理方式、四层和七层负载均衡的区别、及配置方法

news2024/9/19 10:55:36

一、负载均衡的作用

解决服务器的高并发压力,提高应用程序的处理性能;

提供故障转移,实现高可用;

通过添加或减少服务器数量,增强网站的可扩展性;

在负载均衡器上进行过滤,可以提高系统的安全性;

1、提高系统性能

负载均衡可以扩展网络设备和服务器的带宽,优化访问请求在服务器组之间的分配,提高系统的反应速度和总体性能。

2、监控服务器的运行状态

负载均衡能够监控服务器的运行状态,提高整个服务器组的可靠性。

3、提供服务一致性

负载均衡器具有提供服务一致性的功能,负载均衡器通过读取客户端所发出请求内的信息,进行重写报头程序然后将请求发送至合适的服务器上,该服务器会维护着该客户端信息。在http通信当中,负载均衡器提供服务一致性的功能就得到了很好的发挥,但提供该服务的途径并不是非常安全。但若将消息加密后,负载均衡器就无法读取隐藏其中的信息了。

4、摆脱停机时间

服务器托管公司可能会在维护期间将服务器关闭一段时间,这可能发生在业务的高峰期。在基于云服务器中,可以在将流量引导到另一台服务器的资源之后进行维护,前提是它们不在维护中,从而可以消除网站的停机时间。

5、管理服务器故障

由于它具有根据需要添加或删除实例的功能,因此可以跨云平台拥有多个数据中心。如果其中一台服务器发生故障,则可以快速移动流量,将故障服务器的流量流入到另一台服务器中。

6、转发功能

按照一定的算法,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。

7、恢复添加

如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。

8、分发流量

分发流量、请求到不同的服务器。使流量平均分配,提高整个集群的响应速度、服务的高可用性。

二、负载均衡常用处理方式

        负载均衡分为四层负载均衡和七层负载均衡。

1. 四层负载均衡是工作在 OSI 七层协议的第四层——传输层,基于IP+PORT的负载均衡,主要工作是转发。

2. 它在接收到客户端的流量以后通过修改数据包的地址信息(目标地址和端口和源地址)将流量转发到应用服务器。

 实现四层负载均衡的方式:

硬件:F5、BIG-IP、Radware等;

软件:LVS、Nginx、Haproxy等。

        1. 七层负载均衡是工作在七层协议的第七层-应用层,基于虚拟的URL或主机IP的负载均衡,主要工作是代理。

        2. 它首先会与客户端建立一条完整的连接并将应用层的请求流量解析出来,再按照调度算法选择一个应用服务器,并与应用服务器建立另外一条连接将请求发送过去。

        3. 实现七层负载均衡的方式:

        软件:Nginx、Hayproxy等。

三、四层和七层负载均衡的区别

      1. 四层负载均衡数据包是在底层就进行了分发,而七层负载均衡数据包则在最顶端进行分发,所以四层负载均衡的效率比七层负载均衡的效率要高;

        2. 四层负载均衡不识别域名,而七层负载均衡识别域名。

        3. 除了四层和七层负载均衡以外其实还有二层、三层负载均衡。二层负载均衡是在数据链路层基于MAC地址来实现负载均衡,三层是在网络层一般采用虚拟IP地址的方式实现负载均衡。

        4. 实际环境采用的方式:四层负载 (LVS) +七层负载 (Nginx)

四、nginx 七层负载均衡

1、七层负载均衡基础配置

[root@server]# vim /usr/local/nginx/conf/nginx.conf

worker_processes                 1;

event {

        worker_connections 1024;

}

http {                                         # 七层负载均衡支持http、ftp协议

         include                 mime.types;

        default_type                 application/octet-stream;

        sendfile                 on;

        keepalive_timeout                 65;

        upstream qicengzu {                         # 服务器组,组名qingcengzu

                server 192.168.33.11:8080;                         # 组内服务器1

                server 192.168.33.22:8080;                         # 组内服务器2

        }

        server {                                                 # 虚拟服务器

                listen                 80;                                         # 虚拟服务器端口

                server_name         localhost;                         # 虚拟服务器名

                location {                         # 虚拟服务器的url跳转

                                proxy_pass http://qicengzu;                         # 当访问本机的80端口时,跳转到服务器组

                                }

                }

}

2、负载均衡状态: 

 

        (1)轮询

upstream backend {

server 192.168.33.11:8080;

server 192.168.33.22:8080;

}

        (2)weight 加权

upstream backend {

server 192.168.33.11:8080 weight=5;

server 192.168.33.22:8080 weight=2; # 权重默认为1,谁权重大,谁优先处理请求

}

五、nginx 四层负载均衡

        四层使用 stream 模块,与七层的 http 模块同级。

[root@localhost ~]# nginx -V                 # 查看版本及安装模块

nginx version: nginx/1.22.1

built by gcc 8.5.0 20210514 (Red Hat 8.5.0-16) (GCC)

built with OpenSSL 1.1.1k FIPS 25 Mar 2021TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx--with-httpssl module --with-http_stub status_module --with-http_realip module

[root@localhost ~]# cp /usr/local/nginx/sbin/nginx

/usr/local/nginx/sbin/nginxbak                 #将原有/usr/local/nginx/sbin/nginx进行备份

[root@localhost ~]# cd /usr/src/nginx-1.22.1/

[root@localhost nginx-1.22.1]# Is

[root@localhost nginx-1.22.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-stream                 # 安装指定模块

[root@localhost nginx-1.22.1]# make                 # 进行编译

[root@localhost nginx-1.22.1]# cp ./objs/nginx/usr/local/nginx/sbin/                 # 将obis下面的nginx移动到/usr/local/nginx/sbin下

[root@localhost nginx-1.22.1]# nginx -V                 # 模块添加成功

nginx version: nginx/1.22.1

built by gcc 8.5.0 20210514 (Red Hat 8.5.0-16) (GCC)

built with OpenSSL 1.1.1k FIPS 25 Mar 2021TLS SNI support enabled

configure arguments: --prefix=/usr/local/nginx -- user=nginx --group=nginx--with-httpssl module --with-http_stub status_module --with-http_realip module --withstream

[root@server ~]# vim /usr/local/nginx/conf/nginx.conf

events {

        worker_connections 1024;

}

stream {

                upstream dongtai {                         # 配置dongtai服务器组

                        server 192.168.33.11:8080;                 # 动态资源走tomcat的8080端口

                        server 192.168.33.22:8080;

        }

        server {

                listen         81;                 # 设置监听端口

                proxy_pass dongtai;                 # 当请求访问到本机的81端口时,将请求转发到dongtai组

        }

        upstream jingtai {                         # 配置jingtai服务器组

                server 192.168.33.33:80;                 # 静态资源走nginx或tomcat的80端口

                server 192.168.33.44:80;

        }

        server {

                listen         82;

                proxy_pass         jingtai;

        }

}

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

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

相关文章

FreeModbus学习——定时器

FreeModbus版本:1.6 协议栈初始化时会初始化定时器: eMBInit → eMBRTUInit → xMBPortTimersInit( ( USHORT ) usTimerT35_50us ) 协议栈使能时会使能定时器: eMBEnable → pvMBFrameStartCur → eMBRTUStart → vMBPortTimersEnable 定时…

【Vulnhub系列】Vulnhub_Dr4g0n_b4ll 靶场渗透(原创)

【Vulnhub系列靶场】Vulnhub_Dr4g0n_b4ll靶场渗透 原文转载已经过授权 原文链接:Lusen的小窝 - 学无止尽,不进则退 (lusensec.github.io) 一、环境搭建 选择打开.ovf 文件 配置名称和路径 打开后调整网络连接模式为【NAT】即可 二、信息收集 1、主机…

MySQL安装教程(保姆级)

1. 首先要了解自己的计算机 打开设置——系统——系统信息 然后就可以知道自己计算机的类型了。 2. 下载MySQL 2.1. 来到MySQL官网 点击进入 我们下拉页面,可以找到DOWNLOADS 页面默认给咱们选择最新的版本,咱们不用,咱们尽量选一个稳定的版…

解决vscode+UE5中vscode无法识别头文件,无法函数无法跳转,也无法自动补全的问题。

一、概述 接上一条博客,虽然解决了报错的问题,但是实际上的问题却没有解决,无论我怎么点击,其都无法完成跳转,也无法完成自动补全的问题。 在网络上搜索了很多资料后,发现是在使用vscode时候UE5在vscode中的…

对零基础想转行网络安全同学的一点建议

最近有同学在后台留言,0基础怎么学网络安全?0基础可以转行做网络安全吗?以前也碰到过类似的问题,想了想,今天简单写一下。 我的回答是先了解,再入行。 具体怎么做呢? 首先,你要确…

深入源码:解析SpotBugs (5)BugReportor

常见的 Bug 定位后,通过 bugReport的reportBug(BugInstance) 方法,将bug 发布出来。 一般的 Detector 经检测后会调用 bugReportor.reportBug 方法或者 BugAccumulator.accumulateBug 。 在GUI中,分析结束后会在下框…

2024年投放必应bing国内广告,顶级技巧与策略!

随着企业对于高效、精准的广告投放需求日益增强,微软必应Bing广告平台以其独特的优势,正成为众多品牌投放广告的理想选择。云衔科技凭借其专业的必应Bing国内广告开户及代运营服务,助力企业精准触达目标受众,实现品牌影响力和市场…

ESP-ADF适配到自定义开发板中

ESP-ADF适配到自定义开发板中 前言:项目开发完了,来记录一下开发过程。 安装: 这里采用vscode+ESP-IDF+ESP-ADF的开发方式。 安装esp-idf的方法很简单,网上都是,这里不说了。想用esp-adf那么你idf的环境肯定是已经搭建好了。 安装adf也很简单,一步完成。 按下F1,选…

软考网工:2024年下半年各地区报名时间(附赠真题)

根据软考办《关于2024年度计算机技术与软件专业技术资格(水平)考试工作安排及有关事项的通知》(计考办〔2024〕1号)可以得知,2024年下半年网络工程师将于8月19日至9月15日开放考务管理服务平台,各地组织报名。 各地2024年下半年网络工程师报名时间不同&…

科普文:万字梳理高性能 Kafka快的8个原因

概叙 科普文:万字详解Kafka基本原理和应用-CSDN博客 科普文:万字梳理31个Kafka问题-CSDN博客 我们都知道 Kafka 是基于磁盘进行存储的,但 Kafka 官方又称其具有高性能、高吞吐、低延时的特点,其吞吐量动辄几十上百万。 在座的…

绝密!OceanBase OBCP备考模拟题讲解(1)

博主首页 : 「源de爸讲数据库」每天优先更新OceanBase OBCP题库及全网独家超详细题目解析! 现如今,一大批国产数据库随着国产化浪潮,已经逐步被越来越多的人认可。OceanBase便是其中一个优秀代表。 做这个日更专题,…

麒麟V10系统统一认证子系统国际化

在适配麒麟V10系统统一认证子系统国际化过程中, 遇到了很多的问题,关键是麒麟官方的文档对这部分也是粗略带过,遇到的问题有: (1)xgettext无法提取C源文件中目标待翻译的字符串。 (2)使用msgf…

【Python正则-驯化】一文学会通过Python中的正则表达式提取文本中的网址

【Python正则-驯化】一文学会通过Python中的正则表达式提取文本中的网址 本次修炼方法请往下查看 🌈 欢迎莅临我的个人主页 👈这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合,智慧小天地! 🎇 免费获取相关内容…

Redis 与 Scrapy:无缝集成的分布式爬虫技术

1. 分布式爬虫的概念 分布式爬虫系统通过将任务分配给多个爬虫节点,利用集群的计算能力来提高数据抓取的效率。这种方式不仅可以提高爬取速度,还可以在单个节点发生故障时,通过其他节点继续完成任务,从而提高系统的稳定性和可靠性…

Gooxi荣获2024年深圳市计算机行业协会最具成长奖

近日,由深圳市计算机行业协会举办的2024年度深圳市计算机行业协会年中工作会议圆满落幕。本次会议邀请了多位行业专家以及深圳地区的理事会成员、企业家参会。会议的重点是总结上半年的经验,分析行业热点与痛点,探讨以新质生产力促进高质量发…

网络安全等级保护:上下文中的API安全性

网络安全等级保护:什么是API安全? 上下文中的API安全性 应用程序编程接口安全性位于多个安全学科的交叉点,如图所示。其中最重要的是以下三个领域: 1.信息安全(InfoSec)涉及在信息的整个生命周期中保护信…

Kettle下载安装

环境说明 虚拟机:Win7;MySql8.0 主机:Win11;JDK1.8;Kettle 9.4(Pentaho Data Integration 9.4)(下载方式见文末) 安装说明 【1】解压后运行Spoon.bat 【2】将jar包 复…

vue2学习 -- 核心语法

文章目录 前置简介1. 模板语法2. 数据2.1 数据绑定2.2 el与data的两种写法2.3 MVVM模型2.4 Object.defineProperty2.5 Vue中的数据代理 3. 事件3.1 事件处理3.2 事件修饰符3.3 键盘事件 4. 计算属性5. 监视(侦听)属性5.1 书写形式5.2 深度监视5.3 简写形式5.4 计算属性和监听属…

一「骑」就LUCKY!凯迪拉氪强劲动力,带你一路顺畅,幸运随行!

好运,其实就是毫不费劲的完成心里所想的事情。简单来说,是不需要太多努力,就能得到比较大的回报。每个人都希望自己拥有好运气,但这就跟抽盲盒一样,可能穷极一生都享受不到。 所以,与其期待虚无缥缈的好运…

Java线程阻塞:原因

Java线程阻塞:原因 1. sleep()2. suspend() 和 resume()(不推荐)3. yield()4. wait() 和 notify()/notifyAll() 💖The Begin💖点点关注,收藏不迷路💖 线程阻塞是一个重要的概念,它决…