一、四层负载均衡原理

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方便统一管理
二、Nginx四层负载均衡配置
四层需要使用stream模块,因此编译安装需要开启此配置
stream 模块和 http 模块是一同等级;做四层代理时需要添加上这个模块
stream {
upstream myweb {
hash $remote_addr consistent;
server 192.168.152.100:8080;
server 192.168.152.101:8080;
}
server {
listen 82;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass myweb;
}
}
# proxy_timeout 30s; #默认值为10分钟,nginx接收后端服务器的响应超时时间
# 配置 4 层代理
stream {
upstream mytest1 {
server 192.168.0.100:80;
server 192.168.0.100:81;
}
server {
listen 192.168.0.108:80;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass mytest1;
}
upstream mytest2 {
server 192.168.0.100:3000;
server 192.168.0.100:3001;
}
server {
listen 192.168.0.108:8080;
proxy_connect_timeout 10s;
proxy_timeout 30s;
proxy_pass mytest2;
}
}
三、抄录
[root@lb02 ~]# vim /etc/nginx/stream.d/8001_22.conf
stream {
upstream web02_ssh {
server 172.16.1.8:22;
}
server {
listen 8001;
proxy_pass web02_ssh;
proxy_timeout 60s;
proxy_connect_timeout 30s;
}
upstream db01_mysql {
server 172.16.1.51:3306;
}
server {
listen 7777;
proxy_pass db01_mysql;
proxy_timeout 60s;
proxy_connect_timeout 30s;
}
upstream db01_redis {
server 172.16.1.51:6379;
}
server {
listen 2022;
proxy_pass db01_redis;
proxy_timeout 60s;
proxy_connect_timeout 30s;
}
}