Nginx四层负载
什么是四层负载
OSI七层模型,四层是传输层,传输层使用端口到端口的通信方式
四层负载均衡,就是在传输层做端口转发 (端口映射)
四层负载均衡应用场景
1.四层+七层来做负载均衡,四层可以保障七层的高可用;如nginx就无法保证自己的服务高可用,需要依赖LVS或者keepalive。
2.如: tcp协议的负载均衡,有些请求是TCP协议的 (mysql、ssh),或者书这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载均衡。
nginx四层负载
nginx
- 四层负载均衡(nginx 1.9版本以后有stream模块,才可以做四层负载均衡
stream
- 七层负载
upstream
LVS
-四层负载
HAproxy
- 四层负载
- 七层负载
四层负载均衡配置
环境准备
主机名 |
WanIP |
LanIP |
角色 |
应用 |
lb01 |
10.0.0.5 |
172.16.1.5 |
七层负载 |
nginx |
lb02 |
10.0.0.6 |
172.16.1.6 |
四层负载 |
nginx |
web01 |
10.0.0.7 |
172.16.1.7 |
web网站 |
nginx、php |
web02 |
10.0.0.8 |
172.16.1.8 |
web网站 |
nginx、php |
db01 |
10.0.0.51 |
172.16.1.51 |
数据库 |
MariaDB |
部署四次负载
[root@ib02 nginx]
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[root@ib02 nginx]
include /etc/nginx/stream.d/*.conf;
http {...}
[root@ib02 nginx]
stream{
upstream backend {
server 172.16.1.5:80;
}
server{
listen 99;
proxy_pass backend;
}
}
使用stream做端口转发
实现22端口转发
[root@ib02 nginx]
stream{
upstream web02_ssh{
server 172.16.1.8:22;
}
server {
listen 456;
proxy_pass web02_ssh;
}
upstream backend {
server 172.16.1.5:80;
}
server{
listen 99;
proxy_pass backend;
}
}

映射数据库端口
stream{
upstream web02_ssh{
server 172.16.1.8:22;
}
server {
listen 456;
proxy_pass web02_ssh;
}
upstream backend {
server 172.16.1.5:80;
}
server{
listen 99;
proxy_pass backend;
}
upstream db01_mysql {
server 172.16.1.51:3306;
}
server {
listem 8848;
proxy_pass db01_mysql;
}
}

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)