LVS+Keepalived负载均衡配置

时间:2021-01-26 03:07:44

简介

lvs一般是和keepalived一起组合使用的,虽然也可以单独使用lvs,但配置比较繁琐,且可用性也没有前者高。

lvs和keepalived组合使用后,配置lvs的VIP和负载均衡就都在keepalived中进行配置,只是在keepalived中调用lvs

 

架构图

LVS+Keepalived负载均衡配置 

 

配置

LVS+Keepalived MASTER

配置:【keepalived.conf】

global_defs {  
   notification_email {  
         edisonchou@hotmail.com  
   }  
   notification_email_from sns-lvs@gmail.com  
   smtp_server 192.168.80.1  
   smtp_connection_timeout 30
   router_id LVS_DEVEL  
}  
vrrp_instance VI_1 {  
    state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备          
    interface eth1  #指定Keepalived的角色,MASTER为主,BACKUP为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
    advert_int 1  #检查间隔,默认为1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        192.168.80.200  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
    }  
}  
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.80.200 80 {  
    delay_loop 6 # 设置健康检查时间,单位是秒                    
    lb_algo wrr # 设置负载调度的算法为wlc                   
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
    nat_mask 255.255.255.0     #NAT模式会用到           
    persistence_timeout 0   #会话保持时间,单位是秒(可以适当延长时间以保持session)         
    protocol TCP      #转发协议类型,有tcp和udp两种            
  sorry_server 127.0.0.1 80      #如果所有realserver都出现问题,vip指向本机80端口

    real_server 192.168.80.102 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高              
        TCP_CHECK {  #通过tcpcheck判断RealServer的健康状态,检测健康状态的方法还有HTTP_GET:通过检测url状态进行健康判断
          connect_timeout 10     #超时时间,单位是秒    
          nb_get_retry 3    #重连次数
          delay_before_retry 3   #重连间隔时间
          connect_port 80  #检测端口
        }  
    }  
    real_server 192.168.80.103 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高  
        TCP_CHECK {  
          connect_timeout 10  
          nb_get_retry 3  
          delay_before_retry 3  
          connect_port 80  
        }  
     }  
}

 

 


LVS+Keepalived BACKUP

配置:【keepalived.conf】

global_defs {  
   notification_email {  
         edisonchou@hotmail.com  
   }  
   notification_email_from sns-lvs@gmail.com  
   smtp_server 192.168.80.1  
   smtp_connection_timeout 30
   router_id LVS_DEVEL  
}  
vrrp_instance VI_1 {  
    state BACKUP #指定Keepalived的角色,MASTER为主,BACKUP为备          
    interface eth1  #指定Keepalived的角色,MASTER为主,BACKUP为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 99  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
    advert_int 1  #检查间隔,默认为1s
    authentication {  
        auth_type PASS  
        auth_pass 1111  
    }  
    virtual_ipaddress {  
        192.168.80.200  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
    }  
}  
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.80.200 80 {  
    delay_loop 6 # 设置健康检查时间,单位是秒                    
    lb_algo wrr # 设置负载调度的算法为wlc                   
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
    nat_mask 255.255.255.0     #NAT模式会用到           
    persistence_timeout 0   #会话保持时间,单位是秒(可以适当延长时间以保持session)         
    protocol TCP      #转发协议类型,有tcp和udp两种            
  sorry_server 127.0.0.1 80      #如果所有realserver都出现问题,vip指向本机80端口

    real_server 192.168.80.102 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高              
        TCP_CHECK {  #通过tcpcheck判断RealServer的健康状态,检测健康状态的方法还有HTTP_GET:通过检测url状态进行健康判断
          connect_timeout 10     #超时时间,单位是秒    
          nb_get_retry 3    #重连次数
          delay_before_retry 3   #重连间隔时间
          connect_port 80  #检测端口
        }  
    }  
    real_server 192.168.80.103 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高  
        TCP_CHECK {  
          connect_timeout 10  
          nb_get_retry 3  
          delay_before_retry 3  
          connect_port 80  
        }  
     }  
}

 

 

Real Server

配置脚本:realserver.sh

SNS_VIP=192.168.80.200
/etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0

 


参考资料:

http://www.cnblogs.com/edisonchou/p/4281978.html

 http://www.tuicool.com/articles/Vz2qYj