1、负载均衡典型应用场景,外网、内网、私网公共服务。
典型场景:
(1)用户通过公网访问数据中心的ftp、web、https服务器。
(2) 在数据中心内部东西向访问其他服务时,例如,访问其他虚拟机、DNS等公共服务。
(3) 通过专线或者ipsec vpn访问数据中心内部服务时。
2、常见的负载均衡的技术
硬件实现(2/3层):链路聚合、等价路由。
软件实现(4/7层):LVS、nginx/haproxy、
DNS负载均衡:公网智能分配目的ip GSLB、内网DNS解析公共服务。
3、LVS的3种模式:NAT、DR、TUNNEL。
NAT: 特点,流量来回路径一致,都要经过负载均衡器,通过DNAT转换,将目的ip修改为后端VM的ip,目的MAC修改为后端VM的MAC地址。
缺点:当回程流量很大时,负载均衡器本身容易成为瓶颈。改进方案,使用DR模式。
DR:特点,回程路径直接回到客户端。不需要NAT,后端服务器都需要配置环口ip为VIP,并且配置不响应VIP的arp请求。同时要求LVS分发器和后端VM在相同网段内,这个模式是主流。
缺点:要求后端VM和LVS分发头在相同网段。改进方案:LVS + haproxy.
隧道模式:特点,负载均衡器和后端虚拟机不是直接相连,通过隧道打通,要求双方都要支持IPinIP协议。
LVS + haproxy: 怎么解决跨网问题?
http://blog.csdn.net/big1980/article/details/21932103
4、nginx和haproxy对比。
一般情况下,在日访问量PV在3000万以下时,使用简单的DNS轮询配合监控,基本可以满足业务需求。
超过3000万时,使用nginx作为反向代理。如果可靠性要求不高,使用单台nginx。否则,可以配置多台nginx进行负载分担。
在3000万到1亿时,可以使用HAProxy+ keepalived --> nginx --> web 服务器集群。Haproxy负责TCP负载均衡,Nginx负责7层调度,nginx可以配置多台进行负载分担。
超过1亿时,采用LVS+DR + Keepalived --> nginx --> web服务器集群。LVS-DR负责TCP负载均衡,nginx负责7层调度。此时可以考虑使用商业的netscaler替换LVS-DR。
5、单点故障问题。
后端服务器可以有多个,消除了单点故障问题。可是负载均衡器本身是单节点,如何消除单点故障?
解决方案有两种,双活和主备。
双活:两个不同服务器上的LVS之间配置会话同步,互相同步,达到双活效果。上游通过交换机或者防火墙的ECMP进行等价分发。
主备:结合keepalive协议,实现主备备份效果。通过结合不同层次,LVS + keepalive, nginx + keepalive, haproxy + keepalive
6、对后端服务器的健康检查和转发权重设置。
LVS、nginx、haproxy都支持健康检查。
7、会话保持
通过源ip达到会话保持的效果,即将客户端分发给某个后端服务器后,后续该客户端的流量都指向相同的后端服务器,避免会话不存在而导致的生效问题。
也就是说,通过源ip实现会话保持。
会话保持的方法,还有http_cookie和app_cookie
7、证书卸载。
客户端通过ssh或者https访问ssh服务器端,或者https访问web服务器时,证书如何识别和卸载?在nginx的配置项中可以指定证书文件,从而进行卸载。
8、负载分担的后端服务器的选择。
三种算法:轮询算法、最少连接算法、源ip算法。
9、健康检查的模式
ping、https、tcp、http
10、获取访问者的源ip
负载均衡器将流量转发给后端服务器时,会修改报文的源ip(为何?),那么后端服务器处理时,如何分析出报文原始的源ip.
对于4层负载均衡,可以选择DR模式,使源ip地址直接在后端的服务器可见。
对于7层负载均衡,使用http头中的 http header: X-forward for来获得原始ip.
11. 网站的总入口的反向代理,一般使用nginx,因为nginx可以同时作为web服务器和负载均衡器。
12. 4层负载均衡时,当客户端和LVS之间建立TCP连接时,LVS会同步和某个后端服务器建立TCP连接。
7层负载均衡时,当客户端和LVS之间建立TCP连接时,LVS会先和客户端建立TCP连接,等到客户端有流量发送时,负载均衡器再和后端服务器建立TCP连接。
13. 转发性能角度:
4层负载均衡不关心报文内容,所以负载均衡性能高。
7层负载均衡需要查看Http头中的动作、URL、请求的源主机信息等信息,所以,需要深入查看报文内容,所以,转发性能低。但是,可以做深度的精细化控制。
14. GSLB有哪些实现方法:
有3种,基于DNS解析、基于重定向、基于路由协议。
基于DNS解析:DNS在多个ip间轮询(相同域名),达到负载均衡的效果。
基于重定向: 负载均衡器根据请求的内容(ip地址、端口号、或者URL等)给客户端返回一个实际处理业务的服务器地址。利用的是Http的302重定向功能。
基于路由协议: