[转帖]Nginx四层负载均衡详解
https://developer.aliyun.com/article/885599?spm=a2c6h.24874632.expert-profile.315.7c46cfe9h5DxWK
2022-04-14 322举报
1.Nginx四层负载均衡原理
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端口
7777端口
3.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端口在提供服务。
2.通过访问负载均衡的7777端口,实际是后端的web02的22端口在提供服务。
- 3.通过访问负载均衡的8888端口,实际是后端的web03的22端口在提供服务。

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

[转帖]Nginx四层负载均衡详解的更多相关文章
- Nginx代理功能与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...
- Nginx 反向代理与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Ngin ...
- Docker Swarm 负载均衡详解 or 模式选择
Docker Swarm 负载均衡详解 Swarm模式内置DNS组件,可以自动为集群中的每个服务分配DNS记录. Swarm manager使用内部负载均衡,根据服务的DNS名称在集群内的服务之间分发 ...
- nginx四层负载均衡配置
nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 ...
- Spring Cloud:使用Ribbon实现负载均衡详解(下)
在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...
- Nginx四层负载均衡概述
目录 Nginx四层负载均衡概述 什么是负载均衡 负载均衡应用场景 四层,七层集群架构 四层负载均衡总结 Nginx如何配置四层负载均衡 nginx四层负载均衡端口转发 Nginx四层负载均衡概述 什 ...
- 14、Nginx四层负载均衡
1.Nginx四层负载均衡基本概述 1.1.什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,它的组装在四层基础之上,无论四层还是七层都 ...
- Nginx四层负载均衡
目录 Nginx四层负载均衡概述 Nginx如何配置四层负载均衡 使用nginx四层负载均衡实现tcp的转发 Nginx四层负载均衡概述 什么是四层负载均衡 四层负载均衡是基于传输层协议包来封装的(如 ...
- Nginx负载均衡详解
upstream mysvr { server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ...
- [转帖]nginx服务器安装及配置文件详解
nginx服务器安装及配置文件详解 http://seanlook.com/2015/05/17/nginx-install-and-config/ 发表于 2015-05-17 | 更新于: 2 ...
随机推荐
- 细说Python Lambda函数的用法,建议收藏!
摘要:今天我就和大家聊聊lambda函数,在Python编程中,大家习惯将其称为表达式. 名称是用于引用或寻址任何实体的约定.我们周围的几乎所有事物都有名字.编程领域也与此一致.但这是必须命名的吗?还 ...
- 多语言ASR?没有什么听不懂,15种语言我全都要
摘要:在这篇博文中,我们介绍来自Google的一篇论文<Scaling End-to-End Models for Large-Scale Multilingual ASR>,来看看如何构 ...
- WeLink的杀手锏和远程办公软件的另一面
摘要:看WeLink如何从内到外,为广大企业用户带来数字化办公转型上的突破? 本文分享自华为云社区<[大厂内参]第11期:WeLink的杀手锏和远程办公软件的另一面>,作者: 华为云社区精 ...
- 一文带你梳理Clang编译步骤及命令
摘要: 本文简单介绍了Clang编译过程中涉及到的步骤和每个步骤的产物,并简单分析了部分影响预处理和编译成功的部分因素. 本文分享自华为云社区<Clang编译步骤及命令梳理>,作者:mai ...
- nginx网站限速限流配置——网站被频繁攻击,nginx上的设置limit_req和limit_conn
利用ngx_http_limit_req_module模块,可根据键值(如ip)限制每分钟的速率: limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 "l ...
- appuploader使用教程
appuploader使用教程 转载:appuploader使用教程 目录 问题解决秘籍 登录失败 don't have access,提示没权限或同意协议 上传后在app管理中心找不到版本提交 ...
- PPT 玩转形状
形状 https://www.cnblogs.com/vipsoft/p/16943810.html 形状也可以非常复杂 形状的神奇功能--合并形状 编辑顶点 https://www.cnblogs. ...
- Windows 清理C盘空间,将桌面,文档等移D盘
一般用户数据文件,缓存文件等,会默认放在C盘.而且有些程序必须装在C盘,久而久之,C盘空间越来越小,到后面没办法再安装使用一些程序. 可以将一些常用的移到D盘:特别是微信,动不动就几十个G的空间被占用 ...
- Spring Boot实战:静态资源无法访问
发现 static 或 public 下面的图片无法访问 spring: profiles: active: dev resources: static-locations: classpath:/ ...
- 非洲 AI 不发达,看看这份PPT,受益匪浅
非洲 AI 不发达,看看这份PPT,受益匪浅 非洲有大量的工程+机器学习人才,他们渴望学习.努力工作和进步. 大家好,我是老章 看到我关注的一位博主在首届非洲 @LangChainAI 聚会上的一个演 ...