高可用负载均衡

LVS+Nginx负载均衡

2017-05-23  本文已影响1151人  bobozaker

前景

由于公司资金有限,用不了硬件负载(NetScaler、F5、Radware和Array)所以最近看了一些软负载的方案,最后觉得keepalived+lvs_dr+nginx(其中nginx也可以用tengine来代替,有强大的阿里开源项目提供较好的中文文档)比较符合公司的场景。本来考虑过haproxy配合lvs或者lvs_fullnat模式但是由于不够灵活或者复杂只好暂时放弃,后面有机会再慢慢实践。

用 keepalived+lvs的原因

  • 抗负载能力强,因为lvs工作方式的逻辑是非常之简单,而且工作在网络4层仅做请求分发之用,没有流量
! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP
    interface $DEVICE
    virtual_router_id $ROUTEID
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        $VIP
    }
}
include /etc/keepalived/conf.d/*.conf
#可以用脚本来批量生成不同服务的配置文件比如web.conf mysql.conf 这样有助于管理 
  • keepalived还有一个好处就是可以像nginx那样修改配置文件后平滑启动
#/etc/init.d/keepalived reload

Nginx的负载

  • nginx工作在7层上,对网络依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网

架构图

原理上的废话我就少讲了,因为好多的博客或者简书的大神讲的非常多非常好。
我来总结一下为什么用这中架构吧,公司的需要负载的东西非常杂,不可能归类之后在选用不同的方案来负载,所以要选一个灵活扩展性高的架构。lvs来分流nginx来代理来组成的负载均衡。

整体架构.png

总结

这种灵活的架构带来好处就是适应复杂的生产环境,弊端就是牺牲了太多的负载性能。
后续会带来更详细的配置说明。

上一篇 下一篇

猜你喜欢

热点阅读