1.LVS是一种常见的负载均衡软件解决方案,本身无法保证服务的高可用(无论是LVS本身还是后面的realservers都无法保证出现故障可自动隔离/切换),Nginx也可以做软件的负载均衡,但它可配置其代理的realservers的故障隔离,实现服务的高可用
2.LVS需要与一些高可用解决方案配合来实现realservers和多LVS的高可用,常见组合为LVS+keepalived,LVS+Piranha 等

3.负载均衡与高可用关注重点不同,前者关注系统架构的可扩展性同时兼顾性价比,高可用则关注服务稳定性,即能做到生产环境中的几个9

4.LVS的三种模式,最为常见的是DR(性能最好),因DR需改写MAC之故(解决方法最轻量),所以VIP需与RS、LVS同网段

5.LVS对应的realservers唯一需要做的工作就是“静默”绑定VIP地址(如何做到静默根据kernel的版本有很多方法,可参考LVS的官方WIKI),这个重复性工作可通过脚本自动化实现

6.单keepalived.conf文件就可以搞定LVS+keepalived,当然前提是ipvsadm已安装并且ip_vs模块已载入kernel,此时VIP地址无需在LVS上绑定(与单LVS情况不同)

7.Piranha支持WEB可视化方式架设高可用的LVS负载均衡方案,不妨一试

8.配置过程出现故障的检查点:系统日志/var/log/messages是否有异常输出, realservers的ifconfig输出是否已绑定了VIP,ip_vs模块是否已载入了kernel,keepalived本身不支持错误语法检查引起的问题,各服务器的防火墙/selinux设定

9.LVS的监控脚本可参考lvs-rrd,一个shell+rrdtool做的监控方案

10.网上关于LVS-DR的配置很多,但务必区分几种情况:
10.1
单LVS + realservers
RS只需要“静默”绑定VIP地址,通常只需用脚本设定
LVS需要绑定VIP地址同时通过ipvsadm工具指定LVS的IP和RS的IP,通常只需用脚本设定
这种情况只实现了负载均衡,没有实现高可用,LVS绑定了VIP地址,当访问VIP地址所对应的服务时,通过你的ipvsadm设定可将对应服务转发至后面的RS的对应服务侦听端口。
10.2
单LVS + keepalived + realservers
RS只需要“静默”绑定VIP地址,通常只需用脚本设定
LVS只需要确保ip_vs模块载入kernel,之后配置keepalived.conf即可实现负载均衡和RS的高可用
这种情况实现了负载均衡,RS的高可用,keepalived按照你的配置负责转发和检测RS的存活,但LVS存在单点故障
10.3
多LVS + keepalived + realservers
RS只需要“静默”绑定VIP地址,通常只需用脚本设定
主LVS需要确保ip_vs模块载入kernel,之后配置keepalived.conf
从LVS需要相同配置,只是keepalived.conf中角色指定为BACKUP,优先级设置较低
这种情况实现了负载均衡,LVS和RS的高可用,keepalived按照你的配置负责转发和检测RS、LVS的存活。