nginx是什么层负载均衡(四层负载均衡技术)

2025-05-26 04:45:01 :0

nginx是什么层负载均衡(四层负载均衡技术)

今天给各位分享四层负载均衡技术的知识,其中也会对四层负载均衡技术进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

四层负载均衡技术

通常使用的nginx负载均衡技术, 在网络分层中处于应用层(第七层),nginx与客户端建立连接(握手),然后再根据请求信息以及本地配置信息,将请求灵活的分发到不同的服务上。nginx这类7层负载均衡的优缺点都很明显。

除了nginx这种7层负载均衡策略,还有基于传输层(4层)的负载均衡策略。通过分析请求的 IP地址以及端口号 进行请求的负载均衡。根据请求处理模式的不同,4层负载均衡 算法 可以分为: NAT , DR 以及 TUN隧道技术 等。4层负载均衡的实现方式有: LVS 。

NAT(Network Address Translation,网络地址转换)技术,在专用内部网络中,分配一台实现了NAT技术的路由或服务Load Balance Service。这台负载均衡服务器分配了公网IP(VIP, Virtual IP),所有客户端请求服务都请求此IP。LB通过不同的算法,将请求数据包的源IP以及目标IP修改,转发到真实服务器(Real Service)上进行业务处理。其具体的步骤可以分为:

可以看到通过NAT模式进行负载均衡,所有的请求以及响应都要通过LB服务器,当访问量较大时,LB服务器会成为瓶颈 。

DR(Direct Routing, 直接路由模式),LB通过修改请求数据包的目标MAC地址,并且在Real Service服务配置只有 自己可见的lo:VIP ,实现数据包的接收(自己没有VIP的话,服务并不会接收数据包)。整个转发的流程为:

TUN思想跟DR类似,在Real Service上配置一个内部可见的lo:VIP地址,LB通过封装或修改数据包信息实现请求的转发。不同于DR模式LB修改MAC地址,为了 实现不同网段 的Real Service负载,TUN模式通过在原有的数据包外 封装一层IP Tunnel ,实现数据的转发。由于封装完 IP Tunnel 后数据包和正常的数据包结构不同,所以Real Service的 OS需要支持Tunnel功能 。TUN转发的具体流程为:

LB虽然没有完全解析数据包无法得知请求信息,但是可以通过监听请求头信息(例如,SYN、FIN等)判断客户端与Real Service之间的连接情况。LB通过监听请求信息,维护了各个Real Service的连接信息表。通过这些信息实现不同的调度算法进行负载均衡。

LB将请求依次转发至不同的Real Service

给Real Service分配不同的权值,LB根据RS的权值的高低转发请求

根据请求的目标地址(资源,例如同一URL)进行Hash,转发至RS上

对客户端的域名或者IP进行Hash,转发至RS上

LB将请求转发至连接最少的RS上

LB通过加权轮询以及RS的连接情况来转发请求

LB维护 目标IP到一台RS 的映射表(目标IP最近使用的RS),通过映射表将请求转发至RS,若RS不存在或者超载,通过 最少连接 策略选出一台新的RS进行转发

LB维护 目标IP到一组RS 的映射表(目标IP最近使用的RS),通过 最少连接 策略从服务器组选择一个RS进行转发,若RS不存在或者超载,通过 最少连接 策略选出一台新的RS进行转发,并将此RS加入映射组中。

使用Nginx配置TCP负载均衡

Nginx是比较不错的开源Web服务器之一,但它也可以用作TCP和UDP负载均衡器。使用Nginx作为HAProxy的负载均衡器的主要好处之一是,它还可以负载均衡基于UDP的流量。在本文中,我们将演示如何将NGINX配置为Kubernetes集群中部署的应用程序的负载均衡。

假设Kubernetes集群已经配置好,我们将基于 CentOS 为Nginx创建一个虚拟机。

以下是实验种设置的详细信息:

Nginx (CenOS8 Minimal) - 192.168.1.50

Kube Master - 192.168.1.40

Kube Worker 1 - 192.168.1.41

Kube Worker 2 - 192.168.1.42

步骤1)安装epel仓库

因为nginx软件包在CentOS系统默认仓库里面没有,所以需要安装epel仓库:

# dnf install epel-release -y

步骤2)安装Nginx

运行以下 命令 安装nginx:

# dnf install nginx -y

使用rpm 命令 验证Nginx包的详细信息:

# rpm -qi nginx

***隐藏网址***

***隐藏网址***

***隐藏网址***

# firewall-cmd –reload

使用以下命令将SE Linux 设置为permissive模式,并重启系统使selinux关闭生效:

# sed -i s/^SELINUX=.*$/SELINUX=permissive/ /etc/selinux/config

# reboot

步骤3)从Kubernetes中获取应用程序的NodePort详细信息

$  kubectl get all -n ingress-nginx

从上面的输出中可以看到,每个工作节点的NodePort 32760映射到端口80,NodePort 32375映射到443端口。我们将在Nginx配置文件中使用这些节点端口来做负载均衡。

步骤4)将Nginx配置负载均衡

nginx配置文件,并添加以下内容:

# vim /etc/nginx/nginx.conf

注释掉“server”部分(从38到57行):

并添加以下几行:

upstream backend {

  server 192.168.1.41:32760;

  server 192.168.1.42:32760;

}

server {

  listen 80;

  location / {

      proxy_read_timeout 1800;

      proxy_connect_timeout 1800;

      proxy_send_timeout 1800;

      send_timeout 1800;

      proxy_set_header        Accept-Encoding  "";

      proxy_set_header        X-Forwarded-By    $server_addr:$server_port;

      proxy_set_header        X-Forwarded-For  $remote_addr;

      proxy_set_header        X-Forwarded-Proto $scheme;

      proxy_set_header Host $host;

      proxy_set_header X-Real-IP $remote_addr;

***隐藏网址***

  }

    location /nginx_status {

        stub_status;

    }

}

保存配置文件,并退出。

根据上述更改,所有向nginx的80端口的请求,都将被路由到的Kubernetes工作节点(192.168.1.41和192.168.1.42)的NodePort(32760)端口上。

使用以下命令启用Nginx服务:

# systemctl start nginx

# systemctl enable nginx

测试Nginx的 TCP负载均衡器

要测试nginx作为Kubernetes的TCP负载均衡是否工作正常,请部署基于nginx的deployment,将deployment的端口暴露为80端口,并为nginx 的deployment定义入口资源。我已经使用以下命令来部署这些Kubernetes对象:

$ kubectl create deployment nginx-deployment --image=nginx

deployment.apps/nginx-deployment created

$ kubectl expose deployments nginx-deployment  --name=nginx-deployment --type=NodePort --port=80

service/nginx-deployment exposed

运行以下命令以获取deployments,svc和ingress详细信息:

更新本地主机的hosts文件,以便nginx-lb.example.com指向nginx服务器的IP地址(192.168.1.50)

# echo "192.168.1.50  nginx-lb.example.com" 》》 /etc/hosts

尝试通过浏览器访问nginx-lb.example.com

总结

上面证实了Nginx作为TCP负载均衡器可以正常工作,因为它可以负载平衡K8s工作节点之间端口80上的TCP通信量。

lvs跟nginx实现负载均衡有什么区别

lvs和nginx都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。 首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一个好习惯。
下面来分析一下两者:
一、lvs的优势:
1、抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或linux2.4内核的承载能力已到上限,内存和cpu方面基本无消耗。
2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率。
3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种lvs都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs会自动判别,所以系统整体是非常稳定的。
4、无流量,上面已经有所提及了。lvs仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的IO性能不会受到大流量的影响。
***隐藏网址***
另:lvs也不是完全能判别节点故障的,譬如在wlc分配方式下,集群里有一个节点没有配置VIP,会使整个集群不能使用,这时使用wrr分配方式则会丢掉一台机。目前这个问题还在进一步测试中。所以,用lvs也得多多当心为妙。
二、nginx和lvs作对比的结果
***隐藏网址***
2、nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用direct方式分流,效果较能得到保证。另外注意,lvs需要向托管商至少申请多一个ip来做Visual IP,貌似是不能用本身的IP来做VIP的。要做好LVS管理员,确实得跟进学习很多有关网络通信方面的知识,就不再是一个HTTP那么简单了。
3、nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。lvs的安装和配置、测试就要花比较长的时间了,因为同上所述,lvs对网络依赖比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。
4、nginx也同样能承受很高负载且稳定,但负载度和稳定度差lvs还有几个等级:nginx处理所有流量所以受限于机器IO和配置;本身的bug也还是难以避免的;nginx没有现成的双机热备方案,所以跑在单机上还是风险较大,单机上的事情全都很难说。
5、nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前lvs中ldirectd也能支持针对服务器内部的情况来监控,但lvs的原理使其不能重发请求。重发请求这点,譬如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx会把上传切到另一台服务器重新处理,而lvs就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而恼火。
6、nginx对请求的异步处理可以帮助节点服务器减轻负载,假如使用apache直接对外服务,那么出现很多的窄带链接时apache服务器将会占用大量内存而不能释放,使用多一个nginx做apache代理的话,这些窄带链接会被nginx挡住,apache上就不会堆积过多的请求,这样就减少了相当多的内存占用。这点使用squid也有相同的作用,即使squid本身配置为不缓存,对apache还是有很大帮助的。lvs没有这些功能,也就无法能比较。
***隐藏网址***
在使用上,一般最前端所采取的策略应是lvs,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务。
重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给lvs托管是最为稳妥的,这样做的唯一缺点是需要的VIP数量会比较多。
nginx可作为lvs节点机器使用,一是可以利用nginx的功能,二是可以利用nginx的性能。当然这一层面也可以直接使用squid,squid的功能方面就比nginx弱不少了,性能上也有所逊色于nginx。
***隐藏网址***
nginx也可作为网页静态服务器,不过超出了本文讨论的范畴,简单提一下。
具体的应用还得具体分析,如果是比较小的网站(日PV《1000万),用nginx就完全可以了,如果机器也不少,可以用DNS轮询,lvs所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用lvs。

以上就是我们为大家找到的有关“nginx是什么层负载均衡(四层负载均衡技术)”的所有内容了,希望可以帮助到你。如果对我们网站的其他内容感兴趣请持续关注本站。

nginx是什么层负载均衡(四层负载均衡技术)

本文编辑:admin

更多文章:


食肉菌是什么引起的(食肉杆菌是什么它一般是通过什么方式侵入人体的)

食肉菌是什么引起的(食肉杆菌是什么它一般是通过什么方式侵入人体的)

大家好,今天小编来为大家解答以下的问题,关于食肉菌是什么引起的,食肉杆菌是什么它一般是通过什么方式侵入人体的这个很多人还不知道,现在让我们一起来看看吧!本文目录食肉杆菌是什么它一般是通过什么方式侵入人体的吃死肉的细菌叫什么罕见的食肉细菌侵入

2025年8月5日 08:15

另我空间complex汉化版下载(请问ntrpg2游戏手机汉化版)

另我空间complex汉化版下载(请问ntrpg2游戏手机汉化版)

大家好,今天小编来为大家解答以下的问题,关于另我空间complex汉化版下载,请问ntrpg2游戏手机汉化版这个很多人还不知道,现在让我们一起来看看吧!本文目录请问ntrpg2游戏手机汉化版创世秩序完结汉化版在哪下载疯狂喷气机汉化版官网下载

2026年4月8日 20:15

哪里做网络推广(目前有哪些渠道,可做网络推广呀)

哪里做网络推广(目前有哪些渠道,可做网络推广呀)

这篇文章给大家聊聊关于哪里做网络推广,以及目前有哪些渠道,可做网络推广呀对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录目前有哪些渠道,可做网络推广呀比较好的网络推广平台有哪些互联网推广渠道有哪些网络推广有哪些平台做网络推广有

2025年12月15日 23:45

华东师范大学 黄(黄民生的介绍)

华东师范大学 黄(黄民生的介绍)

本篇文章给大家谈谈华东师范大学 黄,以及黄民生的介绍对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录黄民生的介绍华东师范大学副教授名单华东师大二附中黄流中学多少分录取华东师范大学高校专项初审名单华东师范大学教师名录学士服黄领是

2025年11月11日 01:15

switch什么时候出的(任天堂新款Switch什么时候发售)

switch什么时候出的(任天堂新款Switch什么时候发售)

大家好,今天小编来为大家解答以下的问题,关于switch什么时候出的,任天堂新款Switch什么时候发售这个很多人还不知道,现在让我们一起来看看吧!本文目录任天堂新款Switch什么时候发售psp和switch哪个先出switch什么时候出

2025年11月11日 10:30

前端怎么打断点调试debugger(android debugger 调试怎么用)

前端怎么打断点调试debugger(android debugger 调试怎么用)

“前端怎么打断点调试debugger”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看前端怎么打断点调试debugger(android debugger 调试怎么用)!本文目录android debugger 调试怎么用py

2025年7月19日 00:30

嵌入式属于本科什么专业(嵌入式属于什么专业)

嵌入式属于本科什么专业(嵌入式属于什么专业)

“嵌入式属于本科什么专业”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看嵌入式属于本科什么专业(嵌入式属于什么专业)!本文目录嵌入式属于什么专业嵌入式开发属于计算机专业 还是电子工程专业大学学什么专业里包括嵌入式系统工程,未

2025年5月30日 08:00

completely change(希望能彻底改变自己 别再跟以前那么幼稚了 尽力而为吧我! 求翻译成英文)

completely change(希望能彻底改变自己 别再跟以前那么幼稚了 尽力而为吧我! 求翻译成英文)

本篇文章给大家谈谈completely change,以及希望能彻底改变自己 别再跟以前那么幼稚了 尽力而为吧我! 求翻译成英文对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您

2026年5月5日 09:30

九宫格滑块拼图解法(九宫格移动拼图口诀是什么)

九宫格滑块拼图解法(九宫格移动拼图口诀是什么)

大家好,今天小编来为大家解答以下的问题,关于九宫格滑块拼图解法,九宫格移动拼图口诀是什么这个很多人还不知道,现在让我们一起来看看吧!本文目录九宫格移动拼图口诀是什么2021春节九宫格拼图素材,九宫格图片是怎么做的啊就是把几张图片拼接九宫格拼

2025年6月23日 12:45

在线学ps教程(想学PS,应该怎么学)

在线学ps教程(想学PS,应该怎么学)

各位老铁们,大家好,今天由我来为大家分享在线学ps教程,以及想学PS,应该怎么学的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录想学PS,应该怎么学

2025年6月21日 22:15

java中inputstream(Java中InputStream的读取方式是什么)

java中inputstream(Java中InputStream的读取方式是什么)

“java中inputstream”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看java中inputstream(Java中InputStream的读取方式是什么)!本文目录Java中InputStream的读取方式是什么

2026年9月12日 11:30

scanf用法举例加法(关于scanf的用法)

scanf用法举例加法(关于scanf的用法)

大家好,今天小编来为大家解答以下的问题,关于scanf用法举例加法,关于scanf的用法这个很多人还不知道,现在让我们一起来看看吧!本文目录关于scanf的用法c语言scanf的用法c语言中的scanf 函数的用法scanf 加法运算关于s

2025年9月7日 05:30

正则表达式提取汉字(python怎么用正则表达式提取中文)

正则表达式提取汉字(python怎么用正则表达式提取中文)

今天给各位分享python怎么用正则表达式提取中文的知识,其中也会对python怎么用正则表达式提取中文进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录python怎么用正则表达式提取中文excel vba中利

2026年8月29日 20:00

label标签accesskey(label标签不是只有for 和accesskey属性吗下面代码中的<label class=“as“> 里面的class表示什么意思)

label标签accesskey(label标签不是只有for 和accesskey属性吗下面代码中的<label class=“as“> 里面的class表示什么意思)

大家好,label标签accesskey相信很多的网友都不是很明白,包括label标签不是只有for 和accesskey属性吗下面代码中的 里面的class表示什么意思也是一样,不过没有关系,接下来就来为大家分享关于label标签acce

2026年2月10日 15:15

导航条代码生成器(百度地图生成器获得代码后怎么使用)

导航条代码生成器(百度地图生成器获得代码后怎么使用)

今天给各位分享百度地图生成器获得代码后怎么使用的知识,其中也会对百度地图生成器获得代码后怎么使用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录百度地图生成器获得代码后怎么使用ai2020条码生成器在哪电脑条形

2026年7月17日 19:45

用于删除数据的sql语句是(SQL语句中删除表中数据的语句是)

用于删除数据的sql语句是(SQL语句中删除表中数据的语句是)

其实用于删除数据的sql语句是的问题并不复杂,但是又很多的朋友都不太了解SQL语句中删除表中数据的语句是,因此呢,今天小编就来为大家分享用于删除数据的sql语句是的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录S

2026年3月5日 01:45

数据分析师报考条件费用(cda数据分析师报名条件)

数据分析师报考条件费用(cda数据分析师报名条件)

本篇文章给大家谈谈数据分析师报考条件费用,以及cda数据分析师报名条件对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录cda数据分析师报名条

2025年7月31日 15:30

word文本框(word的文本框在哪)

word文本框(word的文本框在哪)

各位老铁们,大家好,今天由我来为大家分享word文本框,以及word的文本框在哪的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录word的文本框在哪

2025年6月17日 08:15

易语言游戏脚本培训(制作游戏脚本需要学习什么)

易语言游戏脚本培训(制作游戏脚本需要学习什么)

大家好,今天小编来为大家解答以下的问题,关于易语言游戏脚本培训,制作游戏脚本需要学习什么这个很多人还不知道,现在让我们一起来看看吧!本文目录制作游戏脚本需要学习什么想学编程有空自己做脚本,学那个软件的好呢易语言按键精灵还有其他吗那个比较好呢

2026年7月26日 03:30

python是什么工具(什么是python)

python是什么工具(什么是python)

“python是什么工具”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看python是什么工具(什么是python)!本文目录什么是pythonpython是干嘛的什么是python python是一种跨平台的计算机程序设计

2026年2月5日 18:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索