首页 > 代码库 > LVS+Keepalived负载均衡配置

LVS+Keepalived负载均衡配置

简介

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

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

 

架构图

技术分享 

 

配置

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以及portvirtual_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以及portvirtual_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/functionscase "$1" instart)       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 1esacexit 0

 


参考资料:

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

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

LVS+Keepalived负载均衡配置