负载均衡:
主要作用:流量分发、请求平均、降低单例压力
其次:隐藏后端真实服务器、做七层负载均衡时可以屏蔽非法请求
分类:常见的一般有以下两种
四层负载均衡(tcp):传输层的负载均衡,但是是在三层(网络层)负载均衡基础之上的,基于IP+port接收和转发请求
七层的负载均衡(http):根据虚拟的url或ip,主机接收请求,再转向反向代理对应的处理服务器
实现方式:
①硬件:F5的BIG-IP,可做四层和七层
②软件:四层:lvs、nginx、Haproxy
七层:nginx、haproxy
四层和七层到底有什么区别:
四层:基于IP+port、握手一次、性能高(不解析内容,只做转发)、安全性低,无法识别Ddos攻击
七层:基于url或主机IP、握手2次、比较复杂、安全性高(可以防御洪水攻击)、支持会话保、图片压缩、防盗链等
根本上来说:四层时Director转发请求、七层中Director相当于代理
配置:http段里配置upstream模块,server虚拟主机段里的location配置反向代理,转发到upstream中server服务器,记得加上header头信息,把客户端IP发给后端服务器。要不然用户访问日志就废了,分析不了用户信息!
可以查看web服务器的访问日志进行验证
问:负载均衡实现之后,后端服务器获取到的IP时负载均衡服务器的,怎么办?
答:前面负载均衡服务器已经设置了把客户端IP发给后端RS。接下里,nginx有个ngx_http_realip_module提供的set_real_ip_from语法,nginx编译安装的时候带上此参数即可,代表从哪儿来源的IP,需要识别真实客户端IP
大写的注:如果遇到session不一致问题,可通过共享session解决,比如使用redis、memcached这样的缓存软件