https://developer.aliyun.com/article/885599?spm=a2c6h.24874632.expert-profile.315.7c46cfe9h5DxWK

2022-04-14 322举报

简介: 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方便统一管理

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四层负载均衡详解的更多相关文章

  1. Nginx代理功能与负载均衡详解

    序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...

  2. Nginx 反向代理与负载均衡详解

    序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Ngin ...

  3. Docker Swarm 负载均衡详解 or 模式选择

    Docker Swarm 负载均衡详解 Swarm模式内置DNS组件,可以自动为集群中的每个服务分配DNS记录. Swarm manager使用内部负载均衡,根据服务的DNS名称在集群内的服务之间分发 ...

  4. nginx四层负载均衡配置

    nginx四层负载均衡配置代理Mysql集群 环境如下: ip 192.168.6.203 Nginx ip 192.168.6.*(多台) Mysql 步骤一 查看Nginx是否安装stream模块 ...

  5. Spring Cloud:使用Ribbon实现负载均衡详解(下)

    在上一篇文章(Spring Cloud:使用Ribbon实现负载均衡详解(上))中,我对 Ribbon 做了一个介绍,Ribbon 可以实现直接通过服务名称对服务进行访问.这一篇文章我详细分析一下如何 ...

  6. Nginx四层负载均衡概述

    目录 Nginx四层负载均衡概述 什么是负载均衡 负载均衡应用场景 四层,七层集群架构 四层负载均衡总结 Nginx如何配置四层负载均衡 nginx四层负载均衡端口转发 Nginx四层负载均衡概述 什 ...

  7. 14、Nginx四层负载均衡

    1.Nginx四层负载均衡基本概述 1.1.什么是四层负载均衡 四层负载均衡基于传输层协议包来封装的(如:TCP/IP),那我们前面使用到的七层是指的应用层,它的组装在四层基础之上,无论四层还是七层都 ...

  8. Nginx四层负载均衡

    目录 Nginx四层负载均衡概述 Nginx如何配置四层负载均衡 使用nginx四层负载均衡实现tcp的转发 Nginx四层负载均衡概述 什么是四层负载均衡 四层负载均衡是基于传输层协议包来封装的(如 ...

  9. Nginx负载均衡详解

     upstream mysvr {  server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ...

  10. [转帖]nginx服务器安装及配置文件详解

    nginx服务器安装及配置文件详解 http://seanlook.com/2015/05/17/nginx-install-and-config/  发表于 2015-05-17 |  更新于: 2 ...

随机推荐

  1. Java 查找并替换PDF中的指定文本

    本文介绍通过Java程序批量替换PDF中的指定文本内容. 1. 程序环境准备如下: 程序使用环境如图,需要注意的是,本文使用了免费版的PDF jar工具:另外JDK版本建议使用高版本更佳.   jar ...

  2. 玩转云上数据湖,解析Serverless 技术落地

    导读: 本文主要介绍Serverless计算相关技术与其在华为云数据湖探索服务(后文简称DLI)中的技术落地.Serverless是DLI将计算能力服务化和产品化关键技术,与传统IAAS和PAAS技术 ...

  3. 云图说丨初识数据工坊DWR

    摘要:数据工坊DWR是一款近数据处理服务,通过易用的工作流编排和开放生态的数据处理算子,能够在云上实现图像.视频.文档.图片等数据处理业务. 本文分享自华为云社区<[云图说]第236期 初识数据 ...

  4. why哥这里有一道Dubbo高频面试题,请查收。

    这是why的第 64 篇原创文章 荒腔走板 大家好,我是 why,欢迎来到我连续周更优质原创文章的第 64 篇.老规矩,先荒腔走板聊聊其他的. 上面这图是我之前拼的一个拼图. 我经常玩拼图,我大概拼了 ...

  5. Intellij IDEA、 Pycharm 格式化换行,竖线修改 最大 分隔 线

    Intellij IDEA. Pycharm 等开发工具,超过 竖线,Ctrl + L 格式化时,就会换行 格式化后,现在的显示器分辨率高,这样右边一大片空白,看起来很不舒服 File -> S ...

  6. sqlalchemy 报错 Lost connection to MySQL server during query 解决

    最近在开发过程中遇到一个sqlalchemy lost connection的报错,记录解决方法. 报错信息 python后端开发,使用的框架是Fastapi + sqlalchemy.在一个接口请求 ...

  7. ChatGPT 插件,组合后更妙了

    ChatGPT 插件,组合后更妙 大家好,我是章北海mlpy 昨天极简介绍了一些热门的ChatGPT插件 我测试了一些组合玩法,感觉效率.效果都远超预期. 今天就演示一下如何利用多个插件,高速阅读.理 ...

  8. CPU--实模式与保护模式

    一.实模式(实地址访问模式) 是Intel公司80286及以后的x86(80386,80486和80586等)兼容处理器(CPU)的一种操作模式. 实模式被特殊定义为20位地址内存可访问空间上,这就意 ...

  9. PS 独立集中标识下修改项目采购类型增强

    1.当物料独立集中标识为2,采购类型通过BAPI:BAPI_NETWORK_COMP_ADD,type_of_pur_resv传入'7',则报错"组件分配并不是未销售订单或项目库存而设的&q ...

  10. Docker 和 VMware不兼容问题

    直接贴解决方案: 当想使用 VMware bcdedit /set hypervisorlaunchtype off 当想使用 Docker 时 bcdedit /set hypervisorlaun ...