[转帖]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 ...
随机推荐
- 边缘AI研发落地生态挑战调研报告发布
摘要:随着边缘设备的广泛使用和性能提升,将机器学习相关的部分任务迁移到边缘,也即边缘AI技术,已成为必然趋势.但仅凭技术是不足够完成落地和产业转化的.近日我们启动了边缘AI研发落地生态挑战调研.我们发 ...
- WebKit三件套(3):WebKit之Port篇
了解其有关Port方面的设计,从而了解究竟如何能移植WebKit到自己的应用中. WebKitPort方面的内容是可以很广的,例如可将不同的图形库.网络库与WebCore集成,提供不同的Port接口供 ...
- Hudi Bucket Index 在字节跳动的设计与实践
由字节跳动数据湖团队贡献的 RFC-29 Bucket Index 在近期合入 Hudi 主分支,本文详细介绍 Hudi Bucket Index 产生的背景与实践经验.字节跳动数据湖团队持续招人中, ...
- redis之列表 redis之hash redis其他操作 redis管道 django中使用redis celery介绍和安装 celery快速使用 celery包结构
目录 昨日回顾 今日内容 1 redis之列表 2 redis之hash 3 redis其他操作 4 redis 管道 5 django中使用redis 6 celery介绍和安装 7 celery快 ...
- nginx: [emerg] unknown directive "?server" in /etc/nginx/conf.d/nginx.conf:1
问题描述:启动nginx的时候报错 1.nginx: [warn] the "user" directive makes sense only if the master proc ...
- 【3rd_Party】format() 处理一些常见的格式化解决方案
fmt的痛与对format设计的思考 fmt:轻量高性能的C++格式化库 C++20 引入了新的 format() 函数,该函数以字符串形式返回参数的格式化表示.format() 使用 python ...
- 【每日一题】21.边的染色 (DFS连通图 + 思维)
补题链接:Here 思维不够,看到这种陌生的题目无从下手. 这题应该做过一次的人会觉得它其实并不难. 主要思想:把边权->点权. 这样做的好处是,无论你怎么分配点权,在环内的异或值一定为 \(0 ...
- 项目2 可视化数据(第17章 使用API)
17.1 使用Web API Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互.这种请求称为API调用.请求的数据将以易于处理的格式(如JSON或CSV)返回. 17.1 ...
- Codeforces Round #674 (Div. 3) (A - F题题解)
A. Floor Number https://codeforces.com/contest/1426/problem/A 题意: 一个楼房房间号由 \(1\) 递增,一楼仅2个房间.给定一位用户的房 ...
- Codeforces Round #715 (Div. 2) (A~D 补题记录)
补题链接:Here 经典手速场 1509A. Average Height 题意:要找出最大不平衡对序列 先输出奇数,然后输出偶数 void solve() { int n; cin >> ...