Nginx实现四层负载均衡
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nginx实现四层负载均衡
Nginx实现四层负载均衡
Nginx四层负载均衡概述
什么是四层负载均衡
四层负载均衡是基于传输层协议包来封装的(如:TCP/IP),我们前⾯使⽤到的七层是指应⽤层,他的组装在四层的基础之上,⽆论四层还是七层都是指的OSI⽹络模型。
根据 OSI 七层模型,四层负载均衡,在传输层做负载均衡
四层负载均衡应⽤场景
1、4层负载可以保证7层负载的⾼可⽤:四层+七层来做负载均衡,四层可以保证七层的负载均衡的⾼可⽤性,如:nginx就⽆法保证⾃
⼰的服务⾼可⽤,需要依赖LVS或者keepaive。
2、端⼝映射(端⼝转发):如:tcp协议的负载均衡,有些请求是TCP协议的(mysql,ssh),或者说这些请求只需要使⽤四层进⾏
端⼝的转发就可以了,所以使⽤四层负载均衡。
四层+七层构建⼤规模集群架构使⽤场景
四层负载均衡总结
1、四层负载均衡仅能转发TCP/IP协议、UDP协议、通常⽤来转发端⼝,如:tcp/2
2、udp/53,
2、四层负载均衡可以⽤来解决七层负载均衡端⼝限制问题;(七层负载均衡最⼤使⽤65535个端⼝)
3、四层负载均衡可以解决七层负载均衡⾼可⽤问题;(多台后端七层负载均衡能同时的使⽤)
4、四层的转发效率⽐七层的⾼得多,但仅⽀持tcp/ip协议,不⽀持http和https协议;
5、通常⼤并发场景通常会选择使⽤在七层负载均衡前⾯增加四层负载均衡
Nginx四层负载均衡实战
四层负载做端⼝映射
[root@lb02 ~]# vim /etc/nginx/nginx.conf(写在http上⾯)
stream {
upstream web02_ssh {
server 172.16.1.8:22;
}
upstream db01_ssh {
server 172.16.1.51:22;
}
server {
listen 2222;
proxy_pass web02_ssh;
}
server {
listen 2223;
proxy_pass db01_ssh;
}
}
### 端⼝映射的另⼀种写法
[root@lb01 conf.c]# vim lb_db01.conf
stream {
upstream db01_ssh {
server 172.16.1.51:22;
}
server {
listen 2223;
proxy_pass db01_ssh;
}
}
stream做4层负载
[root@lb02 ~]# vim /etc/nginx/nginx.conf(写在http上⾯)
stream {
upstream lb{
server 172.16.1.5:80;
server 172.16.1.6:80;
}
server {
listen 80;
proxy_pass lb;
proxy_connect_timeout 3s;
proxy_timeout 3s;
}
}
## 端⼝映射:
- 虚拟机
- nginx stream模块
- 防⽕墙 CenOS 6:iptable CenOS 7:firewalld
## 四层负载添加⽇志
log_format proxy '$remote_addr $remote_port - [$time_local] $status $protocol ' '"$upstream_addr" "$upstream_bytes_sent" "$upstream_connect_time"' ; access_log /var/log/nginx/tcp.log proxy;。