Nginx四层负载均衡详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Nginx四层负载均衡就是实现通过访问某个ip的端口转发至对应的服务器上,如图当访问10.0.0.5的5555端口就会跳转至web服务器172.1.16.7的22号端口,当访问10.0.0.5的6666端口就会转发到mysql服务器的3306端口,高效的保护了内网的安全。为什么企业不再使用lvs而选择使用Nginx做负载1.Nginx既支持四层又支持七层2.很多企业使用云平台,但是云平台网络环境不支持lvs3.都是用Nginx方便统一管理

1.Nginx四层负载均衡原理image.png

Nginx四层负载均衡就是实现通过访问某个ip的端口转发至对应的服务器上,如图当访问10.0.0.5的5555端口就会跳转至web服务器172.1.16.7的22号端口,当访问10.0.0.5的6666端口就会转发到mysql服务器的3306端口,高效的保护了内网的安全。


为什么企业不再使用lvs而选择使用Nginx做负载

1.Nginx既支持四层又支持七层

2.很多企业使用云平台,但是云平台网络环境不支持lvs

3.都是用Nginx方便统一管理

2.Nginx四层负载均衡配置

一般做四层负载均衡的都是一对一的连接,比如ssh、mysql,明确需要登录某台主机的某个端口来做操作,可以实现一个跳板机


注意:四层负载均衡配置stream只能配置一个,也就是说关于四层负载的配置文件只允许有一个

2.1.四层负载均衡语法

stream {      
  upstream name {     //定义虚拟资源池
    server ip:port;
  }
  server {    //调用虚拟资源池
    listen port;
    proxy_pass name;    //由于是四层负载所以不用加http://
  }
}

2.2.实例

配置四层负载,实现访问192.168.810.210的6666端口就会访问到172.16.1.20的22号端口

[root@localhost nginx]# mkdir conf.c
在nginx.conf文件中写入这两行,主要要写在events下面http上面,stream与http同级
[root@localhost nginx]# vim nginx.conf
#四层负载
include /etc/nginx/conf.c/*.conf;
[root@localhost conf.c]# vim ssh.conf
stream {
        upstream lb_ssh_20 {
                server 172.16.1.20:22;
        }
        upstream lb_ssh_30 {
                server 172.16.1.30:22;
        }
        upstream lb_ssh_40 {
                server 172.16.1.40:22;
        }
        server {
                listen 6666;
                proxy_pass lb_ssh_20;
        }
        server {
                listen 7777;
                proxy_pass lb_ssh_30;
        }
        server {
                listen 8888;
                proxy_pass lb_ssh_40;
        }
}
[root@localhost conf.c]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.c]# systemctl reload nginx

效果:

666端口image.png7777端口image.png3.Nginx负载均衡TCP实战

需求概述


1.通过访问负载均衡的6666端口,实际是后端的web01的22端口在提供服务。

2.通过访问负载均衡的7777端口,实际是后端的web02的22端口在提供服务。

3.通过访问负载均衡的8888端口,实际是后端的web03的22端口在提供服务。

2.通过访问负载均衡的9999端口,实际是后端的mysql的3306端口在提供服务。

3.1.四层负载均衡配置

[root@localhost conf.c]# vim ssh_mysql.conf
stream {
        upstream ssh_20 {         //定义web01的ssh连接池
                server 172.16.1.20:22;
        }
        upstream ssh_30 {         //定义web02的ssh连接池
                server 172.16.1.30:22;
        }
        upstream ssh_40 {         //定义web03的ssh连接池
                server 172.16.1.40:22;
        }
        upstream mysql_20 {         //定义mysql的ssh连接池
                server 172.16.1.20:3306;
        }
        server {
                listen 6666;
                proxy_pass ssh_20;
                proxy_timeout 60s;
                proxy_connect_timeout 30s;
        }
        server {
                listen 7777;
                proxy_pass ssh_30;
                proxy_timeout 60s;
                proxy_connect_timeout 30s;
        }
        server {
                listen 8888;
                proxy_pass ssh_30;
                proxy_timeout 60s;
                proxy_connect_timeout 30s;
        }
        server {
                listen 9999;
                proxy_pass mysql_20;
                proxy_timeout 60s;
                proxy_connect_timeout 30s;
        }
}
[root@localhost conf.c]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@localhost conf.c]# systemctl reload nginx

3.2.效果

  • 1.通过访问负载均衡的6666端口,实际是后端的web01的22端口在提供服务。image.png2.通过访问负载均衡的7777端口,实际是后端的web02的22端口在提供服务。

  • 3.通过访问负载均衡的8888端口,实际是后端的web03的22端口在提供服务。

  • 4.通过访问负载均衡的9999端口,实际是后端的mysql的3306端口在提供服务。

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
|
负载均衡 网络协议 算法
一文读懂什么是Nginx?它能否实现IM的负载均衡?
Nginx(及其衍生产品)是目前被大量使用的服务端反向代理和负载均衡方案,从某种意义上来讲,Nginx几乎是低成本、高负载Web服务端代名词。 如此深入人心的Nginx,很多人也想当然的认为,在IM或消息推送等场景下是否也能使用Nginx来解决负载均衡问题? 另外,即时通讯网的论坛和QQ群里也经常有人问起,Nginx是否能支持TCP、UDP、WebSocket的负载
79 4
|
5月前
|
负载均衡 算法 搜索推荐
Nginx 常用的负载均衡算法
【10月更文挑战第17天】在实际应用中,我们需要根据具体的情况来选择合适的负载均衡算法。同时,还可以结合其他的优化措施,如服务器健康检查、动态调整权重等,来进一步提高负载均衡的效果和系统的稳定性。
203 59
|
2天前
|
负载均衡 算法 应用服务中间件
Nginx长连接负载均衡详细说明以及案例
本文详细介绍了Nginx长连接负载均衡的配置与原理。长连接(Keepalive)允许客户端和服务器保持连接,减少建立和关闭连接的开销。Nginx支持多种负载均衡算法,如轮询、IP哈希等。通过在Nginx配置文件中使用`upstream`模块和`keepalive`指令,可以实现长连接负载均衡,从而提高系统的性能和响应速度。示例配置展示了如何设置后端服务器组、长连接数及HTTP/1.1协议,确保连接复用,降低延迟。
|
3月前
|
弹性计算 负载均衡 网络协议
ECS中实现nginx4层7层负载均衡和ALB/NLB原SLB负载均衡
通过本文的介绍,希望您能深入理解并掌握如何在ECS中实现Nginx四层和七层负载均衡,以及如何使用ALB和NLB进行高效的负载均衡配置,以提高系统的性能和可靠性。
298 9
|
4月前
|
缓存 负载均衡 算法
如何配置Nginx反向代理以实现负载均衡?
如何配置Nginx反向代理以实现负载均衡?
|
3月前
|
负载均衡 算法 应用服务中间件
Nginx的负载均衡
Nginx 是一款高性能的Web服务器与反向代理服务器,支持负载均衡功能,能有效提升系统性能与可靠性。其负载均衡策略包括基于轮询和权重的分配方法,以及IP哈希、最小连接数等算法,可根据实际需求灵活选择。
230 5
|
3月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
234 3
|
5月前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
248 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
4月前
|
负载均衡 算法 应用服务中间件
Nginx 常用的负载均衡算法
【10月更文挑战第22天】不同的负载均衡算法各有特点和适用场景。在实际应用中,需要根据具体的业务需求、服务器性能和网络环境等因素来选择合适的算法。
198 3
|
5月前
|
负载均衡 监控 应用服务中间件
除了 Nginx,还有以下一些常见的负载均衡工具
【10月更文挑战第17天】这些负载均衡工具各有特点和优势,在不同的应用场景中发挥着重要作用。选择合适的负载均衡工具需要综合考虑性能、功能、稳定性、成本等因素。