一、负载均衡的概念
1.什么是负载均衡
基于传输层 协议包来封装的 ( TCP/IP ), 七层负载均衡是 应用层协议,他组装在四层 负载均衡基础之上,无论是四层负载均衡还是 七层负载均衡 都指的是 OSI 网络模型。
传输层:tcp/udp协议 端口 ( 基于 ip+port的负载均衡 ) ssh(22) mysql(3306) redis(6379)
应用层:请求的uri、Header修改、权限控制、访问规则等等
2.四层负载均衡的应用场景
-
实现端口转发
ssh、mysql等都是TCP协议请求,只能使用tcp方式 连接的服务,我们就可以使用四层负载均衡来调度。- 四层结合七层实现大规模集群架构
原因:
1. 七层负载均衡能够接收连接数有限,需要配置多台七层负载均衡。
问题: 多台七层如何实现轮询?
解决: 在多台七层负载均衡前面接入四层负载均衡
2. 四层可以保证七层负载均衡的高可用性。
- 四层结合七层实现大规模集群架构
注意:四层负载均衡 不识别你的域名,他仅识别端口,所以在四层结合七层的情况下,四层做端口转发,七层来实现域名的匹配,然后代理到后端web节点。
总结四层负载均衡:
2. 四层负载均衡仅能转发TCP/IP协议、UDP协议,通常用来转发端口:如 tcp/80 tcp/443 tcp/3306 tcp/22 udp/53
3. 四层负载均衡可以解决七层负载均衡高可用性的问题。( 多个七层负载均衡同时提供服务 )
4. 四层负载均衡可以解决七层负载均衡端口数限制问题。(七层负载均衡最多能使用的端口是5w)
5. 四层转发效率远比七层代理的效率高的多,但是他只能支持tcp/ip协议,所以他的功能较弱,虽然七层效率不高,但他支持http/https这样的应用层协议。
四层:性能高,功能弱
七层:性能差,功能强
二、基于Nginx来配置四层负载均衡( 扩展项 )
1.需要安装Nginx
2.nginx配置四层负载均衡的语法:stream模块来实现的
stream {
upstream backend {
hash $remote_addr consistent;
server backend1.example.com:12345 weight=5;
server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
server {
listen 12345;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass backend;
}
}
stream是四层负载均衡的配置,不能出现在http {
} 里面
重点:
[root@lb-4 ~]# gzip /etc/nginx/conf.d/default.conf
配置四层负载均衡 (七层+多web) (1个四层 + N多个七层 + 2~3个web节点 )