最近一直在看一些高可用性的负载均衡方案,当然那些f5之类的硬件设备是玩不起也接触不到了。只能看这些for free的开源方案。
目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障。那么他们为什么这么搭配,而又有什么区别呢?
经过一番google,大体明白了两者的区别:
lvs的是通过vrrp协议进行数据包转发的,提供的是4层的负载均衡。特点是效率高,只要你机器网卡抗的住就不是问题。
haproxy可以提供4层或7层的数据转发服务,能做到7层的好处是可以根据服务所处的状态等进行负载。
以上两者只是实现了负载均衡,但是他们本身是明显的单点故障,因此需要使用双机软件做热备,来保证高可用性。keepalived可以通过检测vrrp数据包来切换,因此更适合与lvs搭配。而heartbeat更适于和haproxy搭配。这样就出现了这两个应用比较多也比较经典的负载均衡的高可用性方案了。
原来一直想学习下这两个方案,学会这4个软件的配置,可又觉得永远用不到吧?或者用到的时候说不定又出现了新的技术了。就是自己能用到了,反向代理一类的软件足够用了,squid偶是实在没有心情学习了。对nginx的感觉还不错,性能好是大家公认的,即可以做反向代理实现负载均衡,又通过geo模块实现流量分离做全局(不同地域)的负载均衡,加上配置简单,绝对是个人的首选,可以考虑搭配heartbeat实现高可用。
接下来的学习目标就简化了,nginx的geo和heartbeat的配置。