Nginx四层负载均衡
1. 什么是四层负载均衡
四层负载均衡是基于传输层协议包来封装,那我们前面使用的七层是指的应用层,他组装在四层的基础之上,无论是四层环视七层都是指的是OIS网络模型
2. 四层负载均衡应用场景
- 四层+七层来做负载均衡,四层可以保证七层的负载均衡的高可用;如nginx就无法保证自己的服务高可用,需要依赖LVS或者Keepalive.
- tcp协议的负载均衡,有些请求是tcp协议的(MySQL,ssh),或者说是这些请求只需要使用四层进行IP+端口的方式转发就可以了,所以使用四层负载均衡.简单理解就是用户在外网只要能连接到我们四层的公网IP地址,用户通过我们的四层负载进行IP+端口的方式来实现访问后端内网的服务器,这种在公司中比较常用。
3. 四层均衡工作流程
- 用户访问一个网站,首先是通过DNS解析域名,然后返回IP地址,通过浏览器访问四层负载均和四层负载公网IP建立连接.
- 四层负载均衡代理着用户去访问七层负载,然后平均分配.四层负载转发过的数据继续进行拆包,host域名匹配URL规则控制,安全限制,携带头部信息等.都在七层可以实现
- 七层负载拆包之后,通过location往我们后边的web集群进行请求,web服务器是处理七层负载传送过来的数据,静态数据直接返回给用户,或者用户解析到CDN,CDN直接返回给用户
- 如果CDN没有,CDN会去NFS去拿取数据,拿到之后,nfs会缓存到CDN一份数据,最后CDN会把数据传输给用户.
- 动态数据访问数据库,先访问redis集群,看看Redis集群有没有数据如果有返回,如果没有再继续查找主库
- 四层负载均衡总结:
- 四层负载均衡仅能转发TCP/ip协议,UDP协议,通常转发端口,如:tcp/22,udp/53;
- 四层负载均衡可以用来解决七层负载均衡端口限制问题;(四层均衡不存在端口限制,直接往后访问,平均分配给七层负载)
- 四层负载均衡可以解决七层负载均衡高可用问题(四层负载平均分配流量.解决高科用的问题,七层负载挂载一台也没有关系,提高用户的访问速度.多台后端七层负载均衡能同时使用)
- 四层的转发效率比七层的高,但仅支持TCP/ip协议,不支持http和https协议;
- 通常大并发场景才会选择使用在七层负载前面加四层负载均衡;
Nginx四层负载均衡场景实践
Nginx如何配置四层负载均衡
1、通过访问负载均衡的5555端口,实际是后端的web01的22端口在提供服务;
2、通过访问负载均衡的6666端口,实际是后端的mysql的3306端口在提供服务。