首页 > 代码库 > LVS+Keepalived实现负载均衡

LVS+Keepalived实现负载均衡

       

             Lvs是由国防大学章文嵩博士发起的一个开源项目,用来实现服务器之间的负载均衡。全名为linux virtual server

             软件包围ipvsadm.tar.gz  随着企业的规模扩大,服务器的访问越来越大。这时候只有两个方案解决服务器的负载能力。

            1: 向上扩展服务器的硬件配置。购买昂贵的机器来承担日益繁重的性能要求。

            2: 增加服务器的数量,以集群的方式来提高服务器的性能。

            第二种方式最好的办法就是使用lvs来进行负载均衡。

           lvs负载均衡的三种模式: NAT(network add translation),  DR(Direct Route) 和TUN模式

             第一种模式NAT:这种模式使用地址转换来进行负载均衡,工作在网络层。所有的请求都经过lvs来进行地址转换,realserver的网关指向lvs服务器,所有的应答由lvs来回送。这样导致lvs的压力非常大,在realserver达到十台时会出现网络瓶颈。 所有的realserver和lvs在一个内网中。

             第二种模式DR:  这种模式工作在数据链路层,在进行ARP时,只有lvs服务器对其相应,然后网关将请求送达至lvs服务器,lvs服务器再通过调度算法发送至realserver,在响应请求时,不需要经过Lvs服务器直接响应客户端,这样大大提高了速率和减轻了Lvs服务器的压力。


              keepalived是工作在lvs之上的,所谓的工作在之上,keepalived调用了ipvsadm进程,然后通过keepalived的配置文件对lvs进行配置,并且可以使lvs更好更安全的工作,并能减少lvs出错的几率。通过ipvsadm命令也可直接配置负载均衡。

            keepalived.conf配置文件详解:

                  global_defs{

                 router_id   50   用来标示主从的区域

           }               进行全局配置。           

         vrrp_instance   vrrp_name {

                     state  MASTER   表示主服务器

                     interface  eth0  在eth0监控

                    virtual_router_id     50  区域标示号

                    priority     50       主从优先级 ,主大于从

                    advert_int   2    主从互相探测是否工作时间的间隔

                     authentication{}  主从互相验证配置

                   virtual_server{

                               10.0.0.113  配置lvs的VIP(虚拟IP)

                                }

            }用来对lvs主从服务器进行配置的区域,使用vrrp组播方式   

      virtual_server 10.0.0.114 3 80 {

                          lb_algo rr  使用的调度算法是rr

                          lb_kind DR  使用的负载均衡模式为DR模式

                         persistence_timeout  3  测试realserver存活超时时间间隔为3秒

                         protocol  TCP  lvs与realserver之间的通信使用的协议为TCP协议

                   real_server  10.0.0.2  80{

                                      weight 1   真实服务器调度所占权重

                                     TCP_CHECK{

                                                    connect_timeout  3  连接超时时间

                                                    connect_port 80

                                                    nb_get_retry 3

                                        }

                                 }  配置realserver

                     } 配置对应的虚拟IP服务器

    

                查看Linux系统的服务和端口对应的配置文件为  /etc/servers文件

                设定系统的umask 使用命令umask 或者在配置文件 /etc/profile中设定。