Nginx四层负载均衡详解

本文涉及的产品
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
传统型负载均衡 CLB,每月750个小时 15LCU
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 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端口在提供服务。

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
2月前
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
77 2
|
1天前
|
负载均衡 应用服务中间件 nginx
Nginx怎么去做负载均衡?
Nginx的负载均衡器配置就完成了,而且由于Nginx的配置文件结构清晰而且简洁,调整和维护也相对方便。通过上述步骤,你可以将Nginx设置为一款强大的负载均衡器,提升服务器集群的处理能力及高可用性。
9 4
|
10天前
|
域名解析 负载均衡 网络协议
双重神器合璧,流量洪流中的稳如磐石:揭秘Bind+Nginx负载均衡的超级力量!
【8月更文挑战第9天】在现代网站架构中,负载均衡至关重要,它通过分散客户端请求至多台服务器,确保了系统的高可用性和稳定性。本文介绍如何结合Bind与Nginx实现高效负载均衡。Bind作为DNS服务器,可为单一域名解析出多个IP地址;Nginx作为高性能HTTP服务器,则在这些IP对应的服务器间智能分配流量。通过配置Bind的A记录与Nginx的`upstream`和`proxy_pass`指令,我们能够构建一个既稳定又易扩展的负载均衡系统,显著提升用户体验与系统可靠性。
34 11
|
7天前
|
负载均衡 监控 算法
Nginx:负载均衡小专题(二)
Nginx:负载均衡小专题(二)
23 2
|
7天前
|
负载均衡 监控 网络协议
Nginx:负载均衡小专题(三)
Nginx:负载均衡小专题(三)
28 1
|
7天前
|
负载均衡 监控 算法
Nginx:负载均衡小专题(一)
Nginx:负载均衡小专题(一)
33 1
|
21天前
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
22 1
|
26天前
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
53 2
|
12天前
|
负载均衡 网络协议 应用服务中间件
nginx-http反向代理与负载均衡
nginx-http反向代理与负载均衡
|
2月前
|
JSON 负载均衡 应用服务中间件
Nginx反向代理与负载均衡
Nginx反向代理与负载均衡